mirror of
https://github.com/speatzle/nfsense.git
synced 2025-09-13 15:19:08 +00:00
Initial Work on Backend Interface Management
This commit is contained in:
parent
d54ceb8a0f
commit
a90e7648db
10 changed files with 196 additions and 12 deletions
47
internal/interfaces/interfaces.go
Normal file
47
internal/interfaces/interfaces.go
Normal 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
|
||||
}
|
19
internal/interfaces/template.go
Normal file
19
internal/interfaces/template.go
Normal 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)
|
||||
}
|
||||
}
|
0
internal/interfaces/template/interfaces.tmpl
Normal file
0
internal/interfaces/template/interfaces.tmpl
Normal file
Loading…
Add table
Add a link
Reference in a new issue