mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-12 02:45:49 +02:00
commit
d2e7dd500d
13 changed files with 192 additions and 53 deletions
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
|
@ -142,6 +142,18 @@ jobs:
|
||||||
with:
|
with:
|
||||||
go-version: ^1.23.0
|
go-version: ^1.23.0
|
||||||
|
|
||||||
|
- name: Download app artifacts
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: app-dist
|
||||||
|
path: app/dist
|
||||||
|
|
||||||
|
- name: Generate files
|
||||||
|
env:
|
||||||
|
GOOS: linux
|
||||||
|
GOARCH: amd64
|
||||||
|
run: go generate
|
||||||
|
|
||||||
- name: Setup compiler environment
|
- name: Setup compiler environment
|
||||||
id: info
|
id: info
|
||||||
run: |
|
run: |
|
||||||
|
@ -182,12 +194,6 @@ jobs:
|
||||||
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
|
echo "CXX=${{ env.ARCH_NAME }}-clang++" >> $GITHUB_ENV
|
||||||
echo "LD_FLAGS=-w" >> $GITHUB_ENV
|
echo "LD_FLAGS=-w" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Download app artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: app-dist
|
|
||||||
path: app/dist
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -14,6 +14,7 @@ app/.env
|
||||||
app/.status_hash
|
app/.status_hash
|
||||||
.idea/deployment.xml
|
.idea/deployment.xml
|
||||||
.idea/webServers.xml
|
.idea/webServers.xml
|
||||||
|
*.gen.go
|
||||||
.devcontainer/go-path
|
.devcontainer/go-path
|
||||||
.devcontainer/data
|
.devcontainer/data
|
||||||
.devcontainer/casdoor.pem
|
.devcontainer/casdoor.pem
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package cluster
|
package cluster
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/0xJacky/Nginx-UI/api"
|
"github.com/0xJacky/Nginx-UI/api"
|
||||||
analytic2 "github.com/0xJacky/Nginx-UI/internal/analytic"
|
analytic2 "github.com/0xJacky/Nginx-UI/internal/analytic"
|
||||||
"github.com/0xJacky/Nginx-UI/internal/upgrader"
|
"github.com/0xJacky/Nginx-UI/internal/upgrader"
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/version"
|
||||||
"github.com/dustin/go-humanize"
|
"github.com/dustin/go-humanize"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/shirou/gopsutil/v4/cpu"
|
"github.com/shirou/gopsutil/v4/cpu"
|
||||||
"github.com/shirou/gopsutil/v4/disk"
|
"github.com/shirou/gopsutil/v4/disk"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetCurrentNode(c *gin.Context) {
|
func GetCurrentNode(c *gin.Context) {
|
||||||
|
@ -26,7 +28,7 @@ func GetCurrentNode(c *gin.Context) {
|
||||||
}
|
}
|
||||||
cpuInfo, _ := cpu.Info()
|
cpuInfo, _ := cpu.Info()
|
||||||
memory, _ := analytic2.GetMemoryStat()
|
memory, _ := analytic2.GetMemoryStat()
|
||||||
ver, _ := upgrader.GetCurrentVersion()
|
ver := version.GetVersionInfo()
|
||||||
diskUsage, _ := disk.Usage(".")
|
diskUsage, _ := disk.Usage(".")
|
||||||
|
|
||||||
nodeInfo := analytic2.NodeInfo{
|
nodeInfo := analytic2.NodeInfo{
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
package system
|
package system
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/0xJacky/Nginx-UI/api"
|
"github.com/0xJacky/Nginx-UI/api"
|
||||||
"github.com/0xJacky/Nginx-UI/internal/upgrader"
|
"github.com/0xJacky/Nginx-UI/internal/upgrader"
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/version"
|
||||||
"github.com/0xJacky/Nginx-UI/settings"
|
"github.com/0xJacky/Nginx-UI/settings"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/uozi-tech/cosy/logger"
|
"github.com/uozi-tech/cosy/logger"
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetRelease(c *gin.Context) {
|
func GetRelease(c *gin.Context) {
|
||||||
|
@ -32,13 +34,7 @@ func GetRelease(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetCurrentVersion(c *gin.Context) {
|
func GetCurrentVersion(c *gin.Context) {
|
||||||
curVer, err := upgrader.GetCurrentVersion()
|
c.JSON(http.StatusOK, version.GetVersionInfo())
|
||||||
if err != nil {
|
|
||||||
api.ErrHandler(c, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
c.JSON(http.StatusOK, curVer)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -8,5 +8,3 @@ import (
|
||||||
|
|
||||||
//go:embed i18n.json dist/* dist/*/* src/language/* src/language/*/*
|
//go:embed i18n.json dist/* dist/*/* src/language/* src/language/*/*
|
||||||
var DistFS embed.FS
|
var DistFS embed.FS
|
||||||
|
|
||||||
var VersionPath = "dist/version.json"
|
|
||||||
|
|
|
@ -4,7 +4,5 @@ package app
|
||||||
|
|
||||||
import "embed"
|
import "embed"
|
||||||
|
|
||||||
//go:embed i18n.json src/language/* src/language/*/* src/version.json
|
//go:embed i18n.json src/language/* src/language/*/*
|
||||||
var DistFS embed.FS
|
var DistFS embed.FS
|
||||||
|
|
||||||
var VersionPath = "src/version.json"
|
|
||||||
|
|
81
cmd/version/generate.go
Normal file
81
cmd/version/generate.go
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/fs"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
type VersionInfo struct {
|
||||||
|
Version string `json:"version"`
|
||||||
|
BuildId int `json:"build_id"`
|
||||||
|
TotalBuild int `json:"total_build"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
_, file, _, ok := runtime.Caller(0)
|
||||||
|
if !ok {
|
||||||
|
log.Print("Unable to get the current file")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
basePath := path.Join(path.Dir(file), "../../")
|
||||||
|
|
||||||
|
versionFile, err := os.Open(path.Join(basePath, "app/dist/version.json"))
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, fs.ErrNotExist) {
|
||||||
|
log.Print("\"dist/version.json\" not found, load from src instead")
|
||||||
|
versionFile, err = os.Open(path.Join(basePath, "app/src/version.json"))
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func(versionFile fs.File) {
|
||||||
|
err := versionFile.Close()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}(versionFile)
|
||||||
|
|
||||||
|
// Read the version.json file
|
||||||
|
data, err := io.ReadAll(versionFile)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to read version.json: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse the JSON data
|
||||||
|
var versionInfo VersionInfo
|
||||||
|
err = json.Unmarshal(data, &versionInfo)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to parse JSON: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate the version.gen.go file content
|
||||||
|
genContent := fmt.Sprintf(`// Code generated by cmd/version/generate.go; DO NOT EDIT.
|
||||||
|
|
||||||
|
package version
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Version = "%s"
|
||||||
|
BuildId = %d
|
||||||
|
TotalBuild = %d
|
||||||
|
}
|
||||||
|
`, versionInfo.Version, versionInfo.BuildId, versionInfo.TotalBuild)
|
||||||
|
|
||||||
|
genPath := path.Join(basePath, "internal/version/version.gen.go")
|
||||||
|
err = os.WriteFile(genPath, []byte(genContent), 0644)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to write version.gen.go: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("version.gen.go has been generated successfully.")
|
||||||
|
}
|
9
go.mod
9
go.mod
|
@ -11,7 +11,6 @@ require (
|
||||||
github.com/dgraph-io/ristretto/v2 v2.1.0
|
github.com/dgraph-io/ristretto/v2 v2.1.0
|
||||||
github.com/dustin/go-humanize v1.0.1
|
github.com/dustin/go-humanize v1.0.1
|
||||||
github.com/elliotchance/orderedmap/v3 v3.1.0
|
github.com/elliotchance/orderedmap/v3 v3.1.0
|
||||||
github.com/fatih/color v1.18.0
|
|
||||||
github.com/gin-contrib/static v1.1.3
|
github.com/gin-contrib/static v1.1.3
|
||||||
github.com/gin-gonic/gin v1.10.0
|
github.com/gin-gonic/gin v1.10.0
|
||||||
github.com/go-acme/lego/v4 v4.21.0
|
github.com/go-acme/lego/v4 v4.21.0
|
||||||
|
@ -31,13 +30,13 @@ require (
|
||||||
github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
|
github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
|
||||||
github.com/samber/lo v1.49.1
|
github.com/samber/lo v1.49.1
|
||||||
github.com/sashabaranov/go-openai v1.36.1
|
github.com/sashabaranov/go-openai v1.36.1
|
||||||
github.com/shirou/gopsutil/v4 v4.25.1
|
github.com/shirou/gopsutil/v4 v4.24.12
|
||||||
github.com/spf13/cast v1.7.1
|
github.com/spf13/cast v1.7.1
|
||||||
github.com/stretchr/testify v1.10.0
|
github.com/stretchr/testify v1.10.0
|
||||||
github.com/tufanbarisyildirim/gonginx v0.0.0-20250120210832-12a9c7ae0c8a
|
github.com/tufanbarisyildirim/gonginx v0.0.0-20250120210832-12a9c7ae0c8a
|
||||||
github.com/uozi-tech/cosy v1.14.3
|
github.com/uozi-tech/cosy v1.14.3
|
||||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1
|
github.com/uozi-tech/cosy-driver-sqlite v0.2.0
|
||||||
go.uber.org/zap v1.27.0
|
github.com/urfave/cli/v3 v3.0.0-beta1
|
||||||
golang.org/x/crypto v0.32.0
|
golang.org/x/crypto v0.32.0
|
||||||
golang.org/x/net v0.34.0
|
golang.org/x/net v0.34.0
|
||||||
gopkg.in/ini.v1 v1.67.0
|
gopkg.in/ini.v1 v1.67.0
|
||||||
|
@ -107,6 +106,7 @@ require (
|
||||||
github.com/dnsimple/dnsimple-go v1.7.0 // indirect
|
github.com/dnsimple/dnsimple-go v1.7.0 // indirect
|
||||||
github.com/ebitengine/purego v0.8.2 // indirect
|
github.com/ebitengine/purego v0.8.2 // indirect
|
||||||
github.com/exoscale/egoscale/v3 v3.1.9 // indirect
|
github.com/exoscale/egoscale/v3 v3.1.9 // indirect
|
||||||
|
github.com/fatih/color v1.18.0 // indirect
|
||||||
github.com/fatih/structs v1.1.0 // indirect
|
github.com/fatih/structs v1.1.0 // indirect
|
||||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.8.0 // indirect
|
github.com/fsnotify/fsnotify v1.8.0 // indirect
|
||||||
|
@ -253,6 +253,7 @@ require (
|
||||||
go.uber.org/atomic v1.11.0 // indirect
|
go.uber.org/atomic v1.11.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
go.uber.org/ratelimit v0.3.1 // indirect
|
go.uber.org/ratelimit v0.3.1 // indirect
|
||||||
|
go.uber.org/zap v1.27.0 // indirect
|
||||||
golang.org/x/arch v0.13.0 // indirect
|
golang.org/x/arch v0.13.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
|
golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c // indirect
|
||||||
golang.org/x/mod v0.22.0 // indirect
|
golang.org/x/mod v0.22.0 // indirect
|
||||||
|
|
6
go.sum
6
go.sum
|
@ -1658,8 +1658,6 @@ github.com/selectel/go-selvpcclient/v3 v3.2.1 h1:ny6WIAMiHzKxOgOEnwcWE79wIQij1AH
|
||||||
github.com/selectel/go-selvpcclient/v3 v3.2.1/go.mod h1:3EfSf8aEWyhspOGbvZ6mvnFg7JN5uckxNyBFPGWsXNQ=
|
github.com/selectel/go-selvpcclient/v3 v3.2.1/go.mod h1:3EfSf8aEWyhspOGbvZ6mvnFg7JN5uckxNyBFPGWsXNQ=
|
||||||
github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4=
|
github.com/shirou/gopsutil/v4 v4.24.12 h1:qvePBOk20e0IKA1QXrIIU+jmk+zEiYVVx06WjBRlZo4=
|
||||||
github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o=
|
github.com/shirou/gopsutil/v4 v4.24.12/go.mod h1:DCtMPAad2XceTeIAbGyVfycbYQNBGk2P8cvDi7/VN9o=
|
||||||
github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs=
|
|
||||||
github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI=
|
|
||||||
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
|
||||||
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
||||||
|
@ -1783,9 +1781,9 @@ github.com/uozi-tech/cosy-driver-postgres v0.2.1 h1:OICakGuT+omva6QOJCxTJ5Lfr7CG
|
||||||
github.com/uozi-tech/cosy-driver-postgres v0.2.1/go.mod h1:eAy1A89yHbAEfjkhNAifaJQk172NqrNoRyRtFcZc9Go=
|
github.com/uozi-tech/cosy-driver-postgres v0.2.1/go.mod h1:eAy1A89yHbAEfjkhNAifaJQk172NqrNoRyRtFcZc9Go=
|
||||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.0 h1:eTpIMyGoFUK4JcaiKfJHD5AyiM6vtCwN98c7Bz5n25o=
|
github.com/uozi-tech/cosy-driver-sqlite v0.2.0 h1:eTpIMyGoFUK4JcaiKfJHD5AyiM6vtCwN98c7Bz5n25o=
|
||||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.0/go.mod h1:87a6mzn5IuEtIR4z7U4Ey8eKLGfNEOSkv7kPQlbNQgM=
|
github.com/uozi-tech/cosy-driver-sqlite v0.2.0/go.mod h1:87a6mzn5IuEtIR4z7U4Ey8eKLGfNEOSkv7kPQlbNQgM=
|
||||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1 h1:W+Z4pY25PSJCeReqroG7LIBeffsqotbpHzgqSMqZDIM=
|
|
||||||
github.com/uozi-tech/cosy-driver-sqlite v0.2.1/go.mod h1:2ya7Z5P3HzFi1ktfL8gvwaAGx0DDV0bmWxNSNpaLlwo=
|
|
||||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||||
|
github.com/urfave/cli/v3 v3.0.0-beta1 h1:6DTaaUarcM0wX7qj5Hcvs+5Dm3dyUTBbEwIWAjcw9Zg=
|
||||||
|
github.com/urfave/cli/v3 v3.0.0-beta1/go.mod h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y=
|
||||||
github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4ulRMcQ=
|
github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4ulRMcQ=
|
||||||
github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q=
|
github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q=
|
||||||
github.com/volcengine/volc-sdk-golang v1.0.194 h1:3o0INQzdtYJWvdGrtX02booCqPL5TsWSq2W1Ur7Bzlo=
|
github.com/volcengine/volc-sdk-golang v1.0.194 h1:3o0INQzdtYJWvdGrtX02booCqPL5TsWSq2W1Ur7Bzlo=
|
||||||
|
|
50
internal/cmd/main.go
Normal file
50
internal/cmd/main.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/version"
|
||||||
|
"github.com/urfave/cli/v3"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewAppCmd() *cli.Command {
|
||||||
|
serve := false
|
||||||
|
|
||||||
|
cmd := &cli.Command{
|
||||||
|
Name: "nginx-ui",
|
||||||
|
Usage: "Yet another Nginx Web UI",
|
||||||
|
Commands: []*cli.Command{
|
||||||
|
{
|
||||||
|
Name: "serve",
|
||||||
|
Usage: "Start the Nginx-UI server",
|
||||||
|
Action: func(ctx context.Context, command *cli.Command) error {
|
||||||
|
serve = true
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "config",
|
||||||
|
Value: "app.ini",
|
||||||
|
Usage: "configuration file path",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
DefaultCommand: "serve",
|
||||||
|
Version: version.Version,
|
||||||
|
}
|
||||||
|
|
||||||
|
cli.VersionPrinter = func(cmd *cli.Command) {
|
||||||
|
fmt.Printf("%s (%d)\n", cmd.Root().Version, version.BuildId)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cmd.Run(context.Background(), os.Args); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
} else if !serve {
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
return cmd
|
||||||
|
}
|
|
@ -1,12 +1,10 @@
|
||||||
package upgrader
|
package upgrader
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/0xJacky/Nginx-UI/app"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -42,19 +40,3 @@ func GetRuntimeInfo() (r RuntimeInfo, err error) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetCurrentVersion() (c CurVersion, err error) {
|
|
||||||
verJson, err := app.DistFS.ReadFile(app.VersionPath)
|
|
||||||
if err != nil {
|
|
||||||
err = errors.Wrap(err, "service.GetCurrentVersion ReadFile err")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = json.Unmarshal(verJson, &c)
|
|
||||||
if err != nil {
|
|
||||||
err = errors.Wrap(err, "service.GetCurrentVersion json.Unmarshal err")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
26
internal/version/version.go
Normal file
26
internal/version/version.go
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
package version
|
||||||
|
|
||||||
|
var (
|
||||||
|
Version = ""
|
||||||
|
BuildId = 0
|
||||||
|
TotalBuild = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
type Info struct {
|
||||||
|
Version string `json:"version"`
|
||||||
|
BuildId int `json:"build_id"`
|
||||||
|
TotalBuild int `json:"total_build"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var versionInfo *Info
|
||||||
|
|
||||||
|
func GetVersionInfo() *Info {
|
||||||
|
if versionInfo == nil {
|
||||||
|
versionInfo = &Info{
|
||||||
|
Version: Version,
|
||||||
|
BuildId: BuildId,
|
||||||
|
TotalBuild: TotalBuild,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return versionInfo
|
||||||
|
}
|
10
main.go
10
main.go
|
@ -2,11 +2,11 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"flag"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/0xJacky/Nginx-UI/internal/cmd"
|
||||||
"github.com/0xJacky/Nginx-UI/internal/kernel"
|
"github.com/0xJacky/Nginx-UI/internal/kernel"
|
||||||
"github.com/0xJacky/Nginx-UI/model"
|
"github.com/0xJacky/Nginx-UI/model"
|
||||||
"github.com/0xJacky/Nginx-UI/router"
|
"github.com/0xJacky/Nginx-UI/router"
|
||||||
|
@ -20,6 +20,8 @@ import (
|
||||||
cSettings "github.com/uozi-tech/cosy/settings"
|
cSettings "github.com/uozi-tech/cosy/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:generate go run cmd/version/generate.go
|
||||||
|
|
||||||
func Program(confPath string) func(state overseer.State) {
|
func Program(confPath string) func(state overseer.State) {
|
||||||
return func(state overseer.State) {
|
return func(state overseer.State) {
|
||||||
defer logger.Sync()
|
defer logger.Sync()
|
||||||
|
@ -59,12 +61,10 @@ func Program(confPath string) func(state overseer.State) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var confPath string
|
appCmd := cmd.NewAppCmd()
|
||||||
flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
|
confPath := appCmd.String("config")
|
||||||
settings.Init(confPath)
|
settings.Init(confPath)
|
||||||
|
|
||||||
overseer.Run(overseer.Config{
|
overseer.Run(overseer.Config{
|
||||||
Program: Program(confPath),
|
Program: Program(confPath),
|
||||||
Address: fmt.Sprintf("%s:%d", cSettings.ServerSettings.Host, cSettings.ServerSettings.Port),
|
Address: fmt.Sprintf("%s:%d", cSettings.ServerSettings.Host, cSettings.ServerSettings.Port),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue