From 9c3a8ff2994a34ff28484650aa400a0b167855f3 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 25 Feb 2014 18:58:55 +0800 Subject: [PATCH] add run user --- conf/app.ini | 2 +- gogs.go | 18 +++++++++++++++++- models/publickey.go | 19 +++++++++++++++---- models/user.go | 2 +- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/conf/app.ini b/conf/app.ini index 517660addd..7a8970cb4a 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -1,5 +1,5 @@ APP_NAME = Gogs - Go Git Service -RUN_USER = git +RUN_USER = lunny [repository] ROOT = /Users/lunny/git/gogs-repositories diff --git a/gogs.go b/gogs.go index bf2586d886..c9c920ddcc 100644 --- a/gogs.go +++ b/gogs.go @@ -7,9 +7,11 @@ package main import ( "os" + "os/user" "runtime" "github.com/codegangsta/cli" + "github.com/gogits/gogs/utils" ) // +build go1.1 @@ -17,13 +19,27 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.0.0.0220" +const APP_VER = "0.0.0.0225" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } +func checkRunUser() bool { + user, err := user.Current() + if err != nil { + // TODO: log + return false + } + return user.Username == utils.Cfg.MustValue("", "RUN_USER") +} + func main() { + /*if !checkRunUser() { + println("The command should be run as", utils.Cfg.MustValue("", "RUN_USER")) + return + }*/ + app := cli.NewApp() app.Name = "Gogs" app.Usage = "Go Git Service" diff --git a/models/publickey.go b/models/publickey.go index 2fd1895d6c..86dd50e849 100644 --- a/models/publickey.go +++ b/models/publickey.go @@ -4,15 +4,16 @@ import ( "fmt" "os" "os/exec" + "os/user" "path/filepath" "time" ) var ( - publicKeyRootPath string - sshPath string = "/Users/lunny/.ssh" - appPath string - tmplPublicKey = "### autogenerated by gitgos, DO NOT EDIT\n" + + //publicKeyRootPath string + sshPath string + appPath string + tmplPublicKey = "### autogenerated by gitgos, DO NOT EDIT\n" + "command=\"%s serv key-%d\",no-port-forwarding," + "no-X11-forwarding,no-agent-forwarding,no-pty %s\n" ) @@ -25,6 +26,14 @@ func exePath() (string, error) { return filepath.Abs(file) } +func homeDir() string { + user, err := user.Current() + if err != nil { + return "/" + } + return user.HomeDir +} + func init() { var err error appPath, err = exePath() @@ -32,6 +41,8 @@ func init() { println(err.Error()) os.Exit(2) } + + sshPath = filepath.Join(homeDir(), ".ssh") } type PublicKey struct { diff --git a/models/user.go b/models/user.go index c5208f0313..086b02c82f 100644 --- a/models/user.go +++ b/models/user.go @@ -66,7 +66,7 @@ const ( OP_PULL_REQUEST ) -// A Action represents +// An Action represents type Action struct { Id int64 UserId int64