feat: implemented all features besides wireguard
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func GenerateConfigTOML(cv ConfigValues) (string, error) {
|
||||
var sb strings.Builder
|
||||
|
||||
// [server]
|
||||
sb.WriteString("# Server Configuration\n")
|
||||
sb.WriteString("[server]\n")
|
||||
sb.WriteString(fmt.Sprintf("port = %s\n", cv.Server["port"]))
|
||||
sb.WriteString(fmt.Sprintf("timeout_seconds = %s\n", cv.Server["timeout"]))
|
||||
sb.WriteString(fmt.Sprintf("environment = %q\n", cv.Server["environment"]))
|
||||
sb.WriteString("\n")
|
||||
|
||||
// [database]
|
||||
sb.WriteString("# Database Configuration\n")
|
||||
sb.WriteString("[database]\n")
|
||||
sb.WriteString(fmt.Sprintf("type = %q\n", cv.Database["database_type"]))
|
||||
sb.WriteString(fmt.Sprintf("url = %q\n", cv.Database["database_url"]))
|
||||
sb.WriteString(fmt.Sprintf("max_conns = %s\n", cv.Database["max_conns"]))
|
||||
sb.WriteString(fmt.Sprintf("min_conns = %s\n", cv.Database["min_conns"]))
|
||||
sb.WriteString("\n")
|
||||
|
||||
// [certificate]
|
||||
sb.WriteString("# Certificate Options\n")
|
||||
sb.WriteString("[certificate]\n")
|
||||
sb.WriteString(fmt.Sprintf("cert_path = %q\n", "/app/certs/"+cv.Cert["cert_name"]))
|
||||
sb.WriteString(fmt.Sprintf("key_path = %q\n", "/app/certs/"+cv.Cert["key_name"]))
|
||||
sb.WriteString(fmt.Sprintf("ca_path = %q\n", "/app/certs/"+cv.Cert["ca_name"]))
|
||||
sb.WriteString(fmt.Sprintf("server_name = %q\n", cv.Cert["server_name"]))
|
||||
sb.WriteString("\n")
|
||||
|
||||
// [application] — hardcoded / pre-defined
|
||||
sb.WriteString("# Pre-defined options\n")
|
||||
sb.WriteString("[application]\n")
|
||||
sb.WriteString("erp = \"TOTVS\"\n")
|
||||
sb.WriteString("central_server_url = \"https://warden:8080\"\n")
|
||||
sb.WriteString("api_key = \"super secreto\"\n")
|
||||
sb.WriteString("\n")
|
||||
|
||||
// [log] — hardcoded defaults
|
||||
sb.WriteString("[log]\n")
|
||||
sb.WriteString("level = \"debug\"\n")
|
||||
sb.WriteString("format = \"text\" # Options: \"json\" or \"text\"\n")
|
||||
|
||||
return sb.String(), nil
|
||||
}
|
||||
|
||||
func WriteConfigFile(cv ConfigValues, path string) error {
|
||||
// Validate numeric fields before writing
|
||||
numericFields := map[string]string{
|
||||
"port": cv.Server["port"],
|
||||
"timeout": cv.Server["timeout"],
|
||||
"max_conns": cv.Database["max_conns"],
|
||||
"min_conns": cv.Database["min_conns"],
|
||||
}
|
||||
for field, val := range numericFields {
|
||||
if _, err := strconv.Atoi(val); err != nil {
|
||||
return fmt.Errorf("campo %q tem valor inválido: %q", field, val)
|
||||
}
|
||||
}
|
||||
|
||||
content, err := GenerateConfigTOML(cv)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(path, []byte(content), 0644)
|
||||
}
|
||||
Reference in New Issue
Block a user