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

This commit is contained in:
Hintay 2022-02-19 00:46:46 +08:00
parent 0cf6919d7b
commit 759a235e7e
No known key found for this signature in database
GPG key ID: 120FC7FF121F2F2D
6 changed files with 47 additions and 41 deletions

11
main.go
View file

@ -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{

View file

@ -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

View file

@ -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)

View file

@ -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),

View file

@ -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)

View file

@ -4,7 +4,6 @@ import (
"gopkg.in/ini.v1"
"log"
"os"
"path"
)
var Conf *ini.File
@ -16,27 +15,30 @@ 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")
}
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)
Conf, err = ini.Load(ConfPath)
if err != nil {
log.Fatalf("setting.Setup, fail to parse '%s': %v", confPath, err)
log.Fatalf("setting.Setup, fail to parse '%s': %v", ConfPath, err)
}
mapTo("server", ServerSettings)
@ -50,8 +52,7 @@ func mapTo(section string, v interface{}) {
}
func Save() (err error) {
confPath = path.Join(DataDir, "app.ini")
err = Conf.SaveTo(confPath)
err = Conf.SaveTo(ConfPath)
if err != nil {
return
}