|
|
|
@ -285,6 +285,19 @@ func forcePathSeparator(path string) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// IsRunUserMatchCurrentUser returns false if configured run user does not match
|
|
|
|
|
// actual user that runs the app. The first return value is the actual user name.
|
|
|
|
|
// This check is ignored under Windows since SSH remote login is not the main
|
|
|
|
|
// method to login on Windows.
|
|
|
|
|
func IsRunUserMatchCurrentUser(runUser string) (string, bool) {
|
|
|
|
|
if IsWindows {
|
|
|
|
|
return "", true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
currentUser := user.CurrentUsername()
|
|
|
|
|
return currentUser, runUser == currentUser
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NewContext initializes configuration context.
|
|
|
|
|
// NOTE: do not print any log except error.
|
|
|
|
|
func NewContext() {
|
|
|
|
@ -431,10 +444,12 @@ func NewContext() {
|
|
|
|
|
}[Cfg.Section("time").Key("FORMAT").MustString("RFC1123")]
|
|
|
|
|
|
|
|
|
|
RunUser = Cfg.Section("").Key("RUN_USER").String()
|
|
|
|
|
curUser := user.CurrentUsername()
|
|
|
|
|
// Does not check run user when the install lock is off.
|
|
|
|
|
if InstallLock && RunUser != curUser {
|
|
|
|
|
log.Fatal(4, "Expect user(%s) but current user is: %s", RunUser, curUser)
|
|
|
|
|
if InstallLock {
|
|
|
|
|
currentUser, match := IsRunUserMatchCurrentUser(RunUser)
|
|
|
|
|
if !match {
|
|
|
|
|
log.Fatal(4, "Expect user '%s' but current user is: %s", RunUser, currentUser)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Determine and create root git repository path.
|
|
|
|
|