From 33ebe1a0b241a738be16bd97b1eeb85b6f3b1b93 Mon Sep 17 00:00:00 2001 From: Finn Date: Sun, 3 Nov 2024 23:41:38 -0800 Subject: [PATCH] freeswitch container: fix config generator, add support for static xml configs --- .../autoload_configs/modules.conf.xml | 2 +- .../freeswitch/dynamic-xmlconfig/main.go | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/containers/freeswitch/dynamic-xmlconfig/autoload_configs/modules.conf.xml b/containers/freeswitch/dynamic-xmlconfig/autoload_configs/modules.conf.xml index 7d577c4..edc9b6e 100644 --- a/containers/freeswitch/dynamic-xmlconfig/autoload_configs/modules.conf.xml +++ b/containers/freeswitch/dynamic-xmlconfig/autoload_configs/modules.conf.xml @@ -1,6 +1,6 @@ - {{ $_, $module := range .Modules }}{{ end }} + {{ range $_, $module := .Modules }}{{ end }} diff --git a/containers/freeswitch/dynamic-xmlconfig/main.go b/containers/freeswitch/dynamic-xmlconfig/main.go index 44efb8f..feab103 100644 --- a/containers/freeswitch/dynamic-xmlconfig/main.go +++ b/containers/freeswitch/dynamic-xmlconfig/main.go @@ -2,9 +2,13 @@ package main import ( "embed" + "errors" "fmt" + "io" + "io/fs" "net/url" "os" + "path/filepath" "text/template" "github.com/kelseyhightower/envconfig" @@ -17,6 +21,7 @@ type Options struct { LogLevel string `envconfig:"LOG_LEVEL" default:"info"` Gateway Gateway `envconfig:"GATEWAY"` Modules []string `envconfig:"MODULES" default:"mod_event_socket,mod_sofia,mod_db,mod_dialplan_xml,mod_g723_1,mod_g729,mod_amr,mod_b64,mod_opus,mod_av,mod_sndfile,mod_native_file,mod_png,mod_local_stream,mod_tone_stream,mod_lua,mod_say_en"` + StaticXMLDir string `envconfig:"STATIC_XML_DIR" default:"/config"` } type Gateway struct { @@ -141,6 +146,48 @@ func main() { } fmt.Println("") + + staticConfigDirectories, err := os.ReadDir(options.StaticXMLDir) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return + } + panic(err) + } + + for _, entry := range staticConfigDirectories { + if !entry.IsDir() { + continue + } + fmt.Printf("
\n", entry.Name()) + + filepath.WalkDir(filepath.Join(options.StaticXMLDir, entry.Name()), func(path string, d fs.DirEntry, err error) error { + if d.IsDir() { + return nil + } + + fmt.Printf("\n", path) + if err != nil { + fmt.Printf("", err) + return err + } + + f, err := os.Open(path) + if err != nil { + panic(err) + } + defer f.Close() + + data, err := io.ReadAll(f) + if err != nil { + panic(err) + } + fmt.Println(string(data)) + + return nil + }) + fmt.Println("
") + } } func (g *Gateway) Decode(value string) error {