chore: update dependencies and refactor settings management

This commit is contained in:
0xJacky
2026-03-14 21:11:59 +08:00
parent 6ec542fd97
commit 029142f944
9 changed files with 453 additions and 719 deletions
+7 -7
View File
@@ -12,9 +12,9 @@ import (
// EnableAdvancedIndexing enables advanced indexing for nginx logs
func EnableAdvancedIndexing(c *gin.Context) {
settings.NginxLogSettings.IndexingEnabled = true
err := settings.Save()
err := settings.Update(func() {
settings.NginxLogSettings.IndexingEnabled = true
})
if err != nil {
cosy.ErrHandler(c, err)
return
@@ -33,9 +33,9 @@ func EnableAdvancedIndexing(c *gin.Context) {
// DisableAdvancedIndexing disables advanced indexing for nginx logs
func DisableAdvancedIndexing(c *gin.Context) {
settings.NginxLogSettings.IndexingEnabled = false
err := settings.Save()
err := settings.Update(func() {
settings.NginxLogSettings.IndexingEnabled = false
})
if err != nil {
cosy.ErrHandler(c, err)
return
@@ -56,4 +56,4 @@ func GetAdvancedIndexingStatus(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"enabled": enabled,
})
}
}
+12 -12
View File
@@ -123,18 +123,18 @@ func SaveSettings(c *gin.Context) {
return
}
cSettings.ProtectedFill(cSettings.AppSettings, &json.App)
cSettings.ProtectedFill(cSettings.ServerSettings, &json.Server)
cSettings.ProtectedFill(settings.AuthSettings, &json.Auth)
cSettings.ProtectedFill(settings.CertSettings, &json.Cert)
cSettings.ProtectedFill(settings.HTTPSettings, &json.Http)
cSettings.ProtectedFill(settings.NodeSettings, &json.Node)
cSettings.ProtectedFill(settings.OpenAISettings, &json.Openai)
cSettings.ProtectedFill(settings.LogrotateSettings, &json.Logrotate)
cSettings.ProtectedFill(settings.NginxSettings, &json.Nginx)
cSettings.ProtectedFill(settings.OIDCSettings, &json.Oidc)
err := settings.Save()
err := settings.Update(func() {
cSettings.ProtectedFill(cSettings.AppSettings, &json.App)
cSettings.ProtectedFill(cSettings.ServerSettings, &json.Server)
cSettings.ProtectedFill(settings.AuthSettings, &json.Auth)
cSettings.ProtectedFill(settings.CertSettings, &json.Cert)
cSettings.ProtectedFill(settings.HTTPSettings, &json.Http)
cSettings.ProtectedFill(settings.NodeSettings, &json.Node)
cSettings.ProtectedFill(settings.OpenAISettings, &json.Openai)
cSettings.ProtectedFill(settings.LogrotateSettings, &json.Logrotate)
cSettings.ProtectedFill(settings.NginxSettings, &json.Nginx)
cSettings.ProtectedFill(settings.OIDCSettings, &json.Oidc)
})
if err != nil {
cosy.ErrHandler(c, err)
return
+5 -5
View File
@@ -74,11 +74,11 @@ func InstallNginxUI(c *gin.Context) {
return
}
cSettings.AppSettings.JwtSecret = uuid.New().String()
settings.NodeSettings.Secret = uuid.New().String()
settings.CertSettings.Email = json.Email
err := settings.Save()
err := settings.Update(func() {
cSettings.AppSettings.JwtSecret = uuid.New().String()
settings.NodeSettings.Secret = uuid.New().String()
settings.CertSettings.Email = json.Email
})
if err != nil {
cosy.ErrHandler(c, err)
return
+96 -95
View File
@@ -1,6 +1,6 @@
module github.com/0xJacky/Nginx-UI
go 1.26.0
go 1.26.1
require (
code.pfad.fr/risefront v1.0.0
@@ -11,9 +11,9 @@ require (
github.com/alibabacloud-go/tea v1.4.0
github.com/alibabacloud-go/tea-utils/v2 v2.0.9
github.com/blevesearch/bleve/v2 v2.5.7
github.com/caarlos0/env/v11 v11.3.1
github.com/caarlos0/env/v11 v11.4.0
github.com/casdoor/casdoor-go-sdk v1.44.0
github.com/cloudflare/cloudflare-go/v6 v6.7.0
github.com/cloudflare/cloudflare-go/v6 v6.8.0
github.com/coreos/go-oidc/v3 v3.17.0
github.com/creack/pty v1.1.24
github.com/dgraph-io/ristretto/v2 v2.4.0
@@ -24,19 +24,19 @@ require (
github.com/gabriel-vasile/mimetype v1.4.13
github.com/gin-contrib/cors v1.7.6
github.com/gin-contrib/static v1.1.5
github.com/gin-gonic/gin v1.11.0
github.com/go-acme/lego/v4 v4.31.0
github.com/gin-gonic/gin v1.12.0
github.com/go-acme/lego/v4 v4.32.0
github.com/go-co-op/gocron/v2 v2.19.1
github.com/go-gormigrate/gormigrate/v2 v2.1.5
github.com/go-playground/validator/v10 v10.30.1
github.com/go-resty/resty/v2 v2.17.2
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
github.com/go-webauthn/webauthn v0.15.0
github.com/go-webauthn/webauthn v0.16.1
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
github.com/mark3labs/mcp-go v0.44.0
github.com/minio/minio-go/v7 v7.0.98
github.com/mark3labs/mcp-go v0.45.0
github.com/minio/minio-go/v7 v7.0.99
github.com/minio/selfupdate v0.6.0
github.com/nikoksr/notify v1.5.0
github.com/nxadm/tail v1.4.11
@@ -44,23 +44,23 @@ require (
github.com/pkg/errors v0.9.1
github.com/pquerna/otp v1.5.0
github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
github.com/samber/lo v1.52.0
github.com/samber/lo v1.53.0
github.com/sashabaranov/go-openai v1.41.2
github.com/shirou/gopsutil/v4 v4.26.1
github.com/shirou/gopsutil/v4 v4.26.2
github.com/spf13/afero v1.15.0
github.com/spf13/cast v1.10.0
github.com/stretchr/testify v1.11.1
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.48
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.56
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.3.24
github.com/tufanbarisyildirim/gonginx v0.0.0-20250620092546-c3e307e36701
github.com/tufanbarisyildirim/gonginx v0.0.0-20260220081509-8e17ce617db3
github.com/ulikunitz/xz v0.5.15
github.com/uozi-tech/cosy v1.28.0
github.com/uozi-tech/cosy v1.30.1
github.com/uozi-tech/cosy-driver-sqlite v0.2.1
github.com/urfave/cli/v3 v3.6.2
golang.org/x/crypto v0.48.0
golang.org/x/net v0.50.0
golang.org/x/oauth2 v0.35.0
google.golang.org/grpc v1.79.1
github.com/urfave/cli/v3 v3.7.0
golang.org/x/crypto v0.49.0
golang.org/x/net v0.52.0
golang.org/x/oauth2 v0.36.0
google.golang.org/grpc v1.79.2
gopkg.in/ini.v1 v1.67.1
gorm.io/datatypes v1.2.7
gorm.io/driver/sqlite v1.6.0
@@ -71,10 +71,10 @@ require (
require (
aead.dev/minisign v0.3.0 // indirect
cloud.google.com/go/auth v0.18.1 // indirect
cloud.google.com/go/auth v0.18.2 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
cloud.google.com/go/compute/metadata v0.9.0 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
filippo.io/edwards25519 v1.2.0 // indirect
github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 // indirect
@@ -83,6 +83,7 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.30 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.24 // indirect
@@ -92,39 +93,39 @@ require (
github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect
github.com/Azure/go-autorest/logger v0.2.2 // indirect
github.com/Azure/go-autorest/tracing v0.6.1 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.7.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/RoaringBitmap/roaring/v2 v2.14.4 // indirect
github.com/RoaringBitmap/roaring/v2 v2.15.0 // indirect
github.com/akamai/AkamaiOPEN-edgegrid-golang/v11 v11.1.0 // indirect
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
github.com/alibabacloud-go/debug v1.0.1 // indirect
github.com/alibabacloud-go/endpoint-util v1.1.1 // indirect
github.com/aliyun/aliyun-log-go-sdk v0.1.115 // indirect
github.com/aliyun/credentials-go v1.4.11 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.1 // indirect
github.com/aws/aws-sdk-go-v2/config v1.32.7 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.7 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.11 // indirect
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.1 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6 // indirect
github.com/aws/smithy-go v1.24.0 // indirect
github.com/aliyun/aliyun-log-go-sdk v0.1.117 // indirect
github.com/aliyun/credentials-go v1.4.12 // indirect
github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect
github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect
github.com/aws/aws-sdk-go-v2/service/lightsail v1.50.14 // indirect
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.4 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect
github.com/aws/smithy-go v1.24.2 // indirect
github.com/aziontech/azionapi-go-sdk v0.144.0 // indirect
github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/baidubce/bce-sdk-go v0.9.258 // indirect
github.com/baidubce/bce-sdk-go v0.9.261 // indirect
github.com/benbjohnson/clock v1.3.5 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.24.4 // indirect
github.com/blevesearch/bleve_index_api v1.3.1 // indirect
github.com/blevesearch/geo v0.2.4 // indirect
github.com/blevesearch/bleve_index_api v1.3.2 // indirect
github.com/blevesearch/geo v0.2.5 // indirect
github.com/blevesearch/go-faiss v1.0.27 // indirect
github.com/blevesearch/go-porterstemmer v1.0.3 // indirect
github.com/blevesearch/gtreap v0.1.1 // indirect
@@ -134,12 +135,12 @@ require (
github.com/blevesearch/snowballstem v0.9.0 // indirect
github.com/blevesearch/upsidedown_store_api v1.0.2 // indirect
github.com/blevesearch/vellum v1.2.0 // indirect
github.com/blevesearch/zapx/v11 v11.4.2 // indirect
github.com/blevesearch/zapx/v12 v12.4.2 // indirect
github.com/blevesearch/zapx/v13 v13.4.2 // indirect
github.com/blevesearch/zapx/v14 v14.4.2 // indirect
github.com/blevesearch/zapx/v15 v15.4.2 // indirect
github.com/blevesearch/zapx/v16 v16.3.0 // indirect
github.com/blevesearch/zapx/v11 v11.4.3 // indirect
github.com/blevesearch/zapx/v12 v12.4.3 // indirect
github.com/blevesearch/zapx/v13 v13.4.3 // indirect
github.com/blevesearch/zapx/v14 v14.4.3 // indirect
github.com/blevesearch/zapx/v15 v15.4.3 // indirect
github.com/blevesearch/zapx/v16 v16.3.1 // indirect
github.com/blinkbean/dingtalk v1.1.3 // indirect
github.com/boombuler/barcode v1.1.0 // indirect
github.com/bsm/redislock v0.9.4 // indirect
@@ -163,8 +164,8 @@ require (
github.com/dnsimple/dnsimple-go/v4 v4.0.0 // indirect
github.com/docker/go-connections v0.6.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/ebitengine/purego v0.9.1 // indirect
github.com/exoscale/egoscale/v3 v3.1.33 // indirect
github.com/ebitengine/purego v0.10.0 // indirect
github.com/exoscale/egoscale/v3 v3.1.34 // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/fatih/structs v1.1.0 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -173,7 +174,7 @@ require (
github.com/gin-contrib/pprof v1.5.3 // indirect
github.com/gin-contrib/sse v1.1.0 // indirect
github.com/go-acme/alidns-20150109/v4 v4.7.0 // indirect
github.com/go-acme/esa-20240910/v2 v2.47.0 // indirect
github.com/go-acme/esa-20240910/v2 v2.48.0 // indirect
github.com/go-acme/jdcloud-sdk-go v1.64.0 // indirect
github.com/go-acme/tencentclouddnspod v1.3.24 // indirect
github.com/go-acme/tencentedgdeone v1.3.38 // indirect
@@ -192,8 +193,8 @@ require (
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-sql-driver/mysql v1.9.3 // indirect
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
github.com/go-webauthn/x v0.1.27 // indirect
github.com/goccy/go-json v0.10.5 // indirect
github.com/go-webauthn/x v0.2.2 // indirect
github.com/goccy/go-json v0.10.6 // indirect
github.com/goccy/go-yaml v1.19.2 // indirect
github.com/gofrs/flock v0.13.0 // indirect
github.com/gofrs/uuid v4.4.0+incompatible // indirect
@@ -203,10 +204,10 @@ require (
github.com/golang/snappy v1.0.0 // indirect
github.com/google/go-querystring v1.2.0 // indirect
github.com/google/go-tpm v0.9.8 // indirect
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect
github.com/google/pprof v0.0.0-20260302011040-a15ffb7f9dcc // indirect
github.com/google/s2a-go v0.1.9 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.11 // indirect
github.com/googleapis/gax-go/v2 v2.16.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect
github.com/googleapis/gax-go/v2 v2.18.0 // indirect
github.com/gophercloud/gophercloud v1.14.1 // indirect
github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect
@@ -214,7 +215,7 @@ require (
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.8 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.186 // indirect
github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.188 // indirect
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect
github.com/imega/luaformatter v0.0.0-20211025140405-86b0a68d6bef // indirect
github.com/infobloxopen/infoblox-go-client/v2 v2.11.0 // indirect
@@ -227,7 +228,7 @@ require (
github.com/jonboulle/clockwork v0.5.0 // indirect
github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect
github.com/klauspost/compress v1.18.3 // indirect
github.com/klauspost/compress v1.18.4 // indirect
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/klauspost/crc32 v1.3.0 // indirect
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b // indirect
@@ -238,14 +239,14 @@ require (
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect
github.com/lestrrat-go/strftime v1.1.1 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/linode/linodego v1.64.0 // indirect
github.com/linode/linodego v1.66.0 // indirect
github.com/liquidweb/liquidweb-cli v0.7.0 // indirect
github.com/liquidweb/liquidweb-go v1.6.4 // indirect
github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 // indirect
github.com/lufia/plan9stats v0.0.0-20260216142805-b3301c5f2a88 // indirect
github.com/mailru/easyjson v0.9.1 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.33 // indirect
github.com/mattn/go-sqlite3 v1.14.34 // indirect
github.com/miekg/dns v1.1.72 // indirect
github.com/mimuret/golang-iij-dpf v0.9.1 // indirect
github.com/minio/crc64nvme v1.1.1 // indirect
@@ -254,7 +255,6 @@ require (
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/moby/docker-image-spec v1.3.1 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect
github.com/moby/term v0.5.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/mschoch/smat v0.2.0 // indirect
@@ -270,8 +270,8 @@ require (
github.com/nrdcg/mailinabox v0.3.0 // indirect
github.com/nrdcg/namesilo v0.5.0 // indirect
github.com/nrdcg/nodion v0.1.0 // indirect
github.com/nrdcg/oci-go-sdk/common/v1065 v1065.107.0 // indirect
github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.107.0 // indirect
github.com/nrdcg/oci-go-sdk/common/v1065 v1065.109.1 // indirect
github.com/nrdcg/oci-go-sdk/dns/v1065 v1065.109.1 // indirect
github.com/nrdcg/porkbun v0.4.0 // indirect
github.com/nrdcg/vegadns v0.3.0 // indirect
github.com/nzdjb/go-metaname v1.0.0 // indirect
@@ -282,31 +282,31 @@ require (
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
github.com/peterhellberg/link v1.2.0 // indirect
github.com/philhofer/fwd v1.2.0 // indirect
github.com/pierrec/lz4/v4 v4.1.25 // indirect
github.com/pires/go-proxyproto v0.9.2 // indirect
github.com/pierrec/lz4/v4 v4.1.26 // indirect
github.com/pires/go-proxyproto v0.11.0 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/client_golang v1.23.2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.67.5 // indirect
github.com/prometheus/procfs v0.19.2 // indirect
github.com/prometheus/prometheus v0.309.1 // indirect
github.com/prometheus/procfs v0.20.1 // indirect
github.com/prometheus/prometheus v0.310.0 // indirect
github.com/quic-go/qpack v0.6.0 // indirect
github.com/quic-go/quic-go v0.59.0 // indirect
github.com/redis/go-redis/v9 v9.17.3 // indirect
github.com/redis/go-redis/v9 v9.18.0 // indirect
github.com/regfish/regfish-dnsapi-go v0.1.1 // indirect
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/rs/xid v1.6.0 // indirect
github.com/sacloud/api-client-go v0.3.5 // indirect
github.com/sacloud/go-http v0.1.9 // indirect
github.com/sacloud/iaas-api-go v1.25.0 // indirect
github.com/sacloud/iaas-api-go v1.26.0 // indirect
github.com/sacloud/packages-go v0.0.12 // indirect
github.com/sacloud/saclient-go v0.3.0 // indirect
github.com/sacloud/saclient-go v0.3.2 // indirect
github.com/sagikazarmark/locafero v0.12.0 // indirect
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.36 // indirect
github.com/selectel/domains-go v1.1.0 // indirect
github.com/selectel/go-selvpcclient/v4 v4.1.0 // indirect
github.com/selectel/go-selvpcclient/v4 v4.2.0 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
github.com/sirupsen/logrus v1.9.4 // indirect
github.com/softlayer/softlayer-go v1.2.1 // indirect
@@ -333,42 +333,43 @@ require (
github.com/ugorji/go/codec v1.3.1 // indirect
github.com/ultradns/ultradns-go-sdk v1.8.1-20250722213956-faef419 // indirect
github.com/vinyldns/go-vinyldns v0.9.17 // indirect
github.com/volcengine/volc-sdk-golang v1.0.235 // indirect
github.com/vultr/govultr/v3 v3.26.1 // indirect
github.com/volcengine/volc-sdk-golang v1.0.238 // indirect
github.com/vultr/govultr/v3 v3.28.1 // indirect
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/yandex-cloud/go-genproto v0.49.0 // indirect
github.com/yandex-cloud/go-sdk/services/dns v0.0.31 // indirect
github.com/yandex-cloud/go-sdk/v2 v2.47.0 // indirect
github.com/yandex-cloud/go-genproto v0.61.0 // indirect
github.com/yandex-cloud/go-sdk/services/dns v0.0.43 // indirect
github.com/yandex-cloud/go-sdk/v2 v2.70.0 // indirect
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.etcd.io/bbolt v1.4.3 // indirect
go.mongodb.org/mongo-driver v1.17.7 // indirect
go.mongodb.org/mongo-driver v1.17.9 // indirect
go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect
go.opentelemetry.io/otel v1.39.0 // indirect
go.opentelemetry.io/otel/metric v1.39.0 // indirect
go.opentelemetry.io/otel/trace v1.39.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect
go.opentelemetry.io/otel v1.42.0 // indirect
go.opentelemetry.io/otel/metric v1.42.0 // indirect
go.opentelemetry.io/otel/trace v1.42.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/ratelimit v0.3.1 // indirect
go.uber.org/zap v1.27.1 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/arch v0.23.0 // indirect
golang.org/x/mod v0.32.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.41.0 // indirect
golang.org/x/text v0.34.0 // indirect
golang.org/x/time v0.14.0 // indirect
golang.org/x/tools v0.41.0 // indirect
google.golang.org/api v0.263.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 // indirect
golang.org/x/arch v0.25.0 // indirect
golang.org/x/mod v0.34.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/text v0.35.0 // indirect
golang.org/x/time v0.15.0 // indirect
golang.org/x/tools v0.43.0 // indirect
google.golang.org/api v0.271.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260311181403-84a4fc48630c // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260311181403-84a4fc48630c // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/ns1/ns1-go.v2 v2.16.0 // indirect
gopkg.in/ns1/ns1-go.v2 v2.17.2 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
+230 -583
View File
File diff suppressed because it is too large Load Diff
+7 -5
View File
@@ -133,9 +133,9 @@ func InitNodeSecret() {
if settings.NodeSettings.Secret == "" {
logger.Info("Secret is empty, generating...")
uuidStr := uuid.New().String()
settings.NodeSettings.Secret = uuidStr
err := settings.Save()
err := settings.Update(func() {
settings.NodeSettings.Secret = uuidStr
})
if err != nil {
logger.Error("Error save settings", err)
}
@@ -153,9 +153,11 @@ func InitCryptoSecret() {
return
}
settings.CryptoSettings.Secret = hex.EncodeToString(key)
secret := hex.EncodeToString(key)
err := settings.Save()
err := settings.Update(func() {
settings.CryptoSettings.Secret = secret
})
if err != nil {
logger.Error("Error save settings", err)
}
+14 -8
View File
@@ -23,19 +23,25 @@ type predefinedUser struct {
func skipInstall() {
logger.Info("Skip installation mode enabled")
if cSettings.AppSettings.JwtSecret == "" {
cSettings.AppSettings.JwtSecret = uuid.New().String()
}
var nodeSecret string
if settings.NodeSettings.Secret == "" {
settings.NodeSettings.Secret = uuid.New().String()
logger.Infof("Secret: %s", settings.NodeSettings.Secret)
}
err := settings.Update(func() {
if cSettings.AppSettings.JwtSecret == "" {
cSettings.AppSettings.JwtSecret = uuid.New().String()
}
err := settings.Save()
if settings.NodeSettings.Secret == "" {
nodeSecret = uuid.New().String()
settings.NodeSettings.Secret = nodeSecret
}
})
if err != nil {
logger.Fatal(err)
}
if nodeSecret != "" {
logger.Infof("Secret: %s", nodeSecret)
}
}
func registerPredefinedUser(ctx context.Context) {
+1 -2
View File
@@ -97,7 +97,6 @@ func mergeStructs(src, dst interface{}) {
dstField.Set(srcField)
}
}
return
}
func migrate(confPath string) {
@@ -191,7 +190,7 @@ func migrate(confPath string) {
}
}
err = Conf.SaveTo(confPath)
err = saveConfAtomically(Conf, confPath)
if err != nil {
logger.Fatalf("Fail to save the migrated settings: %v", err)
return
+81 -2
View File
@@ -2,7 +2,9 @@ package settings
import (
"log"
"os"
"strings"
"sync"
"time"
"github.com/0xJacky/Nginx-UI/internal/helper"
@@ -10,12 +12,14 @@ import (
"github.com/elliotchance/orderedmap/v3"
"github.com/spf13/cast"
"github.com/uozi-tech/cosy/settings"
"gopkg.in/ini.v1"
)
var (
buildTime string
LastModified string
EnvPrefix = "NGINX_UI_"
settingsMu sync.Mutex
)
var sections = orderedmap.NewOrderedMap[string, any]()
@@ -100,16 +104,91 @@ func Init(confPath string) {
}
}
func Update(fn func()) (err error) {
settingsMu.Lock()
defer settingsMu.Unlock()
fn()
return saveLocked()
}
func Save() (err error) {
// fix unable to save empty slice
settingsMu.Lock()
defer settingsMu.Unlock()
return saveLocked()
}
func saveLocked() (err error) {
// "fix" unable to save empty slice
if len(CertSettings.RecursiveNameservers) == 0 {
settings.Conf.Section("cert").Key("RecursiveNameservers").SetValue("")
}
err = settings.Save()
settings.ReflectFrom("app", settings.AppSettings)
settings.ReflectFrom("server", settings.ServerSettings)
settings.ReflectFrom("log", settings.LogSettings)
settings.ReflectFrom("sls", settings.SLSSettings)
for name, ptr := range sections.AllFromFront() {
settings.ReflectFrom(name, ptr)
}
err = saveConfAtomically(settings.Conf, settings.ConfPath)
if err != nil {
return
}
err = settings.Reload()
if err != nil {
return
}
err = settings.MapTo("app", settings.AppSettings)
if err != nil {
return
}
err = settings.MapTo("server", settings.ServerSettings)
if err != nil {
return
}
err = settings.MapTo("log", settings.LogSettings)
if err != nil {
return
}
err = settings.MapTo("sls", settings.SLSSettings)
if err != nil {
return
}
for name, ptr := range sections.AllFromFront() {
err = settings.MapTo(name, ptr)
if err != nil {
return
}
}
return
}
func saveConfAtomically(conf *ini.File, confPath string) (err error) {
tmpPath := confPath + ".tmp"
err = conf.SaveTo(tmpPath)
if err != nil {
return
}
err = os.Rename(tmpPath, confPath)
if err != nil {
_ = os.Remove(tmpPath)
return
}
return
}