|
|
|
@ -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.
|
|
|
|
|