Skip to content

Commit e89bb7e

Browse files
pgaskinlafriks
authored andcommitted
Allow custom SSH user in UI for built-in SSH server (#2617) (#2678)
* 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 issues
1 parent 514006a commit e89bb7e

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

conf/app.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/
113113
DISABLE_SSH = false
114114
; Whether use builtin SSH server or not.
115115
START_SSH_SERVER = false
116+
; Username to use for builtin SSH server. If blank, then it is the value of RUN_USER.
117+
BUILTIN_SSH_SERVER_USER =
116118
; Domain name to be exposed in clone URL
117119
SSH_DOMAIN = %(DOMAIN)s
118120
; Network interface builtin SSH server listens on

models/repo.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -806,14 +806,19 @@ func (repo *Repository) cloneLink(isUncyclo bool) *CloneLink {
806806
repoName += ".wiki"
807807
}
808808

809+
sshUser := setting.RunUser
810+
if setting.SSH.StartBuiltinServer {
811+
sshUser = setting.SSH.BuiltinServerUser
812+
}
813+
809814
repo.Owner = repo.MustOwner()
810815
cl := new(CloneLink)
811816
if setting.SSH.Port != 22 {
812-
cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", setting.RunUser, setting.SSH.Domain, setting.SSH.Port, repo.Owner.Name, repoName)
817+
cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", sshUser, setting.SSH.Domain, setting.SSH.Port, repo.Owner.Name, repoName)
813818
} else if setting.Repository.UseCompatSSHURI {
814-
cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", setting.RunUser, setting.SSH.Domain, repo.Owner.Name, repoName)
819+
cl.SSH = fmt.Sprintf("ssh://%s@%s/%s/%s.git", sshUser, setting.SSH.Domain, repo.Owner.Name, repoName)
815820
} else {
816-
cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.SSH.Domain, repo.Owner.Name, repoName)
821+
cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", sshUser, setting.SSH.Domain, repo.Owner.Name, repoName)
817822
}
818823
cl.HTTPS = ComposeHTTPSCloneURL(repo.Owner.Name, repoName)
819824
return cl

modules/setting/setting.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ var (
9090
SSH = struct {
9191
Disabled bool `ini:"DISABLE_SSH"`
9292
StartBuiltinServer bool `ini:"START_SSH_SERVER"`
93+
BuiltinServerUser string `ini:"BUILTIN_SSH_SERVER_USER"`
9394
Domain string `ini:"SSH_DOMAIN"`
9495
Port int `ini:"SSH_PORT"`
9596
ListenHost string `ini:"SSH_LISTEN_HOST"`
@@ -915,6 +916,8 @@ func NewContext() {
915916
}
916917
}
917918

919+
SSH.BuiltinServerUser = Cfg.Section("server").Key("BUILTIN_SSH_SERVER_USER").MustString(RunUser)
920+
918921
// Determine and create root git repository path.
919922
sec = Cfg.Section("repository")
920923
Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool()

0 commit comments

Comments
 (0)