mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-05-20 22:47:29 +08:00
Generate gateway token during onboard
This commit is contained in:
@@ -44,6 +44,9 @@ func ensureConfigOnboard(configPath string, defaults *config.Config) (string, er
|
|||||||
if defaults == nil {
|
if defaults == nil {
|
||||||
return "", fmt.Errorf("defaults is nil")
|
return "", fmt.Errorf("defaults is nil")
|
||||||
}
|
}
|
||||||
|
if defaults.Gateway.Token == "" {
|
||||||
|
defaults.Gateway.Token = config.DefaultConfig().Gateway.Token
|
||||||
|
}
|
||||||
|
|
||||||
exists := true
|
exists := true
|
||||||
if _, err := os.Stat(configPath); os.IsNotExist(err) {
|
if _, err := os.Stat(configPath); os.IsNotExist(err) {
|
||||||
|
|||||||
31
cmd/clawgo/cmd_onboard_test.go
Normal file
31
cmd/clawgo/cmd_onboard_test.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"clawgo/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestEnsureConfigOnboardGeneratesGatewayToken(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
configPath := t.TempDir() + "/config.json"
|
||||||
|
cfg := config.DefaultConfig()
|
||||||
|
cfg.Gateway.Token = ""
|
||||||
|
|
||||||
|
state, err := ensureConfigOnboard(configPath, cfg)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("ensureConfigOnboard failed: %v", err)
|
||||||
|
}
|
||||||
|
if state != "created" {
|
||||||
|
t.Fatalf("unexpected state: %s", state)
|
||||||
|
}
|
||||||
|
|
||||||
|
loaded, err := config.LoadConfig(configPath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("load config failed: %v", err)
|
||||||
|
}
|
||||||
|
if loaded.Gateway.Token == "" {
|
||||||
|
t.Fatalf("expected gateway token to be generated")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"crypto/rand"
|
||||||
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@@ -510,7 +512,7 @@ func DefaultConfig() *Config {
|
|||||||
Gateway: GatewayConfig{
|
Gateway: GatewayConfig{
|
||||||
Host: "0.0.0.0",
|
Host: "0.0.0.0",
|
||||||
Port: 18790,
|
Port: 18790,
|
||||||
Token: "",
|
Token: generateGatewayToken(),
|
||||||
},
|
},
|
||||||
Cron: CronConfig{
|
Cron: CronConfig{
|
||||||
MinSleepSec: 1,
|
MinSleepSec: 1,
|
||||||
@@ -568,6 +570,14 @@ func DefaultConfig() *Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateGatewayToken() string {
|
||||||
|
var buf [16]byte
|
||||||
|
if _, err := rand.Read(buf[:]); err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return "cg_" + hex.EncodeToString(buf[:])
|
||||||
|
}
|
||||||
|
|
||||||
func LoadConfig(path string) (*Config, error) {
|
func LoadConfig(path string) (*Config, error) {
|
||||||
cfg := DefaultConfig()
|
cfg := DefaultConfig()
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,15 @@ package config
|
|||||||
|
|
||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
|
func TestDefaultConfigGeneratesGatewayToken(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
cfg := DefaultConfig()
|
||||||
|
if cfg.Gateway.Token == "" {
|
||||||
|
t.Fatalf("expected default gateway token")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestValidateSubagentsAllowsKnownPeers(t *testing.T) {
|
func TestValidateSubagentsAllowsKnownPeers(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user