Initial Work on Backend Interface Management

This commit is contained in:
Samuel Lorch 2023-03-31 17:08:17 +02:00
parent d54ceb8a0f
commit a90e7648db
10 changed files with 196 additions and 12 deletions

View file

@ -0,0 +1,47 @@
package interfaces
import (
"bytes"
"fmt"
"os"
"os/exec"
"nfsense.net/nfsense/internal/definitions"
)
func GenerateInterfacesFile(conf definitions.Config) (string, error) {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "interfaces.tmpl", conf)
if err != nil {
return "", fmt.Errorf("executing template: %w", err)
}
return buf.String(), nil
}
func ApplyInterfacesFile(content string) (string, error) {
f, err := os.Create("interfaces.conf")
if err != nil {
return "", fmt.Errorf("creating File: %w", err)
}
_, err = f.WriteString(content + "\n")
if err != nil {
return "", fmt.Errorf("writing File: %w", err)
}
err = f.Sync()
if err != nil {
return "", fmt.Errorf("syncing File: %w", err)
}
cmd := exec.Command("ifreload", "-a")
var out bytes.Buffer
cmd.Stdout = &out
err = cmd.Run()
if err != nil {
return "", fmt.Errorf("reloading Interfaces: %w", err)
}
return out.String(), nil
}

View file

@ -0,0 +1,19 @@
package interfaces
import (
"embed"
"text/template"
)
//go:embed template
var templateFS embed.FS
var templates *template.Template
func init() {
var err error
templates, err = template.New("").ParseFS(templateFS, "template/*.tmpl")
if err != nil {
panic(err)
}
}