Move the scripted networking to it's own file.

This commit is contained in:
root 2025-03-15 11:39:13 -04:00
parent a6b00f4c39
commit 1d3dad77a4
2 changed files with 50 additions and 31 deletions

37
main.go
View file

@ -5,7 +5,6 @@ import (
"os" "os"
"os/exec" "os/exec"
"path" "path"
"strconv"
"strings" "strings"
"text/template" "text/template"
@ -26,7 +25,6 @@ type SystemConfig struct {
} }
type NetworkingConfig struct { type NetworkingConfig struct {
proxy map[int]string
} }
type ServiceConfig struct { type ServiceConfig struct {
@ -49,6 +47,9 @@ func main() {
var err error var err error
var config Config var config Config
// Initialize structs for scripted configurations
ScriptedInit()
// Read user config file // Read user config file
{ {
file, err := os.ReadFile("goolinux.json") file, err := os.ReadFile("goolinux.json")
@ -87,9 +88,6 @@ func main() {
mergo.Merge(&config, systemConfig, mergo.WithOverride) mergo.Merge(&config, systemConfig, mergo.WithOverride)
} }
// Initialize any needed maps in the config
config.Networking.proxy = make(map[int]string)
// Parse user services // Parse user services
for name, service := range config.Services { for name, service := range config.Services {
var b strings.Builder var b strings.Builder
@ -145,38 +143,15 @@ func main() {
fmt.Println("Error: No port defined for proxy to", s.Proxy) fmt.Println("Error: No port defined for proxy to", s.Proxy)
return return
} }
port, err := strconv.Atoi(ports[0]) AddProxy(s.Proxy, ports[0])
if err != nil {
fmt.Println(err)
fmt.Printf("Error: proxy for %s has an invalid port definition: %s\n", s.Proxy, ports)
return
}
conflict, exists := config.Networking.proxy[port]
if exists == true {
fmt.Println("Error: Conflicting proxy settings:")
fmt.Printf(" %s:%s\n", conflict, port)
fmt.Printf(" %s:%s\n", s.Proxy, port)
}
config.Networking.proxy[port] = s.Proxy
} }
} }
} }
// Handle any special case (scripted) configs // Handle any special case (scripted) configs
{ {
// Expand Networking.proxy to Services.proxy.Config.scripted_proxy // Expand the proxy list to Services.proxy.Config.scripted_proxy
type proxy struct { config.Services["proxy"].Config["scripted_proxy"] = GetProxy()
Domain string
Port int
}
var p []proxy
for port, domain := range config.Networking.proxy {
p = append(p, proxy{Domain: domain, Port: port})
}
config.Services["proxy"].Config["scripted_proxy"] = p
} }
// Generate service config templates // Generate service config templates

44
scripted.go Normal file
View file

@ -0,0 +1,44 @@
package main
import (
"fmt"
"strconv"
)
type Proxy struct {
Domain string
Port int
}
var proxyList map[int]string
func ScriptedInit() {
proxyList = make(map[int]string)
}
func GetProxy() ([]Proxy) {
var p []Proxy
for port, domain := range proxyList {
p = append(p, Proxy{Domain: domain, Port: port})
}
return p
}
func AddProxy(domain string, port string) {
p, err := strconv.Atoi(port)
if err != nil {
fmt.Println(err)
fmt.Printf("Error: proxy for %s, port is not a number: %s\n", domain, port)
return
}
conflict, exists := proxyList[p]
if exists == true {
fmt.Println("Error: Conflicting proxy settings:")
fmt.Printf(" %s:%s\n", conflict, p)
fmt.Printf(" %s:%s\n", domain, p)
return
}
proxyList[p] = domain
}