mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 12:09:07 +00:00
Add adv-addr flag for RQLite HTTP and Raft advertisement
Allows setting advertised addresses for RQLite via --adv-addr. Updates config and startup logic to pass these addresses to RQLite.
This commit is contained in:
parent
1f6a4cd80b
commit
135711bb97
2
Makefile
2
Makefile
@ -31,7 +31,7 @@ test:
|
||||
# Run bootstrap node (auto-selects identity and data dir)
|
||||
run-node:
|
||||
@echo "Starting bootstrap node..."
|
||||
go run ./cmd/node --data ./data/bootstrap --p2p-port $${P2P:-4001} --rqlite-http-port $${HTTP:-5001} --rqlite-raft-port $${RAFT:-7001} --disable-anonrc
|
||||
go run ./cmd/node --data ./data/bootstrap --p2p-port $${P2P:-4001} --rqlite-http-port $${HTTP:-5001} --rqlite-raft-port $${RAFT:-7001} --adv-addr $${ADV_ADDR:-127.0.0.1} --disable-anonrc
|
||||
|
||||
# Run second node (regular) - requires join address of bootstrap node
|
||||
# Usage: make run-node2 JOINADDR=/ip4/127.0.0.1/tcp/5001 HTTP=5002 RAFT=7002 P2P=4002
|
||||
|
@ -28,7 +28,7 @@ func setup_logger(component logging.Component) (logger *logging.ColoredLogger) {
|
||||
return logger
|
||||
}
|
||||
|
||||
func parse_and_return_network_flags() (dataDir, nodeID *string, p2pPort, rqlHTTP, rqlRaft *int, disableAnon *bool, rqlJoinAddr *string, help *bool) {
|
||||
func parse_and_return_network_flags() (dataDir, nodeID *string, p2pPort, rqlHTTP, rqlRaft *int, disableAnon *bool, rqlJoinAddr *string, advAddr *string, help *bool) {
|
||||
logger := setup_logger(logging.ComponentNode)
|
||||
|
||||
dataDir = flag.String("data", "", "Data directory (auto-detected if not provided)")
|
||||
@ -38,6 +38,7 @@ func parse_and_return_network_flags() (dataDir, nodeID *string, p2pPort, rqlHTTP
|
||||
rqlRaft = flag.Int("rqlite-raft-port", 7001, "RQLite Raft port")
|
||||
disableAnon = flag.Bool("disable-anonrc", false, "Disable Anyone proxy routing (defaults to enabled on 127.0.0.1:9050)")
|
||||
rqlJoinAddr = flag.String("rqlite-join-address", "", "RQLite address to join (e.g., /ip4/)")
|
||||
advAddr = flag.String("adv-addr", "127.0.0.1", "Default Addvertise address for rqlite and rafts")
|
||||
help = flag.Bool("help", false, "Show help")
|
||||
flag.Parse()
|
||||
|
||||
@ -109,7 +110,7 @@ func startNode(ctx context.Context, cfg *config.Config, port int) error {
|
||||
}
|
||||
|
||||
// load_args_into_config applies command line argument overrides to the config
|
||||
func load_args_into_config(cfg *config.Config, p2pPort, rqlHTTP, rqlRaft *int, rqlJoinAddr *string) {
|
||||
func load_args_into_config(cfg *config.Config, p2pPort, rqlHTTP, rqlRaft *int, rqlJoinAddr *string, advAddr *string) {
|
||||
logger := setup_logger(logging.ComponentNode)
|
||||
|
||||
// Apply RQLite HTTP port override
|
||||
@ -137,12 +138,17 @@ func load_args_into_config(cfg *config.Config, p2pPort, rqlHTTP, rqlRaft *int, r
|
||||
cfg.Database.RQLiteJoinAddress = *rqlJoinAddr
|
||||
logger.ComponentInfo(logging.ComponentNode, "Setting RQLite join address", zap.String("address", *rqlJoinAddr))
|
||||
}
|
||||
|
||||
if *advAddr != "" {
|
||||
cfg.Discovery.HttpAdvAddress = fmt.Sprintf("%s:%d", *advAddr, *rqlHTTP)
|
||||
cfg.Discovery.RaftAdvAddress = fmt.Sprintf("%s:%d", *advAddr, *rqlRaft)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
logger := setup_logger(logging.ComponentNode)
|
||||
|
||||
dataDir, nodeID, p2pPort, rqlHTTP, rqlRaft, disableAnon, rqlJoinAddr, help := parse_and_return_network_flags()
|
||||
dataDir, nodeID, p2pPort, rqlHTTP, rqlRaft, disableAnon, rqlJoinAddr, advAddr, help := parse_and_return_network_flags()
|
||||
|
||||
disable_anon_proxy(disableAnon)
|
||||
check_if_should_open_help(help)
|
||||
@ -154,7 +160,7 @@ func main() {
|
||||
logger.ComponentInfo(logging.ComponentNode, "Default configuration loaded successfully")
|
||||
|
||||
// Apply command line argument overrides
|
||||
load_args_into_config(cfg, p2pPort, rqlHTTP, rqlRaft, rqlJoinAddr)
|
||||
load_args_into_config(cfg, p2pPort, rqlHTTP, rqlRaft, rqlJoinAddr, advAddr)
|
||||
logger.ComponentInfo(logging.ComponentNode, "Command line arguments applied to configuration")
|
||||
|
||||
// LibP2P uses configurable port (default 4001); RQLite uses 5001 (HTTP) and 7001 (Raft)
|
||||
|
@ -48,6 +48,8 @@ type DiscoveryConfig struct {
|
||||
DHTPrefix string `yaml:"dht_prefix"` // DHT protocol prefix
|
||||
DiscoveryInterval time.Duration `yaml:"discovery_interval"` // Discovery announcement interval
|
||||
BootstrapPort int `yaml:"bootstrap_port"` // Default port for bootstrap nodes
|
||||
HttpAdvAddress string `yaml:"http_adv_address"` // HTTP advertisement address
|
||||
RaftAdvAddress string `yaml:"raft_adv_address"` // Raft advertisement
|
||||
}
|
||||
|
||||
// SecurityConfig contains security-related configuration
|
||||
@ -119,6 +121,8 @@ func DefaultConfig() *Config {
|
||||
EnableDHT: false, // Disabled - conflicts with Anyone protocol anonymity
|
||||
DHTPrefix: "/network/kad/1.0.0",
|
||||
DiscoveryInterval: time.Second * 15, // Back to 15 seconds for testing
|
||||
HttpAdvAddress: "",
|
||||
RaftAdvAddress: "",
|
||||
},
|
||||
Security: SecurityConfig{
|
||||
EnableTLS: false,
|
||||
|
@ -20,11 +20,12 @@ import (
|
||||
|
||||
// RQLiteManager manages an RQLite node instance
|
||||
type RQLiteManager struct {
|
||||
config *config.DatabaseConfig
|
||||
dataDir string
|
||||
logger *zap.Logger
|
||||
cmd *exec.Cmd
|
||||
connection *gorqlite.Connection
|
||||
config *config.DatabaseConfig
|
||||
discoverConfig *config.DiscoveryConfig
|
||||
dataDir string
|
||||
logger *zap.Logger
|
||||
cmd *exec.Cmd
|
||||
connection *gorqlite.Connection
|
||||
}
|
||||
|
||||
// waitForSQLAvailable waits until a simple query succeeds, indicating a leader is known and queries can be served.
|
||||
@ -57,11 +58,12 @@ func (r *RQLiteManager) waitForSQLAvailable(ctx context.Context) error {
|
||||
}
|
||||
|
||||
// NewRQLiteManager creates a new RQLite manager
|
||||
func NewRQLiteManager(cfg *config.DatabaseConfig, dataDir string, logger *zap.Logger) *RQLiteManager {
|
||||
func NewRQLiteManager(cfg *config.DatabaseConfig, discoveryCfg *config.DiscoveryConfig, dataDir string, logger *zap.Logger) *RQLiteManager {
|
||||
return &RQLiteManager{
|
||||
config: cfg,
|
||||
dataDir: dataDir,
|
||||
logger: logger,
|
||||
config: cfg,
|
||||
discoverConfig: discoveryCfg,
|
||||
dataDir: dataDir,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,9 +75,15 @@ func (r *RQLiteManager) Start(ctx context.Context) error {
|
||||
return fmt.Errorf("failed to create RQLite data directory: %w", err)
|
||||
}
|
||||
|
||||
if r.discoverConfig.HttpAdvAddress == "" {
|
||||
return fmt.Errorf("discovery config HttpAdvAddress is empty")
|
||||
}
|
||||
|
||||
// Build RQLite command
|
||||
args := []string{
|
||||
"-http-addr", fmt.Sprintf("0.0.0.0:%d", r.config.RQLitePort),
|
||||
"-http-adv-addr", r.discoverConfig.HttpAdvAddress,
|
||||
"-raft-adv-addr", r.discoverConfig.RaftAdvAddress,
|
||||
"-raft-addr", fmt.Sprintf("0.0.0.0:%d", r.config.RQLiteRaftPort),
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@ func (n *Node) startRQLite(ctx context.Context) error {
|
||||
n.logger.Info("Starting RQLite database")
|
||||
|
||||
// Create RQLite manager
|
||||
n.rqliteManager = database.NewRQLiteManager(&n.config.Database, n.config.Node.DataDir, n.logger.Logger)
|
||||
n.rqliteManager = database.NewRQLiteManager(&n.config.Database, &n.config.Discovery, n.config.Node.DataDir, n.logger.Logger)
|
||||
|
||||
// Start RQLite
|
||||
if err := n.rqliteManager.Start(ctx); err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user