mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-11 09:18:50 +00:00
Refactor configuration handling in CLI and node package. Updated default config file naming based on node type and enhanced gateway config generation to include bootstrap peers. Improved data directory path handling by expanding environment variables and user home directory.
This commit is contained in:
parent
83c498892c
commit
b8af8e0c98
@ -631,7 +631,7 @@ func handleConfigInit(args []string) {
|
||||
// Parse flags
|
||||
var (
|
||||
cfgType = "node"
|
||||
name = "node.yaml"
|
||||
name = "" // Will be set based on type if not provided
|
||||
id string
|
||||
listenPort = 4001
|
||||
rqliteHTTPPort = 5001
|
||||
@ -700,6 +700,18 @@ func handleConfigInit(args []string) {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Set default name based on type if not provided
|
||||
if name == "" {
|
||||
switch cfgType {
|
||||
case "bootstrap":
|
||||
name = "bootstrap.yaml"
|
||||
case "gateway":
|
||||
name = "gateway.yaml"
|
||||
default:
|
||||
name = "node.yaml"
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure config directory exists
|
||||
configDir, err := config.EnsureConfigDir()
|
||||
if err != nil {
|
||||
@ -725,7 +737,7 @@ func handleConfigInit(args []string) {
|
||||
case "bootstrap":
|
||||
configContent = generateBootstrapConfig(name, id, listenPort, rqliteHTTPPort, rqliteRaftPort)
|
||||
case "gateway":
|
||||
configContent = generateGatewayConfig()
|
||||
configContent = generateGatewayConfig(bootstrapPeers)
|
||||
}
|
||||
|
||||
// Write config file
|
||||
@ -899,12 +911,31 @@ logging:
|
||||
`, nodeID, listenPort, dataDir, dataDir, rqliteHTTPPort, rqliteRaftPort, 4001, rqliteHTTPPort, rqliteRaftPort)
|
||||
}
|
||||
|
||||
func generateGatewayConfig() string {
|
||||
return `listen_addr: ":6001"
|
||||
func generateGatewayConfig(bootstrapPeers string) string {
|
||||
var peers []string
|
||||
if bootstrapPeers != "" {
|
||||
for _, p := range strings.Split(bootstrapPeers, ",") {
|
||||
if p = strings.TrimSpace(p); p != "" {
|
||||
peers = append(peers, p)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var peersYAML strings.Builder
|
||||
if len(peers) == 0 {
|
||||
peersYAML.WriteString(" bootstrap_peers: []")
|
||||
} else {
|
||||
peersYAML.WriteString(" bootstrap_peers:\n")
|
||||
for _, p := range peers {
|
||||
fmt.Fprintf(&peersYAML, " - \"%s\"\n", p)
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`listen_addr: ":6001"
|
||||
client_namespace: "default"
|
||||
rqlite_dsn: ""
|
||||
bootstrap_peers: []
|
||||
`
|
||||
%s
|
||||
`, peersYAML.String())
|
||||
}
|
||||
|
||||
func showHelp() {
|
||||
|
||||
@ -6,6 +6,7 @@ import (
|
||||
mathrand "math/rand"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
@ -384,6 +385,16 @@ func (n *Node) startLibP2P() error {
|
||||
func (n *Node) loadOrCreateIdentity() (crypto.PrivKey, error) {
|
||||
identityFile := filepath.Join(n.config.Node.DataDir, "identity.key")
|
||||
|
||||
// Expand ~ in data directory path
|
||||
identityFile = os.ExpandEnv(identityFile)
|
||||
if strings.HasPrefix(identityFile, "~") {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to determine home directory: %w", err)
|
||||
}
|
||||
identityFile = filepath.Join(home, identityFile[1:])
|
||||
}
|
||||
|
||||
// Try to load existing identity using the shared package
|
||||
if _, err := os.Stat(identityFile); err == nil {
|
||||
info, err := encryption.LoadIdentity(identityFile)
|
||||
@ -489,8 +500,19 @@ func (n *Node) Stop() error {
|
||||
func (n *Node) Start(ctx context.Context) error {
|
||||
n.logger.Info("Starting network node", zap.String("data_dir", n.config.Node.DataDir))
|
||||
|
||||
// Expand ~ in data directory path
|
||||
dataDir := n.config.Node.DataDir
|
||||
dataDir = os.ExpandEnv(dataDir)
|
||||
if strings.HasPrefix(dataDir, "~") {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to determine home directory: %w", err)
|
||||
}
|
||||
dataDir = filepath.Join(home, dataDir[1:])
|
||||
}
|
||||
|
||||
// Create data directory
|
||||
if err := os.MkdirAll(n.config.Node.DataDir, 0755); err != nil {
|
||||
if err := os.MkdirAll(dataDir, 0755); err != nil {
|
||||
return fmt.Errorf("failed to create data directory: %w", err)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user