mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
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:
parent
0cf6919d7b
commit
759a235e7e
6 changed files with 47 additions and 41 deletions
11
main.go
11
main.go
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||||
tool2 "github.com/0xJacky/Nginx-UI/server/tool"
|
tool2 "github.com/0xJacky/Nginx-UI/server/tool"
|
||||||
"log"
|
"log"
|
||||||
|
"mime"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
@ -19,11 +20,15 @@ func main() {
|
||||||
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
||||||
defer stop()
|
defer stop()
|
||||||
|
|
||||||
var dataDir string
|
// Hack: fix wrong Content Type of .js file on some OS platforms
|
||||||
flag.StringVar(&dataDir, "d", ".", "Specify the data dir")
|
// 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()
|
flag.Parse()
|
||||||
|
|
||||||
settings.Init(dataDir)
|
settings.Init(confPath)
|
||||||
model.Init()
|
model.Init()
|
||||||
|
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
|
|
|
@ -5,7 +5,7 @@ After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
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
|
Restart=on-failure
|
||||||
TimeoutStopSec=5
|
TimeoutStopSec=5
|
||||||
KillMode=mixed
|
KillMode=mixed
|
||||||
|
|
|
@ -8,11 +8,10 @@ import (
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func installLockStatus() bool {
|
func installLockStatus() bool {
|
||||||
lockPath := path.Join(settings.DataDir, "app.ini")
|
lockPath := settings.ConfPath
|
||||||
_, err := os.Stat(lockPath)
|
_, err := os.Stat(lockPath)
|
||||||
|
|
||||||
return !os.IsNotExist(err)
|
return !os.IsNotExist(err)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||||
"gorm.io/driver/sqlite"
|
"gorm.io/driver/sqlite"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
@ -20,7 +21,7 @@ type Model struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init() {
|
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
|
var err error
|
||||||
db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
||||||
Logger: logger.Default.LogMode(logger.Info),
|
Logger: logger.Default.LogMode(logger.Info),
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"path/filepath"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -47,14 +47,14 @@ type serverFileSystemType struct {
|
||||||
http.FileSystem
|
http.FileSystem
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f serverFileSystemType) Exists(prefix string, path string) bool {
|
func (f serverFileSystemType) Exists(prefix string, filePath string) bool {
|
||||||
_, err := f.Open(filepath.Join(prefix, path))
|
_, err := f.Open(path.Join(prefix, filePath))
|
||||||
return err == nil
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func mustFS(dir string) (serverFileSystem static.ServeFileSystem) {
|
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 {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var Conf *ini.File
|
var Conf *ini.File
|
||||||
|
@ -16,30 +15,33 @@ type Server struct {
|
||||||
JwtSecret string
|
JwtSecret string
|
||||||
HTTPChallengePort string
|
HTTPChallengePort string
|
||||||
Email string
|
Email string
|
||||||
|
Database string
|
||||||
}
|
}
|
||||||
|
|
||||||
var ServerSettings = &Server{}
|
var ServerSettings = &Server{
|
||||||
|
HttpPort: "9000",
|
||||||
var DataDir string
|
RunMode: "debug",
|
||||||
var confPath string
|
HTTPChallengePort: "9180",
|
||||||
|
Database: "database",
|
||||||
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 Setup() {
|
var ConfPath string
|
||||||
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)
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
mapTo("server", ServerSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
func mapTo(section string, v interface{}) {
|
func mapTo(section string, v interface{}) {
|
||||||
|
@ -50,11 +52,10 @@ func mapTo(section string, v interface{}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Save() (err error) {
|
func Save() (err error) {
|
||||||
confPath = path.Join(DataDir, "app.ini")
|
err = Conf.SaveTo(ConfPath)
|
||||||
err = Conf.SaveTo(confPath)
|
if err != nil {
|
||||||
if err != nil {
|
return
|
||||||
return
|
}
|
||||||
}
|
Setup()
|
||||||
Setup()
|
return
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue