1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package cluster
- import (
- "github.com/0xJacky/Nginx-UI/model"
- "github.com/0xJacky/Nginx-UI/query"
- "github.com/0xJacky/Nginx-UI/settings"
- "github.com/uozi-tech/cosy/logger"
- "gorm.io/gen/field"
- "net/url"
- "strings"
- )
- func RegisterPredefinedNodes() {
- if len(settings.ClusterSettings.Node) == 0 {
- return
- }
- q := query.Environment
- for _, nodeUrl := range settings.ClusterSettings.Node {
- func() {
- node, err := parseNodeUrl(nodeUrl)
- if err != nil {
- logger.Error(nodeUrl, err)
- return
- }
- if node.Name == "" {
- logger.Error(nodeUrl, "Node name is required")
- return
- }
- if node.URL == "" {
- logger.Error(nodeUrl, "Node URL is required")
- return
- }
- if node.Token == "" {
- logger.Error(nodeUrl, "Node Token is required")
- return
- }
- _, err = q.Where(q.URL.Eq(node.URL)).
- Attrs(field.Attrs(node)).
- FirstOrCreate()
- if err != nil {
- logger.Error(node.URL, err)
- }
- }()
- }
- }
- func parseNodeUrl(nodeUrl string) (env *model.Environment, err error) {
- u, err := url.Parse(nodeUrl)
- if err != nil {
- return
- }
- var sb strings.Builder
- sb.WriteString(u.Scheme)
- sb.WriteString("://")
- sb.WriteString(u.Host)
- sb.WriteString(u.Path)
- env = &model.Environment{
- Name: u.Query().Get("name"),
- URL: sb.String(),
- Token: u.Query().Get("node_secret"),
- Enabled: u.Query().Get("enabled") == "true",
- }
- return
- }
|