wip new cfg params
This commit is contained in:
parent
44b25ed9d5
commit
2e8fa14df9
7 changed files with 141 additions and 49 deletions
59
config.go
59
config.go
|
@ -2,7 +2,6 @@ package main
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
|
@ -18,7 +17,7 @@ func initConfig() error {
|
|||
return createConfig()
|
||||
}
|
||||
|
||||
fmt.Println("Configuration file already exists.")
|
||||
printInfo("Configuration file already exists.")
|
||||
config = loadConfig()
|
||||
return nil
|
||||
}
|
||||
|
@ -26,12 +25,12 @@ func initConfig() error {
|
|||
func createConfig() error {
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
|
||||
fmt.Println("Configuration file not found.")
|
||||
fmt.Print("Do you want to use default values? (yes/no): ")
|
||||
printMessage("Configuration file not found.")
|
||||
printMessage("Do you want to use default values? (yes/no): ")
|
||||
useDefaults, _ := reader.ReadString('\n')
|
||||
|
||||
if strings.TrimSpace(useDefaults) != "yes" {
|
||||
fmt.Print("Enter port (default 5000): ")
|
||||
printMessage("Enter port (default 5000): ")
|
||||
portStr, _ := reader.ReadString('\n')
|
||||
if portStr != "\n" {
|
||||
port, err := strconv.Atoi(strings.TrimSpace(portStr))
|
||||
|
@ -42,7 +41,7 @@ func createConfig() error {
|
|||
}
|
||||
}
|
||||
|
||||
fmt.Print("Enter your domain address (default localhost): ")
|
||||
printMessage("Enter your domain address (default localhost): ")
|
||||
domain, _ := reader.ReadString('\n')
|
||||
if domain != "\n" {
|
||||
config.Domain = strings.TrimSpace(domain)
|
||||
|
@ -53,10 +52,13 @@ func createConfig() error {
|
|||
|
||||
if config.AuthCode == "" {
|
||||
config.AuthCode = generateStrongRandomString(64)
|
||||
fmt.Printf("Generated connection code: %s\n", config.AuthCode)
|
||||
printMessage("Generated connection code: %s\n", config.AuthCode)
|
||||
}
|
||||
|
||||
config.NodesEnabled = len(config.Peers) > 0
|
||||
config.CrawlerEnabled = true
|
||||
config.WebsiteEnabled = true
|
||||
config.LogLevel = 1
|
||||
|
||||
saveConfig(config)
|
||||
return nil
|
||||
|
@ -73,17 +75,20 @@ func saveConfig(config Config) {
|
|||
sec.Key("Peers").SetValue(peers)
|
||||
sec.Key("Domain").SetValue(config.Domain)
|
||||
sec.Key("NodesEnabled").SetValue(strconv.FormatBool(config.NodesEnabled))
|
||||
sec.Key("CrawlerEnabled").SetValue(strconv.FormatBool(config.CrawlerEnabled))
|
||||
sec.Key("WebsiteEnabled").SetValue(strconv.FormatBool(config.WebsiteEnabled))
|
||||
sec.Key("LogLevel").SetValue(strconv.Itoa(config.LogLevel))
|
||||
|
||||
err := cfg.SaveTo(configFilePath)
|
||||
if err != nil {
|
||||
fmt.Println("Error writing to config file:", err)
|
||||
printErr("Error writing to config file: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func loadConfig() Config {
|
||||
cfg, err := ini.Load(configFilePath)
|
||||
if err != nil {
|
||||
log.Fatalf("Error opening config file: %v", err)
|
||||
printErr("Error opening config file: %v", err)
|
||||
}
|
||||
|
||||
port, err := cfg.Section("").Key("Port").Int()
|
||||
|
@ -110,13 +115,31 @@ func loadConfig() Config {
|
|||
nodesEnabled = len(peers) > 0 // Enable nodes if peers are configured
|
||||
}
|
||||
|
||||
crawlerEnabled, err := cfg.Section("").Key("CrawlerEnabled").Bool()
|
||||
if err != nil { // Default to true if not found
|
||||
crawlerEnabled = true
|
||||
}
|
||||
|
||||
websiteEnabled, err := cfg.Section("").Key("WebsiteEnabled").Bool()
|
||||
if err != nil { // Default to true if not found
|
||||
websiteEnabled = true
|
||||
}
|
||||
|
||||
logLevel, err := cfg.Section("").Key("LogLevel").Int()
|
||||
if err != nil || logLevel < 0 || logLevel > 4 { // Default to 1 if not found or out of range
|
||||
logLevel = 1
|
||||
}
|
||||
|
||||
config = Config{
|
||||
Port: port,
|
||||
AuthCode: cfg.Section("").Key("AuthCode").String(),
|
||||
PeerID: cfg.Section("").Key("PeerID").String(),
|
||||
Peers: peers,
|
||||
Domain: domain,
|
||||
NodesEnabled: nodesEnabled,
|
||||
Port: port,
|
||||
AuthCode: cfg.Section("").Key("AuthCode").String(),
|
||||
PeerID: cfg.Section("").Key("PeerID").String(),
|
||||
Peers: peers,
|
||||
Domain: domain,
|
||||
NodesEnabled: nodesEnabled,
|
||||
CrawlerEnabled: crawlerEnabled,
|
||||
WebsiteEnabled: websiteEnabled,
|
||||
LogLevel: logLevel,
|
||||
}
|
||||
|
||||
return config
|
||||
|
@ -127,7 +150,7 @@ var configLock sync.RWMutex
|
|||
func startFileWatcher() {
|
||||
watcher, err := fsnotify.NewWatcher()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
printErr("%v", err)
|
||||
}
|
||||
|
||||
go func() {
|
||||
|
@ -139,7 +162,7 @@ func startFileWatcher() {
|
|||
return
|
||||
}
|
||||
if event.Op&fsnotify.Write == fsnotify.Write {
|
||||
log.Println("Modified file:", event.Name)
|
||||
printInfo("Modified file: %v", event.Name)
|
||||
configLock.Lock()
|
||||
config = loadConfig()
|
||||
configLock.Unlock()
|
||||
|
@ -148,7 +171,7 @@ func startFileWatcher() {
|
|||
if !ok {
|
||||
return
|
||||
}
|
||||
log.Println("Error watching configuration file:", err)
|
||||
printWarn("Error watching configuration file: %v", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue