package main import ( "time" ) type Config struct { Port int AuthCode string PeerID string Peers []string Domain string NodesEnabled bool CrawlerEnabled bool WebsiteEnabled bool LogLevel int } var defaultConfig = Config{ Port: 5000, Domain: "localhost", Peers: []string{}, AuthCode: generateStrongRandomString(64), NodesEnabled: true, CrawlerEnabled: true, WebsiteEnabled: true, LogLevel: 1, } const configFilePath = "config.ini" var config Config func main() { err := initConfig() if err != nil { printErr("Error during initialization:") return } loadNodeConfig() go startFileWatcher() go checkMasterHeartbeat() if config.AuthCode == "" { config.AuthCode = generateStrongRandomString(64) printInfo("Generated connection code: %s\n", config.AuthCode) saveConfig(config) } // Generate Host ID hostID, nodeErr := generateHostID() if nodeErr != nil { printErr("Failed to generate host ID: %v", nodeErr) } config.PeerID = hostID if len(config.Peers) > 0 { time.Sleep(2 * time.Second) // Give some time for connections to establish startElection() } go startNodeClient() runServer() }