Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

FuXiaoHei 11 tahun lalu
induk
melakukan
9b7e2823ea
5 mengubah file dengan 46 tambahan dan 45 penghapusan
  1. 2 2
      conf/app.ini
  2. 0 15
      gogs.go
  3. 14 10
      modules/base/conf.go
  4. 28 16
      serve.go
  5. 2 2
      templates/user/delete.tmpl

+ 2 - 2
conf/app.ini

@@ -1,8 +1,8 @@
 ; App name that shows on every page title
 APP_NAME = Gogs: Go Git Service
 APP_LOGO = img/favicon.png
-; !!MUST CHANGE TO YOUR USER NAME!!
-RUN_USER = skyblue
+; Change it if you run locally
+RUN_USER = git
 ; Either "dev", "prod" or "test", default is "dev"
 RUN_MODE = dev
 

+ 0 - 15
gogs.go

@@ -7,7 +7,6 @@ package main
 
 import (
 	"os"
-	// "os/user"
 	"runtime"
 
 	"github.com/codegangsta/cli"
@@ -27,21 +26,7 @@ func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())
 }
 
-// func checkRunUser() bool {
-// 	u, err := user.Current()
-// 	if err != nil {
-// 		// TODO: log
-// 		return false
-// 	}
-// 	return u.Username == base.Cfg.MustValue("", "RUN_USER")
-// }
-
 func main() {
-	/*if !checkRunUser() {
-		println("The command should be run as", base.Cfg.MustValue("", "RUN_USER"))
-		return
-	}*/
-
 	app := cli.NewApp()
 	app.Name = "Gogs"
 	app.Usage = "Go Git Service"

+ 14 - 10
modules/base/conf.go

@@ -259,16 +259,11 @@ func NewConfigContext() {
 	Cfg.BlockMode = false
 
 	cfgPath = filepath.Join(workDir, "custom/conf/app.ini")
-	if !com.IsFile(cfgPath) {
-		fmt.Println("Custom configuration not found(custom/conf/app.ini)\n" +
-			"Please create it and make your own configuration!")
-		os.Exit(2)
-
-	}
-
-	if err = Cfg.AppendFiles(cfgPath); err != nil {
-		fmt.Printf("Cannot load config file '%s'\n", cfgPath)
-		os.Exit(2)
+	if com.IsFile(cfgPath) {
+		if err = Cfg.AppendFiles(cfgPath); err != nil {
+			fmt.Printf("Cannot load config file '%s'\n", cfgPath)
+			os.Exit(2)
+		}
 	}
 
 	AppName = Cfg.MustValue("", "APP_NAME", "Gogs: Go Git Service")
@@ -276,7 +271,16 @@ func NewConfigContext() {
 	AppUrl = Cfg.MustValue("server", "ROOT_URL")
 	Domain = Cfg.MustValue("server", "DOMAIN")
 	SecretKey = Cfg.MustValue("security", "SECRET_KEY")
+
 	RunUser = Cfg.MustValue("", "RUN_USER")
+	curUser := os.Getenv("USERNAME")
+	if len(curUser) == 0 {
+		curUser = os.Getenv("USER")
+	}
+	if RunUser != curUser {
+		fmt.Printf("Expect user(%s) but current user is: %s\n", RunUser, curUser)
+		os.Exit(2)
+	}
 
 	EnableHttpsClone = Cfg.MustBool("security", "ENABLE_HTTPS_CLONE", false)
 

+ 28 - 16
serve.go

@@ -49,7 +49,7 @@ func init() {
 	level := "0"
 	os.MkdirAll("log", os.ModePerm)
 	log.NewLogger(10000, "file", fmt.Sprintf(`{"level":%s,"filename":"%s"}`, level, "log/serv.log"))
-	log.Info("start logging...")
+	log.Trace("start logging...")
 }
 
 func parseCmd(cmd string) (string, string) {
@@ -73,6 +73,8 @@ func In(b string, sl map[string]int) bool {
 }
 
 func runServ(k *cli.Context) {
+	log.Trace("new serv request")
+
 	base.NewConfigContext()
 	models.LoadModelsConfig()
 	models.NewEngine()
@@ -80,17 +82,20 @@ func runServ(k *cli.Context) {
 	keys := strings.Split(os.Args[2], "-")
 	if len(keys) != 2 {
 		fmt.Println("auth file format error")
+		log.Error("auth file format error")
 		return
 	}
 
 	keyId, err := strconv.ParseInt(keys[1], 10, 64)
 	if err != nil {
 		fmt.Println("auth file format error")
+		log.Error("auth file format error")
 		return
 	}
 	user, err := models.GetUserByKeyId(keyId)
 	if err != nil {
 		fmt.Println("You have no right to access")
+		log.Error("You have no right to access")
 		return
 	}
 
@@ -105,6 +110,7 @@ func runServ(k *cli.Context) {
 	rr := strings.SplitN(rRepo, "/", 2)
 	if len(rr) != 2 {
 		println("Unavilable repository", args)
+		log.Error("Unavilable repository %v", args)
 		return
 	}
 	repoName := rr[1]
@@ -122,11 +128,12 @@ func runServ(k *cli.Context) {
 			isExist = false
 			if isRead {
 				println("Repository", user.Name+"/"+repoName, "is not exist")
+				log.Error("Repository " + user.Name + "/" + repoName + " is not exist")
 				return
 			}
 		} else {
 			println("Get repository error:", err)
-			log.Error(err.Error())
+			log.Error("Get repository error: " + err.Error())
 			return
 		}
 	}
@@ -142,6 +149,7 @@ func runServ(k *cli.Context) {
 		}
 		if !has {
 			println("You have no right to write this repository")
+			log.Error("You have no right to access this repository")
 			return
 		}
 	case isRead:
@@ -161,10 +169,12 @@ func runServ(k *cli.Context) {
 		}
 		if !has {
 			println("You have no right to access this repository")
+			log.Error("You have no right to access this repository")
 			return
 		}
 	default:
 		println("Unknown command")
+		log.Error("Unknown command")
 		return
 	}
 
@@ -175,23 +185,23 @@ func runServ(k *cli.Context) {
 			_, err = models.CreateRepository(user, repoName, "", "", "", false, true)
 			if err != nil {
 				println("Create repository failed")
-				log.Error(err.Error())
+				log.Error("Create repository failed: " + err.Error())
 				return
 			}
 		}
 	}
 
-		rep, err = git.OpenRepository(repoPath)
-		if err != nil {
-			println("OpenRepository failed:", err.Error())
-			log.Error(err.Error())
-			return
-		}
+	rep, err = git.OpenRepository(repoPath)
+	if err != nil {
+		println("OpenRepository failed:", err.Error())
+		log.Error("OpenRepository failed: " + err.Error())
+		return
+	}
 
 	refs, err := rep.AllReferencesMap()
 	if err != nil {
 		println("Get All References failed:", err.Error())
-		log.Error(err.Error())
+		log.Error("Get All References failed: " + err.Error())
 		return
 	}
 
@@ -208,7 +218,7 @@ func runServ(k *cli.Context) {
 
 	if err = gitcmd.Run(); err != nil {
 		println("execute command error:", err.Error())
-		log.Error(err.Error())
+		log.Error("execute command error: " + err.Error())
 		return
 	}
 
@@ -236,6 +246,7 @@ func runServ(k *cli.Context) {
 	}
 	if refname == "" {
 		println("No find any reference name:", b.String())
+		log.Error("No find any reference name: " + b.String())
 		return
 	}
 
@@ -248,17 +259,18 @@ func runServ(k *cli.Context) {
 		refs, err = rep.AllReferencesMap()
 		if err != nil {
 			println("Get All References failed:", err.Error())
-			log.Error(err.Error())
+			log.Error("Get All References failed: " + err.Error())
 			return
 		}
 		if ref, ok = refs[refname]; !ok {
+			log.Error("unknow reference name -", refname, "-", b.String())
 			log.Error("unknow reference name -", refname, "-", b.String())
 			return
 		}
 		l, err = ref.AllCommits()
 		if err != nil {
 			println("Get All Commits failed:", err.Error())
-			log.Error(err.Error())
+			log.Error("Get All Commits failed: " + err.Error())
 			return
 		}
 	} else {
@@ -268,14 +280,14 @@ func runServ(k *cli.Context) {
 		last, err = ref.LastCommit()
 		if err != nil {
 			println("Get last commit failed:", err.Error())
-			log.Error(err.Error())
+			log.Error("Get last commit failed: " + err.Error())
 			return
 		}
 
 		ref2, err := rep.LookupReference(ref.Name)
 		if err != nil {
 			println("look up reference failed:", err.Error())
-			log.Error(err.Error())
+			log.Error("look up reference failed: " + err.Error())
 			return
 		}
 
@@ -283,7 +295,7 @@ func runServ(k *cli.Context) {
 		before, err := ref2.LastCommit()
 		if err != nil {
 			println("Get last commit failed:", err.Error())
-			log.Error(err.Error())
+			log.Error("Get last commit failed: " + err.Error())
 			return
 		}
 		//log.Info("----", before.Id(), "-----", last.Id())

+ 2 - 2
templates/user/delete.tmpl

@@ -6,9 +6,9 @@
         <ul class="list-group">
             <li class="list-group-item"><a href="/user/setting">Account Profile</a></li>
             <li class="list-group-item"><a href="/user/setting/password">Password</a></li>
-            <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li>
+            <!-- <li class="list-group-item"><a href="/user/setting/notification">Notifications</a></li> -->
             <li class="list-group-item"><a href="/user/setting/ssh/">SSH Keys</a></li>
-            <li class="list-group-item"><a href="/user/setting/security">Security</a></li>
+            <!-- <li class="list-group-item"><a href="/user/setting/security">Security</a></li> -->
             <li class="list-group-item list-group-item-success"><a href="/user/delete">Delete Account</a></li>
         </ul>
     </div>