fix: multi issues - TUN read loop, SDWAN routing for TenantID=0, WS keepalive 10s
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Version info (set via -ldflags)
|
||||
@@ -46,8 +47,9 @@ type ServerConfig struct {
|
||||
CertFile string `json:"certFile"`
|
||||
KeyFile string `json:"keyFile"`
|
||||
LogLevel int `json:"logLevel"` // 0=debug, 1=info, 2=warn, 3=error
|
||||
Token uint64 `json:"token"` // master token for auth
|
||||
JWTKey string `json:"jwtKey"` // auto-generated if empty
|
||||
Token uint64 `json:"token"` // master token for auth
|
||||
Tokens []uint64 `json:"tokens"` // additional tenant tokens
|
||||
JWTKey string `json:"jwtKey"` // auto-generated if empty
|
||||
|
||||
AdminUser string `json:"adminUser"`
|
||||
AdminPass string `json:"adminPass"`
|
||||
@@ -82,6 +84,18 @@ func (c *ServerConfig) FillFromEnv() {
|
||||
if v := os.Getenv("INP2PS_TOKEN"); v != "" {
|
||||
c.Token, _ = strconv.ParseUint(v, 10, 64)
|
||||
}
|
||||
if v := os.Getenv("INP2PS_TOKENS"); v != "" {
|
||||
parts := strings.Split(v, ",")
|
||||
for _, p := range parts {
|
||||
p = strings.TrimSpace(p)
|
||||
if p == "" {
|
||||
continue
|
||||
}
|
||||
if tv, err := strconv.ParseUint(p, 10, 64); err == nil {
|
||||
c.Tokens = append(c.Tokens, tv)
|
||||
}
|
||||
}
|
||||
}
|
||||
if v := os.Getenv("INP2PS_CERT"); v != "" {
|
||||
c.CertFile = v
|
||||
}
|
||||
@@ -96,8 +110,8 @@ func (c *ServerConfig) FillFromEnv() {
|
||||
}
|
||||
|
||||
func (c *ServerConfig) Validate() error {
|
||||
if c.Token == 0 {
|
||||
return fmt.Errorf("token is required (INP2PS_TOKEN or -token)")
|
||||
if c.Token == 0 && len(c.Tokens) == 0 {
|
||||
return fmt.Errorf("token is required (INP2PS_TOKEN or INP2PS_TOKENS)")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -108,6 +122,7 @@ type ClientConfig struct {
|
||||
ServerPort int `json:"serverPort"`
|
||||
Node string `json:"node"`
|
||||
Token uint64 `json:"token"`
|
||||
NodeSecret string `json:"nodeSecret,omitempty"`
|
||||
User string `json:"user,omitempty"`
|
||||
Insecure bool `json:"insecure"` // skip TLS verify
|
||||
|
||||
@@ -156,8 +171,8 @@ func (c *ClientConfig) Validate() error {
|
||||
if c.ServerHost == "" {
|
||||
return fmt.Errorf("serverHost is required")
|
||||
}
|
||||
if c.Token == 0 {
|
||||
return fmt.Errorf("token is required")
|
||||
if c.Token == 0 && c.NodeSecret == "" {
|
||||
return fmt.Errorf("token or nodeSecret is required")
|
||||
}
|
||||
if c.Node == "" {
|
||||
hostname, _ := os.Hostname()
|
||||
|
||||
Reference in New Issue
Block a user