func Install(ctx *middleware.Context) { form := auth.InstallForm{} form.DbHost = models.DbCfg.Host form.DbUser = models.DbCfg.User form.DbName = models.DbCfg.Name form.DbPath = models.DbCfg.Path form.RepoRootPath = setting.RepoRootPath // Note(unknwon): it's hard for Windows users change a running user, // so just use current one if config says default. if setting.IsWindows && setting.RunUser == "git" { form.RunUser = os.Getenv("USER") if len(form.RunUser) == 0 { form.RunUser = os.Getenv("USERNAME") } } else { form.RunUser = setting.RunUser } form.Domain = setting.Domain form.HTTPPort = setting.HttpPort form.AppUrl = setting.AppUrl curDbOp := "" if models.EnableSQLite3 { curDbOp = "SQLite3" // Default when enabled. } ctx.Data["CurDbOption"] = curDbOp auth.AssignForm(form, ctx.Data) ctx.HTML(200, INSTALL) }
func Install(ctx *middleware.Context) { form := auth.InstallForm{} // Database settings form.DbHost = models.DbCfg.Host form.DbUser = models.DbCfg.User form.DbName = models.DbCfg.Name form.DbPath = models.DbCfg.Path form.DbURI = models.DbCfg.URI ctx.Data["CurDbOption"] = "MySQL" switch models.DbCfg.Type { case "postgres": ctx.Data["CurDbOption"] = "PostgreSQL" case "sqlite3": if models.EnableSQLite3 { ctx.Data["CurDbOption"] = "SQLite3" } case "tidb": if models.EnableTidb { ctx.Data["CurDbOption"] = "TiDB" } } // Application general settings form.AppName = setting.AppName form.RepoRootPath = setting.RepoRootPath // Note(unknwon): it's hard for Windows users change a running user, // so just use current one if config says default. if setting.IsWindows && setting.RunUser == "git" { form.RunUser = user.CurrentUsername() } else { form.RunUser = setting.RunUser } form.Domain = setting.Domain form.SSHPort = setting.SSHPort form.HTTPPort = setting.HttpPort form.AppUrl = setting.AppUrl // E-mail service settings if setting.MailService != nil { form.SMTPHost = setting.MailService.Host form.SMTPFrom = setting.MailService.From form.SMTPEmail = setting.MailService.User } form.RegisterConfirm = setting.Service.RegisterEmailConfirm form.MailNotify = setting.Service.EnableNotifyMail // Server and other services settings form.OfflineMode = setting.OfflineMode form.DisableGravatar = setting.DisableGravatar form.DisableRegistration = setting.Service.DisableRegistration form.EnableCaptcha = setting.Service.EnableCaptcha form.RequireSignInView = setting.Service.RequireSignInView auth.AssignForm(form, ctx.Data) ctx.HTML(200, INSTALL) }
func Install(ctx *middleware.Context) { form := auth.InstallForm{} // Database settings form.DbHost = models.DbCfg.Host form.DbUser = models.DbCfg.User form.DbName = models.DbCfg.Name form.DbPath = models.DbCfg.Path if models.EnableSQLite3 { ctx.Data["CurDbOption"] = "SQLite3" // Default when enabled. } else { ctx.Data["CurDbOption"] = "MySQL" } // Application general settings form.AppName = setting.AppName form.RepoRootPath = setting.RepoRootPath // Note(unknwon): it's hard for Windows users change a running user, // so just use current one if config says default. if setting.IsWindows && setting.RunUser == "git" { form.RunUser = os.Getenv("USER") if len(form.RunUser) == 0 { form.RunUser = os.Getenv("USERNAME") } } else { form.RunUser = setting.RunUser } form.Domain = setting.Domain form.HTTPPort = setting.HttpPort form.AppUrl = setting.AppUrl // E-mail service settings if setting.MailService != nil { form.SMTPHost = setting.MailService.Host form.SMTPFrom = setting.MailService.From form.SMTPEmail = setting.MailService.User } form.RegisterConfirm = setting.Service.RegisterEmailConfirm form.MailNotify = setting.Service.EnableNotifyMail // Server and other services settings form.OfflineMode = setting.OfflineMode form.DisableRegistration = setting.Service.DisableRegistration form.RequireSignInView = setting.Service.RequireSignInView auth.AssignForm(form, ctx.Data) ctx.HTML(200, INSTALL) }
// @router /install [get] func Install(ctx *middleware.Context, form auth.InstallForm) { if setting.InstallLock { ctx.Handle(404, "install.Install", errors.New("Installation is prohibited")) return } ctx.Data["Title"] = "Install" ctx.Data["PageIsInstall"] = true // Get and assign values to install form. if len(form.Host) == 0 { form.Host = models.DbCfg.Host } if len(form.User) == 0 { form.User = models.DbCfg.User } if len(form.Passwd) == 0 { form.Passwd = models.DbCfg.Pwd } if len(form.DatabaseName) == 0 { form.DatabaseName = models.DbCfg.Name } if len(form.DatabasePath) == 0 { form.DatabasePath = models.DbCfg.Path } if len(form.RepoRootPath) == 0 { form.RepoRootPath = setting.RepoRootPath } if len(form.RunUser) == 0 { form.RunUser = setting.RunUser } if len(form.Domain) == 0 { form.Domain = setting.Domain } if len(form.AppUrl) == 0 { form.AppUrl = setting.AppUrl } renderDbOption(ctx) curDbOp := "" if models.EnableSQLite3 { curDbOp = "SQLite3" // Default when enabled. } ctx.Data["CurDbOption"] = curDbOp auth.AssignForm(form, ctx.Data) ctx.HTML(200, INSTALL) }
func Install(ctx *middleware.Context, form auth.InstallForm) { if base.InstallLock { ctx.Handle(404, "install.Install", errors.New("Installation is prohibited")) return } ctx.Data["Title"] = "Install" ctx.Data["PageIsInstall"] = true // Get and assign value to install form. if len(form.Host) == 0 { form.Host = models.DbCfg.Host } if len(form.User) == 0 { form.User = models.DbCfg.User } if len(form.Passwd) == 0 { form.Passwd = models.DbCfg.Pwd } if len(form.DatabaseName) == 0 { form.DatabaseName = models.DbCfg.Name } if len(form.DatabasePath) == 0 { form.DatabasePath = models.DbCfg.Path } if len(form.RepoRootPath) == 0 { form.RepoRootPath = base.RepoRootPath } if len(form.RunUser) == 0 { form.RunUser = base.RunUser } if len(form.Domain) == 0 { form.Domain = base.Domain } if len(form.AppUrl) == 0 { form.AppUrl = base.AppUrl } auth.AssignForm(form, ctx.Data) ctx.HTML(200, "install") }
func Install(ctx *middleware.Context, form auth.InstallForm) { if base.InstallLock { ctx.Handle(404, "install.Install", errors.New("Installation is prohibited")) return } ctx.Data["Title"] = "Install" ctx.Data["PageIsInstall"] = true if ctx.Req.Method == "GET" { // Get and assign value to install form. if len(form.Host) == 0 { form.Host = models.DbCfg.Host } if len(form.User) == 0 { form.User = models.DbCfg.User } if len(form.Passwd) == 0 { form.Passwd = models.DbCfg.Pwd } if len(form.DatabaseName) == 0 { form.DatabaseName = models.DbCfg.Name } if len(form.DatabasePath) == 0 { form.DatabasePath = models.DbCfg.Path } if len(form.RepoRootPath) == 0 { form.RepoRootPath = base.RepoRootPath } if len(form.RunUser) == 0 { form.RunUser = base.RunUser } if len(form.Domain) == 0 { form.Domain = base.Domain } if len(form.AppUrl) == 0 { form.AppUrl = base.AppUrl } auth.AssignForm(form, ctx.Data) ctx.HTML(200, "install") return } if ctx.HasError() { ctx.HTML(200, "install") return } // Pass basic check, now test configuration. // Test database setting. dbTypes := map[string]string{"mysql": "mysql", "pgsql": "postgres", "sqlite": "sqlite3"} models.DbCfg.Type = dbTypes[form.Database] models.DbCfg.Host = form.Host models.DbCfg.User = form.User models.DbCfg.Pwd = form.Passwd models.DbCfg.Name = form.DatabaseName models.DbCfg.SslMode = form.SslMode models.DbCfg.Path = form.DatabasePath // Set test engine. var x *xorm.Engine if err := models.NewTestEngine(x); err != nil { if strings.Contains(err.Error(), `Unknown database type: sqlite3`) { ctx.RenderWithErr("Your release version does not support SQLite3, please download the official binary version "+ "from https://github.com/gogits/gogs/wiki/Install-from-binary, NOT the gobuild version.", "install", &form) } else { ctx.RenderWithErr("Database setting is not correct: "+err.Error(), "install", &form) } return } // Test repository root path. if err := os.MkdirAll(form.RepoRootPath, os.ModePerm); err != nil { ctx.RenderWithErr("Repository root path is invalid: "+err.Error(), "install", &form) return } // Check run user. curUser := os.Getenv("USERNAME") if len(curUser) == 0 { curUser = os.Getenv("USER") } // Does not check run user when the install lock is off. if form.RunUser != curUser { ctx.RenderWithErr("Run user isn't the current user: "******" -> "+curUser, "install", &form) return } // Save settings. base.Cfg.SetValue("database", "DB_TYPE", models.DbCfg.Type) base.Cfg.SetValue("database", "HOST", models.DbCfg.Host) base.Cfg.SetValue("database", "NAME", models.DbCfg.Name) base.Cfg.SetValue("database", "USER", models.DbCfg.User) base.Cfg.SetValue("database", "PASSWD", models.DbCfg.Pwd) base.Cfg.SetValue("database", "SSL_MODE", models.DbCfg.SslMode) base.Cfg.SetValue("database", "PATH", models.DbCfg.Path) base.Cfg.SetValue("repository", "ROOT", form.RepoRootPath) base.Cfg.SetValue("", "RUN_USER", form.RunUser) base.Cfg.SetValue("server", "DOMAIN", form.Domain) base.Cfg.SetValue("server", "ROOT_URL", form.AppUrl) if len(strings.TrimSpace(form.SmtpHost)) > 0 { base.Cfg.SetValue("mailer", "ENABLED", "true") base.Cfg.SetValue("mailer", "HOST", form.SmtpHost) base.Cfg.SetValue("mailer", "USER", form.SmtpEmail) base.Cfg.SetValue("mailer", "PASSWD", form.SmtpPasswd) base.Cfg.SetValue("service", "REGISTER_EMAIL_CONFIRM", base.ToStr(form.RegisterConfirm == "on")) base.Cfg.SetValue("service", "ENABLE_NOTIFY_MAIL", base.ToStr(form.MailNotify == "on")) } base.Cfg.SetValue("", "RUN_MODE", "prod") base.Cfg.SetValue("security", "INSTALL_LOCK", "true") os.MkdirAll("custom/conf", os.ModePerm) if err := goconfig.SaveConfigFile(base.Cfg, "custom/conf/app.ini"); err != nil { ctx.RenderWithErr("Fail to save configuration: "+err.Error(), "install", &form) return } GlobalInit() // Create admin account. if _, err := models.RegisterUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd, IsAdmin: true, IsActive: true}); err != nil { if err != models.ErrUserAlreadyExist { 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!") ctx.Redirect("/user/login") }