From 856bb3e27b4bce6719c34d95e7f3bf4180ccce92 Mon Sep 17 00:00:00 2001 From: yanghuanglin Date: Fri, 15 Sep 2023 19:09:20 +0800 Subject: [PATCH] success write tokens to config with toml (not finish) --- assets/static/js/index-user-list.js | 3 +++ cmd/frps-panel/cmd.go | 8 +------ config/frps-panel.toml | 4 ++-- config/frps-tokens.toml | 35 ++++++++++++++--------------- go.mod | 3 +-- go.sum | 2 -- pkg/server/controller/controller.go | 5 ++++- pkg/server/controller/variables.go | 12 +++++++++- 8 files changed, 39 insertions(+), 33 deletions(-) diff --git a/assets/static/js/index-user-list.js b/assets/static/js/index-user-list.js index d1c69b5..af4d93b 100644 --- a/assets/static/js/index-user-list.js +++ b/assets/static/js/index-user-list.js @@ -422,6 +422,9 @@ var loadUserList = (function ($) { */ function add(data, index) { var loading = layui.layer.load(); + data.ports = data.ports.split(',') + data.domains = data.domains.split(',') + data.subdomains = data.subdomains.split(',') $.ajax({ url: '/add', type: 'post', diff --git a/cmd/frps-panel/cmd.go b/cmd/frps-panel/cmd.go index 9de7cc0..6d69ca3 100644 --- a/cmd/frps-panel/cmd.go +++ b/cmd/frps-panel/cmd.go @@ -111,15 +111,9 @@ func parseConfigFile(configFile, tokensFile string) (controller.HandleController } } - tokens := make(map[string]controller.TokenInfo) - - for _, token := range config.Tokens { - tokens[token.User] = token - } - return controller.HandleController{ CommonInfo: config.Common, - Tokens: tokens, + Tokens: config.Tokens.Tokens, Version: version, ConfigFile: configFile, TokensFile: tokensFile, diff --git a/config/frps-panel.toml b/config/frps-panel.toml index 1871aec..a4e3c3b 100644 --- a/config/frps-panel.toml +++ b/config/frps-panel.toml @@ -3,8 +3,8 @@ # frps panel config info plugin_addr = "127.0.0.1" #aadr plugin_port = 7200 -admin_user = "admin" -admin_pwd = "admin" +#admin_user = "admin" +#admin_pwd = "admin" # specified login state keep time admin_keep_time = 0 diff --git a/config/frps-tokens.toml b/config/frps-tokens.toml index c050bb9..b5b565a 100644 --- a/config/frps-tokens.toml +++ b/config/frps-tokens.toml @@ -1,18 +1,17 @@ -# token info -[[tokens]] -user = "user1" -token = "token1" -comment = "张三" -ports = ["1", "2", "3", "10-100"] -domains = ["aaa.com", "bbb.com"] -subdomains = ["a.com", "b.com"] -status = true - -[[tokens]] -user = "user2" -token = "token2" -comment = "李四" -ports = ["11", "22", "33", "110-200"] -domains = ["ccc.com", "ddd.com"] -subdomains = ["c.com", "d.com"] -status = true +[tokens] + [tokens.user1] + user = "user1" + token = "token1" + comment = "张三" + ports = ["1", "2", "3", "10-100"] + domains = ["aaa.com", "bbb.com"] + subdomains = ["a", "b"] + status = true + [tokens.user2] + user = "user2" + token = "token2" + comment = "李四" + ports = ["11", "22", "33", "110-200"] + domains = ["ccc.com", "ddd.com"] + subdomains = ["c", "d"] + status = true diff --git a/go.mod b/go.mod index b8c2660..5211096 100644 --- a/go.mod +++ b/go.mod @@ -8,9 +8,9 @@ require ( github.com/gin-contrib/i18n v1.0.0 github.com/gin-contrib/sessions v0.0.5 github.com/gin-gonic/gin v1.9.1 + github.com/pelletier/go-toml/v2 v2.0.9 github.com/spf13/cobra v0.0.3 golang.org/x/text v0.11.0 - gopkg.in/ini.v1 v1.67.0 ) require ( @@ -36,7 +36,6 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nicksnyder/go-i18n/v2 v2.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect diff --git a/go.sum b/go.sum index ac72ab6..3aadbdb 100644 --- a/go.sum +++ b/go.sum @@ -301,8 +301,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pkg/server/controller/controller.go b/pkg/server/controller/controller.go index ed15d5e..386aa50 100644 --- a/pkg/server/controller/controller.go +++ b/pkg/server/controller/controller.go @@ -355,11 +355,14 @@ func (c *HandleController) MakeAddTokenFunc() func(context *gin.Context) { return } + c.Tokens[info.User] = info + tokenFile, err := os.Create(c.TokensFile) if err != nil { log.Printf("error to crate file %v: %v", c.TokensFile, err) } - if err = toml.NewEncoder(tokenFile).Encode(c.Tokens); err != nil { + + if err = toml.NewEncoder(tokenFile).Encode(c.TokensList()); err != nil { log.Printf("error to encode tokens: %v", err) } if err = tokenFile.Close(); err != nil { diff --git a/pkg/server/controller/variables.go b/pkg/server/controller/variables.go index 2867ef2..080f437 100644 --- a/pkg/server/controller/variables.go +++ b/pkg/server/controller/variables.go @@ -39,7 +39,7 @@ type HTTPError struct { type Config struct { Common CommonInfo - Tokens []TokenInfo + Tokens } type CommonInfo struct { @@ -58,6 +58,10 @@ type CommonInfo struct { DashboardTls bool } +type Tokens struct { + Tokens map[string]TokenInfo `toml:"tokens"` +} + type TokenInfo struct { User string `toml:"user" json:"user" form:"user"` Token string `toml:"token" json:"token" form:"token"` @@ -112,3 +116,9 @@ type TokenEnable struct { func (e *HTTPError) Error() string { return e.Err.Error() } + +func (c *HandleController) TokensList() Tokens { + return Tokens{ + c.Tokens, + } +}