diff options
-rw-r--r-- | models/models.go | 4 | ||||
-rw-r--r-- | modules/base/conf.go | 4 | ||||
-rw-r--r-- | routers/install.go | 26 | ||||
-rw-r--r-- | serve.go | 2 | ||||
-rw-r--r-- | templates/install.tmpl | 55 | ||||
-rw-r--r-- | update.go | 2 |
6 files changed, 56 insertions, 37 deletions
diff --git a/models/models.go b/models/models.go index 813725be46..04a361c595 100644 --- a/models/models.go +++ b/models/models.go @@ -34,7 +34,7 @@ func LoadModelsConfig() { DbCfg.Path = base.Cfg.MustValue("database", "PATH", "data/gogs.db") } -func setEngine() { +func SetEngine() { var err error switch DbCfg.Type { case "mysql": @@ -70,7 +70,7 @@ func setEngine() { } func NewEngine() { - setEngine() + SetEngine() if err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Watch), new(Action), new(Access), new(Issue), new(Comment)); err != nil { fmt.Printf("sync database struct error: %v\n", err) diff --git a/modules/base/conf.go b/modules/base/conf.go index 2e56883937..f905c38143 100644 --- a/modules/base/conf.go +++ b/modules/base/conf.go @@ -38,6 +38,8 @@ var ( RunUser string RepoRootPath string + InstallLock bool + EnableHttpsClone bool LogInRememberDays int @@ -282,6 +284,8 @@ func NewConfigContext() { os.Exit(2) } + InstallLock = Cfg.MustBool("security", "INSTALL_LOCK", false) + EnableHttpsClone = Cfg.MustBool("security", "ENABLE_HTTPS_CLONE", false) LogInRememberDays = Cfg.MustInt("security", "LOGIN_REMEMBER_DAYS") diff --git a/routers/install.go b/routers/install.go index d7d5159efc..b44b89034e 100644 --- a/routers/install.go +++ b/routers/install.go @@ -4,10 +4,28 @@ package routers -import "github.com/gogits/gogs/modules/middleware" +import ( + "errors" + + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/base" + "github.com/gogits/gogs/modules/middleware" +) + +func Install(ctx *middleware.Context) { + if base.InstallLock { + ctx.Handle(404, "install.Install", errors.New("Installation is prohibited")) + return + } -func Install(ctx *middleware.Context){ - ctx.Data["PageIsInstall"] = true ctx.Data["Title"] = "Install" - ctx.HTML(200,"install") + ctx.Data["DbCfg"] = models.DbCfg + ctx.Data["RepoRootPath"] = base.RepoRootPath + ctx.Data["RunUser"] = base.RunUser + ctx.Data["PageIsInstall"] = true + + if ctx.Req.Method == "GET" { + ctx.HTML(200, "install") + return + } } @@ -78,7 +78,7 @@ func runServ(k *cli.Context) { base.NewConfigContext() models.LoadModelsConfig() - models.NewEngine() + models.SetEngine() keys := strings.Split(os.Args[2], "-") if len(keys) != 2 { diff --git a/templates/install.tmpl b/templates/install.tmpl index 4fbef3cba0..99ac8421f3 100644 --- a/templates/install.tmpl +++ b/templates/install.tmpl @@ -12,7 +12,7 @@ <select name="database" id="install-database" class="form-control"> <option value="mysql">MySQL</option> <option value="pgsql">PostgreSQL</option> - <option value="sqlite">SQLite</option> + <option value="sqlite">SQLite3</option> </select> </div> </div> @@ -21,28 +21,21 @@ <label class="col-md-3 control-label">Host: </label> <div class="col-md-8"> - <input name="host" class="form-control" placeholder="Type mysql server ip or domain" value="localhost" required="required"> - </div> - </div> - <div class="form-group"> - <label class="col-md-3 control-label">Port: </label> - - <div class="col-md-8"> - <input name="port" class="form-control" placeholder="Type mysql server port" value="3306" required="required"> + <input name="host" class="form-control" placeholder="Type database server host, leave blank to keep default" value="{{.DbCfg.Host}}" required="required"> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">User: </label> <div class="col-md-8"> - <input name="user" class="form-control" placeholder="Type mysql username" required="required"> + <input name="user" class="form-control" placeholder="Type database username" required="required" value="{{.DbCfg.User}}"> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Password: </label> <div class="col-md-8"> - <input name="passwd" type="password" class="form-control" placeholder="Type mysql password" required="required"> + <input name="passwd" type="password" class="form-control" placeholder="Type database password" required="required" value="{{.DbCfg.Pwd}}"> </div> </div> @@ -50,7 +43,7 @@ <label class="col-md-3 control-label">Database Name: </label> <div class="col-md-8"> - <input name="database" type="text" class="form-control" placeholder="Type mysql database name" value="gogs" required="required"> + <input name="database" type="text" class="form-control" placeholder="Type mysql database name" value="{{.DbCfg.Name}}" required="required"> <p class="help-block">Recommend use INNODB engine with utf8_general_ci charset.</p> </div> </div> @@ -71,18 +64,12 @@ <label class="col-md-3 control-label">Path: </label> <div class="col-md-8"> - <input name="path" class="form-control" placeholder="Type sqlite file path" value="xxx/file.db"> - <p class="help-block">The file path of SQLite database.</p> + <input name="path" class="form-control" placeholder="Type sqlite3 file path" value="{{.DbCfg.Path}}"> + <p class="help-block">The file path of SQLite3 database.</p> </div> </div> </div> - <!-- <div class="form-group"> - <div class="col-md-8 col-md-offset-3"> - <button class="btn btn-sm btn-info">Test Connection</button> - </div> - </div> --> - <hr/> <p class="help-block text-center">General Settings of Gogs</p> @@ -91,7 +78,7 @@ <label class="col-md-3 control-label">Repository Path: </label> <div class="col-md-8"> - <input name="repo-path" type="text" class="form-control" placeholder="Type your repository directory" value="/var/gogs/repostiory" required="required"> + <input name="repo-path" type="text" class="form-control" placeholder="Type your repository directory" value="{{.RepoRootPath}}" required="required"> <p class="help-block">The git copy of each repository is saved in this directory.</p> </div> @@ -100,7 +87,7 @@ <label class="col-md-3 control-label">Run User: </label> <div class="col-md-8"> - <input name="system-user" type="text" class="form-control" placeholder="Type mysql password" value="root" required="required"> + <input name="system-user" type="text" class="form-control" placeholder="Type system user name" value="{{.RunUser}}" required="required"> <p class="help-block">The user has access to visit and run Gogs.</p> </div> </div> @@ -113,20 +100,30 @@ <label class="col-md-3 control-label">Username: </label> <div class="col-md-8"> - <input name="repo-path" type="text" class="form-control" placeholder="Type admin user name" value="admin" required="required"> + <input name="admin_name" type="text" class="form-control" placeholder="Type admin user name" value="admin" required="required"> </div> </div> + <div class="form-group"> <label class="col-md-3 control-label">Password: </label> <div class="col-md-8"> - <input name="system-user" type="password" class="form-control" placeholder="Type admin user password" required="required"> + <input name="admin_pwd" type="password" class="form-control" placeholder="Type admin user password" required="required"> + </div> + </div> + + <div class="form-group"> + <label class="col-md-3 control-label">E-mail: </label> + + <div class="col-md-8"> + <input name="admin_email" type="text" class="form-control" placeholder="Type admin user e-mail" required="required"> </div> </div> <hr/> <div class="form-group text-center"> + <button class="btn btn-primary btn-lg">Test Configuration</button> <button class="btn btn-danger btn-lg">Install Gogs</button> <button class="btn btn-default btn-sm" type="button" data-toggle="modal" data-target="#advance-options-modal"> Advanced Options @@ -144,21 +141,21 @@ <label class="col-md-3 control-label">SMTP Host: </label> <div class="col-md-8"> - <input name="repo-path" type="text" class="form-control" placeholder="Type admin user name"> + <input name="smtp_host" type="text" class="form-control" placeholder="Type SMTP host address"> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Email: </label> <div class="col-md-8"> - <input name="repo-path" type="text" class="form-control" placeholder="Type admin user name"> + <input name="mailer_user" type="text" class="form-control" placeholder="Type SMTP user e-mail address"> </div> </div> <div class="form-group"> <label class="col-md-3 control-label">Password: </label> <div class="col-md-8"> - <input name="system-user" type="password" class="form-control" placeholder="Type admin user password"> + <input name="mailer_pwd" type="password" class="form-control" placeholder="Type SMTP user password"> </div> </div> <hr/> @@ -168,7 +165,7 @@ <div class="col-md-offset-3 col-md-7"> <div class="checkbox"> <label> - <input name="system-user" type="checkbox"> + <input name="register_confirm" type="checkbox"> <strong>Enable Register Confirmation</strong> </label> </div> @@ -179,7 +176,7 @@ <div class="col-md-offset-3 col-md-7"> <div class="checkbox"> <label> - <input name="system-user" type="checkbox"> + <input name="mail_notify" type="checkbox"> <strong>Enable Mail Notification</strong> </label> </div> @@ -32,7 +32,7 @@ gogs serv provide access auth for repositories`, func runUpdate(c *cli.Context) { base.NewConfigContext() models.LoadModelsConfig() - models.NewEngine() + models.SetEngine() w, _ := os.Create("update.log") defer w.Close() |