Search/init.go

98 lines
2.2 KiB
Go
Raw Normal View History

2024-06-12 14:26:50 +02:00
package main
import (
"flag"
"os"
2024-08-08 13:35:50 +02:00
"time"
2024-06-12 14:26:50 +02:00
)
type Config struct {
2024-10-13 00:04:46 +02:00
Port int
AuthCode string
PeerID string
Peers []string
Domain string
NodesEnabled bool
CrawlerEnabled bool
WebsiteEnabled bool
LogLevel int
HardCacheDuration time.Duration
2024-10-14 22:15:38 +02:00
HardCacheEnabled bool
2024-06-12 14:26:50 +02:00
}
var defaultConfig = Config{
2024-10-13 00:04:46 +02:00
Port: 5000,
Domain: "localhost",
Peers: []string{},
AuthCode: generateStrongRandomString(64),
NodesEnabled: true,
CrawlerEnabled: true,
WebsiteEnabled: true,
LogLevel: 1,
HardCacheDuration: 0,
2024-06-12 14:26:50 +02:00
}
2024-08-08 15:03:33 +02:00
const configFilePath = "config.ini"
2024-06-12 14:26:50 +02:00
2024-07-05 03:08:35 +02:00
var config Config
2024-06-12 14:26:50 +02:00
func main() {
// Command-line flags
portFlag := flag.Int("port", 0, "Port number to run the application (overrides config)")
domainFlag := flag.String("domain", "", "Domain address for the application (overrides config)")
skipConfigFlag := flag.Bool("skip-config-check", false, "Skip interactive prompts and load config.ini")
// Parse command-line flags
flag.Parse()
if *skipConfigFlag {
// Skip interactive configuration
if _, err := os.Stat(configFilePath); err == nil {
// Load from config file if it exists
config = loadConfig()
} else {
// Use defaults if config file does not exist
config = defaultConfig
saveConfig(config) // Save the defaults to config.ini
printInfo("Configuration saved to %s", configFilePath)
}
} else {
// Initialize configuration interactively or from config file
err := initConfig()
if err != nil {
printErr("Error during initialization:")
return
}
}
// Override with command-line arguments if provided
if *portFlag != 0 {
config.Port = *portFlag
}
if *domainFlag != "" {
config.Domain = *domainFlag
2024-06-12 14:26:50 +02:00
}
2024-06-30 23:20:52 +02:00
loadNodeConfig()
2024-07-05 03:08:35 +02:00
if config.AuthCode == "" {
config.AuthCode = generateStrongRandomString(64)
2024-08-10 13:27:23 +02:00
printInfo("Generated connection code: %s\n", config.AuthCode)
2024-07-05 03:08:35 +02:00
saveConfig(config)
}
// Generate Host ID
hostID, nodeErr := generateHostID()
2024-08-08 13:35:50 +02:00
if nodeErr != nil {
2024-08-10 13:27:23 +02:00
printErr("Failed to generate host ID: %v", nodeErr)
2024-08-08 13:35:50 +02:00
}
config.PeerID = hostID
2024-08-08 13:35:50 +02:00
2024-10-25 13:54:29 +02:00
InitializeLanguage("en") // Initialize language before generating OpenSearch
generateOpenSearchXML(config)
2024-08-08 13:35:50 +02:00
go startNodeClient()
2024-06-12 14:26:50 +02:00
runServer()
}