mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 17:49: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 bootstrap node (auto-selects identity and data dir)
|
||||||
run-node:
|
run-node:
|
||||||
@echo "Starting bootstrap 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
|
# 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
|
# 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
|
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)
|
logger := setup_logger(logging.ComponentNode)
|
||||||
|
|
||||||
dataDir = flag.String("data", "", "Data directory (auto-detected if not provided)")
|
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")
|
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)")
|
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/)")
|
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")
|
help = flag.Bool("help", false, "Show help")
|
||||||
flag.Parse()
|
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
|
// 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)
|
logger := setup_logger(logging.ComponentNode)
|
||||||
|
|
||||||
// Apply RQLite HTTP port override
|
// 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
|
cfg.Database.RQLiteJoinAddress = *rqlJoinAddr
|
||||||
logger.ComponentInfo(logging.ComponentNode, "Setting RQLite join address", zap.String("address", *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() {
|
func main() {
|
||||||
logger := setup_logger(logging.ComponentNode)
|
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)
|
disable_anon_proxy(disableAnon)
|
||||||
check_if_should_open_help(help)
|
check_if_should_open_help(help)
|
||||||
@ -154,7 +160,7 @@ func main() {
|
|||||||
logger.ComponentInfo(logging.ComponentNode, "Default configuration loaded successfully")
|
logger.ComponentInfo(logging.ComponentNode, "Default configuration loaded successfully")
|
||||||
|
|
||||||
// Apply command line argument overrides
|
// 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")
|
logger.ComponentInfo(logging.ComponentNode, "Command line arguments applied to configuration")
|
||||||
|
|
||||||
// LibP2P uses configurable port (default 4001); RQLite uses 5001 (HTTP) and 7001 (Raft)
|
// 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
|
DHTPrefix string `yaml:"dht_prefix"` // DHT protocol prefix
|
||||||
DiscoveryInterval time.Duration `yaml:"discovery_interval"` // Discovery announcement interval
|
DiscoveryInterval time.Duration `yaml:"discovery_interval"` // Discovery announcement interval
|
||||||
BootstrapPort int `yaml:"bootstrap_port"` // Default port for bootstrap nodes
|
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
|
// SecurityConfig contains security-related configuration
|
||||||
@ -119,6 +121,8 @@ func DefaultConfig() *Config {
|
|||||||
EnableDHT: false, // Disabled - conflicts with Anyone protocol anonymity
|
EnableDHT: false, // Disabled - conflicts with Anyone protocol anonymity
|
||||||
DHTPrefix: "/network/kad/1.0.0",
|
DHTPrefix: "/network/kad/1.0.0",
|
||||||
DiscoveryInterval: time.Second * 15, // Back to 15 seconds for testing
|
DiscoveryInterval: time.Second * 15, // Back to 15 seconds for testing
|
||||||
|
HttpAdvAddress: "",
|
||||||
|
RaftAdvAddress: "",
|
||||||
},
|
},
|
||||||
Security: SecurityConfig{
|
Security: SecurityConfig{
|
||||||
EnableTLS: false,
|
EnableTLS: false,
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
// RQLiteManager manages an RQLite node instance
|
// RQLiteManager manages an RQLite node instance
|
||||||
type RQLiteManager struct {
|
type RQLiteManager struct {
|
||||||
config *config.DatabaseConfig
|
config *config.DatabaseConfig
|
||||||
|
discoverConfig *config.DiscoveryConfig
|
||||||
dataDir string
|
dataDir string
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
cmd *exec.Cmd
|
cmd *exec.Cmd
|
||||||
@ -57,9 +58,10 @@ func (r *RQLiteManager) waitForSQLAvailable(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewRQLiteManager creates a new RQLite manager
|
// 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{
|
return &RQLiteManager{
|
||||||
config: cfg,
|
config: cfg,
|
||||||
|
discoverConfig: discoveryCfg,
|
||||||
dataDir: dataDir,
|
dataDir: dataDir,
|
||||||
logger: logger,
|
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)
|
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
|
// Build RQLite command
|
||||||
args := []string{
|
args := []string{
|
||||||
"-http-addr", fmt.Sprintf("0.0.0.0:%d", r.config.RQLitePort),
|
"-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),
|
"-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")
|
n.logger.Info("Starting RQLite database")
|
||||||
|
|
||||||
// Create RQLite manager
|
// 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
|
// Start RQLite
|
||||||
if err := n.rqliteManager.Start(ctx); err != nil {
|
if err := n.rqliteManager.Start(ctx); err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user