瀏覽代碼

Refactor start-up parameters. Fixed embed bugs for Windows. Fixed wrong Content Type of .js file on some OS platforms.

Hintay 3 年之前
父節點
當前提交
759a235e7e
共有 6 個文件被更改,包括 45 次插入39 次删除
  1. 8 3
      main.go
  2. 1 1
      nginx-ui.service
  3. 1 2
      server/api/install.go
  4. 2 1
      server/model/models.go
  5. 4 4
      server/router/routers.go
  6. 29 28
      server/settings/settings.go

+ 8 - 3
main.go

@@ -8,6 +8,7 @@ import (
 	"github.com/0xJacky/Nginx-UI/server/settings"
 	tool2 "github.com/0xJacky/Nginx-UI/server/tool"
 	"log"
+	"mime"
 	"net/http"
 	"os/signal"
 	"syscall"
@@ -19,11 +20,15 @@ func main() {
 	ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
 	defer stop()
 
-	var dataDir string
-	flag.StringVar(&dataDir, "d", ".", "Specify the data dir")
+	// Hack: fix wrong Content Type of .js file on some OS platforms
+	// See https://github.com/golang/go/issues/32350
+	_ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8")
+
+	var confPath string
+	flag.StringVar(&confPath, "config", "./app.ini", "Specify the configuration file")
 	flag.Parse()
 
-	settings.Init(dataDir)
+	settings.Init(confPath)
 	model.Init()
 
 	srv := &http.Server{

+ 1 - 1
nginx-ui.service

@@ -5,7 +5,7 @@ After=network.target
 
 [Service]
 Type=simple
-ExecStart=/usr/local/bin/nginx-ui -d /usr/local/etc/nginx-ui
+ExecStart=/usr/local/bin/nginx-ui -d /usr/local/etc/nginx-ui/app.ini
 Restart=on-failure
 TimeoutStopSec=5
 KillMode=mixed

+ 1 - 2
server/api/install.go

@@ -8,11 +8,10 @@ import (
 	"golang.org/x/crypto/bcrypt"
 	"net/http"
 	"os"
-	"path"
 )
 
 func installLockStatus() bool {
-	lockPath := path.Join(settings.DataDir, "app.ini")
+	lockPath := settings.ConfPath
 	_, err := os.Stat(lockPath)
 
 	return !os.IsNotExist(err)

+ 2 - 1
server/model/models.go

@@ -1,6 +1,7 @@
 package model
 
 import (
+	"fmt"
 	"github.com/0xJacky/Nginx-UI/server/settings"
 	"gorm.io/driver/sqlite"
 	"gorm.io/gorm"
@@ -20,7 +21,7 @@ type Model struct {
 }
 
 func Init() {
-	dbPath := path.Join(settings.DataDir, "database.db")
+	dbPath := path.Join(path.Dir(settings.ConfPath), fmt.Sprintf("%s.db", settings.ServerSettings.Database))
 	var err error
 	db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
 		Logger:      logger.Default.LogMode(logger.Info),

+ 4 - 4
server/router/routers.go

@@ -11,7 +11,7 @@ import (
 	"io/fs"
 	"log"
 	"net/http"
-	"path/filepath"
+	"path"
 	"strings"
 )
 
@@ -47,14 +47,14 @@ type serverFileSystemType struct {
 	http.FileSystem
 }
 
-func (f serverFileSystemType) Exists(prefix string, path string) bool {
-	_, err := f.Open(filepath.Join(prefix, path))
+func (f serverFileSystemType) Exists(prefix string, filePath string) bool {
+	_, err := f.Open(path.Join(prefix, filePath))
 	return err == nil
 }
 
 func mustFS(dir string) (serverFileSystem static.ServeFileSystem) {
 
-	sub, err := fs.Sub(frontend.DistFS, filepath.Join("dist", dir))
+	sub, err := fs.Sub(frontend.DistFS, path.Join("dist", dir))
 
 	if err != nil {
 		log.Println(err)

+ 29 - 28
server/settings/settings.go

@@ -1,10 +1,9 @@
 package settings
 
 import (
-    "gopkg.in/ini.v1"
-    "log"
-    "os"
-    "path"
+	"gopkg.in/ini.v1"
+	"log"
+	"os"
 )
 
 var Conf *ini.File
@@ -16,30 +15,33 @@ type Server struct {
 	JwtSecret         string
 	HTTPChallengePort string
 	Email             string
+	Database          string
 }
 
-var ServerSettings = &Server{}
+var ServerSettings = &Server{
+	HttpPort:          "9000",
+	RunMode:           "debug",
+	HTTPChallengePort: "9180",
+	Database:          "database",
+}
 
-var DataDir string
-var confPath string
+var ConfPath string
 
-func Init(dataDir string)  {
-    DataDir = dataDir
-    confPath = path.Join(dataDir, "app.ini")
-    if _, err := os.Stat(confPath); os.IsNotExist(err) {
-        confPath = path.Join(dataDir, "app.example.ini")
-    }
-    Setup()
+func Init(confPath string) {
+	ConfPath = confPath
+	if _, err := os.Stat(ConfPath); os.IsExist(err) {
+		Setup()
+	}
 }
 
-func Setup()  {
-    var err error
-    Conf, err = ini.Load(confPath)
-    if err != nil {
-        log.Fatalf("setting.Setup, fail to parse '%s': %v", confPath, err)
-    }
+func Setup() {
+	var err error
+	Conf, err = ini.Load(ConfPath)
+	if err != nil {
+		log.Fatalf("setting.Setup, fail to parse '%s': %v", ConfPath, err)
+	}
 
-    mapTo("server", ServerSettings)
+	mapTo("server", ServerSettings)
 }
 
 func mapTo(section string, v interface{}) {
@@ -50,11 +52,10 @@ func mapTo(section string, v interface{}) {
 }
 
 func Save() (err error) {
-    confPath = path.Join(DataDir, "app.ini")
-    err = Conf.SaveTo(confPath)
-    if err != nil {
-        return
-    }
-    Setup()
-    return
+	err = Conf.SaveTo(ConfPath)
+	if err != nil {
+		return
+	}
+	Setup()
+	return
 }