From e2d276c4fc10584c7800568ecdd7cd6ed8346ef7 Mon Sep 17 00:00:00 2001 From: yanghuanglin Date: Thu, 14 Sep 2023 18:36:35 +0800 Subject: [PATCH] start to config with toml (not finish) --- cmd/frps-panel/cmd.go | 24 ++++++++++++++++++++++++ cmd/frps-panel/config.go | 31 +++++++++++++++++++++++++++++++ config/frps-panel.toml | 39 +++++++++++++++++++++++++++++++++++++++ go.mod | 6 +++--- 4 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 cmd/frps-panel/config.go create mode 100644 config/frps-panel.toml diff --git a/cmd/frps-panel/cmd.go b/cmd/frps-panel/cmd.go index 101dec9..8929df2 100644 --- a/cmd/frps-panel/cmd.go +++ b/cmd/frps-panel/cmd.go @@ -4,6 +4,7 @@ import ( "errors" "frps-panel/pkg/server" "frps-panel/pkg/server/controller" + "github.com/pelletier/go-toml/v2" "github.com/spf13/cobra" "gopkg.in/ini.v1" "io/fs" @@ -69,6 +70,25 @@ func Execute() { } func ParseConfigFile(file string) (controller.HandleController, server.TLS, error) { + + var config Config + readFile, _ := os.ReadFile("/Volumes/Working/Works/Git Sources/frps-panel/config/frps-panel.toml") + _ = toml.Unmarshal(readFile, &config) + log.Printf("%v", config) + f, err := os.Create("/Volumes/Working/Works/Git Sources/frps-panel/config/frps-panel-new.toml") + if err != nil { + log.Fatal(err) + } + if err := toml.NewEncoder(f).Encode(config); err != nil { + // failed to encode + log.Fatal(err) + } + if err := f.Close(); err != nil { + // failed to close the file + log.Fatal(err) + + } + common := controller.CommonInfo{} users := make(map[string]controller.TokenInfo) ports := make(map[string][]string) @@ -253,3 +273,7 @@ func ParseConfigFile(file string) (controller.HandleController, server.TLS, erro Version: version, }, tls, nil } + +func decode() { + +} diff --git a/cmd/frps-panel/config.go b/cmd/frps-panel/config.go new file mode 100644 index 0000000..8bc02b5 --- /dev/null +++ b/cmd/frps-panel/config.go @@ -0,0 +1,31 @@ +package main + +type Config struct { + Common CommonInfo + Tokens []TokenInfo +} + +type CommonInfo struct { + PluginAddr string `toml:"plugin_addr" commented:"true"` + PluginPort int `toml:"plugin_port"` + AdminUser string `toml:"admin_user"` + AdminPwd string `toml:"admin_pwd"` + AdminKeepTime int `toml:"admin_keep_time"` + TlsMode bool `toml:"tls_mode"` + TlsCertFile string `toml:"tls_cert_file"` + TlsKeyFile string `toml:"tls_key_file"` + DashboardAddr string `toml:"dashboard_addr"` + DashboardPort int `toml:"dashboard_port"` + DashboardUser string `toml:"dashboard_user"` + DashboardPwd string `toml:"dashboard_pwd"` +} + +type TokenInfo struct { + User string `toml:"user" json:"user" form:"user"` + Token string `toml:"token" json:"token" form:"token"` + Comment string `toml:"comment" json:"comment" form:"comment"` + Ports []any `toml:"ports" json:"ports" from:"ports"` + Domains []string `toml:"domains" json:"domains" from:"domains"` + Subdomains []string `toml:"subdomains" json:"subdomains" from:"subdomains"` + Status bool `toml:"status" json:"status" form:"status"` +} diff --git a/config/frps-panel.toml b/config/frps-panel.toml new file mode 100644 index 0000000..01b72c0 --- /dev/null +++ b/config/frps-panel.toml @@ -0,0 +1,39 @@ +# basic options +[common] +# frps panel config info +plugin_addr = "127.0.0.1" #aadr +plugin_port = 7200 +admin_user = "admin" +admin_pwd = "admin" +# specified login state keep time +admin_keep_time = 0 + +# enable tls +tls_mode = false +# tls_cert_file = cert.crt +# tls_key_file = cert.key + +# frp dashboard info +dashboard_addr = "127.0.0.1" +dashboard_port = 7500 +dashboard_user = "admin" +dashboard_pwd = "admin" + +# 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 diff --git a/go.mod b/go.mod index e8d583d..333c359 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,11 @@ go 1.21 require ( github.com/fatedier/frp v0.34.1 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 ) @@ -17,7 +20,6 @@ require ( github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb // indirect github.com/fatedier/golib v0.1.1-0.20200901083111-1f870741e185 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect - github.com/gin-contrib/sessions v0.0.5 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect @@ -34,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 @@ -42,7 +43,6 @@ require ( golang.org/x/crypto v0.11.0 // indirect golang.org/x/net v0.12.0 // indirect golang.org/x/sys v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect )