Refactor installation and database initialization.

Added optional database name to installation.
This commit is contained in:
Hintay 2022-02-19 03:02:06 +08:00
parent 759a235e7e
commit 3bf2677d69
No known key found for this signature in database
GPG key ID: 120FC7FF121F2F2D
8 changed files with 70 additions and 33 deletions

View file

@ -1,21 +1,17 @@
package api
import (
model2 "github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/model"
"github.com/0xJacky/Nginx-UI/server/settings"
"github.com/0xJacky/Nginx-UI/server/tool"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"golang.org/x/crypto/bcrypt"
"net/http"
"os"
)
func installLockStatus() bool {
lockPath := settings.ConfPath
_, err := os.Stat(lockPath)
return !os.IsNotExist(err)
return "" != settings.ServerSettings.JwtSecret
}
func InstallLockCheck(c *gin.Context) {
@ -28,6 +24,7 @@ type InstallJson struct {
Email string `json:"email" binding:"required,email"`
Username string `json:"username" binding:"required,max=255"`
Password string `json:"password" binding:"required,max=255"`
Database string `json:"database"`
}
func InstallNginxUI(c *gin.Context) {
@ -44,18 +41,26 @@ func InstallNginxUI(c *gin.Context) {
return
}
serverSettings := settings.Conf.Section("server")
serverSettings.Key("JwtSecret").SetValue(uuid.New().String())
serverSettings.Key("Email").SetValue(json.Email)
settings.ServerSettings.JwtSecret = uuid.New().String()
settings.ServerSettings.Email = json.Email
if "" != json.Database {
settings.ServerSettings.Database = json.Database
}
settings.ReflectFrom()
err := settings.Save()
if err != nil {
ErrHandler(c, err)
return
}
curd := model2.NewCurd(&model2.Auth{})
// Init model and auto cert
model.Init()
go tool.AutoCert()
curd := model.NewCurd(&model.Auth{})
pwd, _ := bcrypt.GenerateFromPassword([]byte(json.Password), bcrypt.DefaultCost)
err = curd.Add(&model2.Auth{
err = curd.Add(&model.Auth{
Name: json.Username,
Password: string(pwd),
})

View file

@ -3,7 +3,6 @@ package settings
import (
"gopkg.in/ini.v1"
"log"
"os"
)
var Conf *ini.File
@ -27,21 +26,35 @@ var ServerSettings = &Server{
var ConfPath string
var sections = map[string]interface{}{
"server": ServerSettings,
}
func Init(confPath string) {
ConfPath = confPath
if _, err := os.Stat(ConfPath); os.IsExist(err) {
Setup()
}
Setup()
}
func Setup() {
var err error
Conf, err = ini.Load(ConfPath)
Conf, err = ini.LooseLoad(ConfPath)
if err != nil {
log.Fatalf("setting.Setup, fail to parse '%s': %v", ConfPath, err)
log.Printf("setting.Setup: %v", err)
} else {
MapTo()
}
}
mapTo("server", ServerSettings)
func MapTo() {
for k, v := range sections {
mapTo(k, v)
}
}
func ReflectFrom() {
for k, v := range sections {
reflectFrom(k, v)
}
}
func mapTo(section string, v interface{}) {
@ -51,6 +64,13 @@ func mapTo(section string, v interface{}) {
}
}
func reflectFrom(section string, v interface{}) {
err := Conf.Section(section).ReflectFrom(v)
if err != nil {
log.Fatalf("Cfg.ReflectFrom %s err: %v", section, err)
}
}
func Save() (err error) {
err = Conf.SaveTo(ConfPath)
if err != nil {