* Allow custom SSH user in UI for built-in SSH server (#2617) * Some fixes * Did make fmt * Updated according to review - Renamed config to BUILTIN_SSH_SERVER_USER - Removed unnecessary default string value for config item * Updated according to review * Fixed some minor issuestags/v1.3.0-rc1
| @@ -113,6 +113,8 @@ LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ | |||||
| DISABLE_SSH = false | DISABLE_SSH = false | ||||
| ; Whether use builtin SSH server or not. | ; Whether use builtin SSH server or not. | ||||
| START_SSH_SERVER = false | START_SSH_SERVER = false | ||||
| ; Username to use for builtin SSH server. If blank, then it is the value of RUN_USER. | |||||
| BUILTIN_SSH_SERVER_USER = | |||||
| ; Domain name to be exposed in clone URL | ; Domain name to be exposed in clone URL | ||||
| SSH_DOMAIN = %(DOMAIN)s | SSH_DOMAIN = %(DOMAIN)s | ||||
| ; Network interface builtin SSH server listens on | ; Network interface builtin SSH server listens on | ||||
| @@ -806,14 +806,19 @@ func (repo *Repository) cloneLink(isWiki bool) *CloneLink { | |||||
| repoName += ".wiki" | repoName += ".wiki" | ||||
| } | } | ||||
| sshUser := setting.RunUser | |||||
| if setting.SSH.StartBuiltinServer { | |||||
| sshUser = setting.SSH.BuiltinServerUser | |||||
| } | |||||
| repo.Owner = repo.MustOwner() | repo.Owner = repo.MustOwner() | ||||
| cl := new(CloneLink) | cl := new(CloneLink) | ||||
| if setting.SSH.Port != 22 { | if setting.SSH.Port != 22 { | ||||
| cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", setting.RunUser, setting.SSH.Domain, setting.SSH.Port, repo.Owner.Name, repoName) | |||||
| cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", sshUser, setting.SSH.Domain, setting.SSH.Port, repo.Owner.Name, repoName) | |||||
| } else if setting.Repository.UseCompatSSHURI { | } else if setting.Repository.UseCompatSSHURI { | ||||
| cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", setting.RunUser, setting.SSH.Domain, repo.Owner.Name, repoName) | |||||
| cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, setting.SSH.Domain, repo.Owner.Name, repoName) | |||||
| } else { | } else { | ||||
| cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.SSH.Domain, repo.Owner.Name, repoName) | |||||
| cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", sshUser, setting.SSH.Domain, repo.Owner.Name, repoName) | |||||
| } | } | ||||
| cl.HTTPS = ComposeHTTPSCloneURL(repo.Owner.Name, repoName) | cl.HTTPS = ComposeHTTPSCloneURL(repo.Owner.Name, repoName) | ||||
| return cl | return cl | ||||
| @@ -90,6 +90,7 @@ var ( | |||||
| SSH = struct { | SSH = struct { | ||||
| Disabled bool `ini:"DISABLE_SSH"` | Disabled bool `ini:"DISABLE_SSH"` | ||||
| StartBuiltinServer bool `ini:"START_SSH_SERVER"` | StartBuiltinServer bool `ini:"START_SSH_SERVER"` | ||||
| BuiltinServerUser string `ini:"BUILTIN_SSH_SERVER_USER"` | |||||
| Domain string `ini:"SSH_DOMAIN"` | Domain string `ini:"SSH_DOMAIN"` | ||||
| Port int `ini:"SSH_PORT"` | Port int `ini:"SSH_PORT"` | ||||
| ListenHost string `ini:"SSH_LISTEN_HOST"` | ListenHost string `ini:"SSH_LISTEN_HOST"` | ||||
| @@ -915,6 +916,8 @@ func NewContext() { | |||||
| } | } | ||||
| } | } | ||||
| SSH.BuiltinServerUser = Cfg.Section("server").Key("BUILTIN_SSH_SERVER_USER").MustString(RunUser) | |||||
| // Determine and create root git repository path. | // Determine and create root git repository path. | ||||
| sec = Cfg.Section("repository") | sec = Cfg.Section("repository") | ||||
| Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool() | Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool() | ||||