]> source.dussan.org Git - gitea.git/commitdiff
Working on install page
authorUnknown <joe2010xtmf@163.com>
Fri, 28 Mar 2014 11:26:22 +0000 (07:26 -0400)
committerUnknown <joe2010xtmf@163.com>
Fri, 28 Mar 2014 11:26:22 +0000 (07:26 -0400)
models/models.go
modules/base/conf.go
routers/install.go
serve.go
templates/install.tmpl
update.go

index 813725be4646f269c23c860831f763176c5c3213..04a361c5953a511323761e422dafed3dce6cd8de 100644 (file)
@@ -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)
index 2e5688393773de4a775b5f93d7fa809e508b1433..f905c381438c9b879d1b2b1c479b08030910dc7f 100644 (file)
@@ -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")
index d7d5159efc2d14df4ad1a3c74a9ec0a9bab51765..b44b89034e7b781527eeced4fa427fbce1486a31 100644 (file)
@@ -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
+       }
 }
index 96f03e724c84d919afe9dd8069c0db6b0c52fdf6..ad31260f018cac533766ec8e4bb4c4c13e2e24d6 100644 (file)
--- a/serve.go
+++ b/serve.go
@@ -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 {
index 4fbef3cba06dacfc8a35879d102149a78a9f5249..99ac8421f30c95e05eb9ed26130b85a580492196 100644 (file)
@@ -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>
                 <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>
                 <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>
             <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>
             <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
                             <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/>
                             <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>
                             <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>
index 39729937e1d6f1e4fea42d81db8aa07db29d7bfb..23abd7b2e76bf9550ff5daab3677661da1582031 100644 (file)
--- a/update.go
+++ b/update.go
@@ -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()