@@ -26,6 +26,8 @@ type Access struct { | |||
// AddAccess adds new access record. | |||
func AddAccess(access *Access) error { | |||
access.UserName = strings.ToLower(access.UserName) | |||
access.RepoName = strings.ToLower(access.RepoName) | |||
_, err := orm.Insert(access) | |||
return err | |||
} |
@@ -12,6 +12,7 @@ import ( | |||
_ "github.com/go-sql-driver/mysql" | |||
_ "github.com/lib/pq" | |||
"github.com/lunny/xorm" | |||
// _ "github.com/mattn/go-sqlite3" | |||
"github.com/gogits/gogs/modules/base" | |||
) | |||
@@ -23,10 +24,15 @@ var ( | |||
DbCfg struct { | |||
Type, Host, Name, User, Pwd, Path, SslMode string | |||
} | |||
UseSQLite3 bool | |||
) | |||
func LoadModelsConfig() { | |||
DbCfg.Type = base.Cfg.MustValue("database", "DB_TYPE") | |||
if DbCfg.Type == "sqlite3" { | |||
UseSQLite3 = true | |||
} | |||
DbCfg.Host = base.Cfg.MustValue("database", "HOST") | |||
DbCfg.Name = base.Cfg.MustValue("database", "NAME") | |||
DbCfg.User = base.Cfg.MustValue("database", "USER") |
@@ -157,7 +157,7 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv | |||
} | |||
access := Access{ | |||
UserName: user.Name, | |||
UserName: user.LowerName, | |||
RepoName: strings.ToLower(path.Join(user.Name, repo.Name)), | |||
Mode: AU_WRITABLE, | |||
} |
@@ -39,6 +39,7 @@ var ( | |||
ErrUserNotExist = errors.New("User does not exist") | |||
ErrEmailAlreadyUsed = errors.New("E-mail already used") | |||
ErrUserNameIllegal = errors.New("User name contains illegal characters") | |||
ErrKeyNotExist = errors.New("Public key does not exist") | |||
) | |||
// User represents the object of individual and member of organization. |
@@ -212,9 +212,9 @@ func newMailService() { | |||
if Cfg.MustBool("mailer", "ENABLED") { | |||
MailService = &Mailer{ | |||
Name: Cfg.MustValue("mailer", "NAME", AppName), | |||
Host: Cfg.MustValue("mailer", "HOST", "127.0.0.1:25"), | |||
User: Cfg.MustValue("mailer", "USER", "example@example.com"), | |||
Passwd: Cfg.MustValue("mailer", "PASSWD", "******"), | |||
Host: Cfg.MustValue("mailer", "HOST"), | |||
User: Cfg.MustValue("mailer", "USER"), | |||
Passwd: Cfg.MustValue("mailer", "PASSWD"), | |||
} | |||
log.Info("Mail Service Enabled") | |||
} |
@@ -185,6 +185,7 @@ func Install(ctx *middleware.Context, form auth.InstallForm) { | |||
ctx.RenderWithErr("Admin account setting is invalid: "+err.Error(), "install", &form) | |||
return | |||
} | |||
log.Info("Admin account already exist") | |||
} | |||
log.Info("First-time run install finished!") |
@@ -74,29 +74,33 @@ func In(b string, sl map[string]int) bool { | |||
func runServ(k *cli.Context) { | |||
execDir, _ := base.ExecDir() | |||
newLogger(execDir) | |||
log.Trace("new serv request " + log.Mode + ":" + log.Config) | |||
base.NewConfigContext() | |||
models.LoadModelsConfig() | |||
if models.UseSQLite3 { | |||
os.Chdir(execDir) | |||
} | |||
models.SetEngine() | |||
keys := strings.Split(os.Args[2], "-") | |||
if len(keys) != 2 { | |||
fmt.Println("auth file format error") | |||
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") | |||
println("auth file format error") | |||
log.Error("auth file format error", err) | |||
return | |||
} | |||
user, err := models.GetUserByKeyId(keyId) | |||
if err != nil { | |||
fmt.Println("You have no right to access") | |||
log.Error("SSH visit error", err) | |||
println("You have no right to access") | |||
log.Error("SSH visit error: %v", err) | |||
return | |||
} | |||
@@ -133,13 +137,12 @@ func runServ(k *cli.Context) { | |||
// access check | |||
switch { | |||
case isWrite: | |||
has, err := models.HasAccess(user.Name, strings.ToLower(path.Join(repoUserName, repoName)), models.AU_WRITABLE) | |||
has, err := models.HasAccess(user.LowerName, path.Join(repoUserName, repoName), models.AU_WRITABLE) | |||
if err != nil { | |||
println("Inernel error:", err) | |||
log.Error(err.Error()) | |||
return | |||
} | |||
if !has { | |||
} else if !has { | |||
println("You have no right to write this repository") | |||
log.Error("User %s has no right to write repository %s", user.Name, repoPath) | |||
return |
@@ -32,6 +32,12 @@ gogs serv provide access auth for repositories`, | |||
func runUpdate(c *cli.Context) { | |||
base.NewConfigContext() | |||
models.LoadModelsConfig() | |||
if models.UseSQLite3 { | |||
execDir, _ := base.ExecDir() | |||
os.Chdir(execDir) | |||
} | |||
models.SetEngine() | |||
w, _ := os.Create("update.log") |