1 parent
952587df4f
commit
efcb19aa2f
19 files changed
+276
-189
No files matched your search
+12
-19
@@ -4,28 +4,21 @@ import "strings"
|
||||
|
||||
func DecodeHosts(input string) map[string]any {
|
||||
result := make(map[string]any)
|
||||
pairs := strings.SplitSeq(input, "\n")
|
||||
lines := strings.Split(input, "\n")
|
||||
|
||||
for pair := range pairs {
|
||||
if pair == "" {
|
||||
for _, line := range lines {
|
||||
fields := strings.Fields(line)
|
||||
if len(fields) == 0 {
|
||||
continue
|
||||
}
|
||||
kv := strings.Split(pair, " ")
|
||||
if len(kv) == 2 {
|
||||
key := strings.TrimSpace(kv[0])
|
||||
value := strings.TrimSpace(kv[1])
|
||||
if key != "" {
|
||||
result[key] = value
|
||||
}
|
||||
continue
|
||||
}
|
||||
if len(kv) != 0 {
|
||||
key := strings.TrimSpace(kv[0])
|
||||
var value []string
|
||||
for i := 1; i < len(kv); i++ {
|
||||
value = append(value, kv[i])
|
||||
}
|
||||
result[key] = value
|
||||
|
||||
key := fields[0]
|
||||
if len(fields) == 1 {
|
||||
result[key] = []string{}
|
||||
} else if len(fields) == 2 {
|
||||
result[key] = fields[1]
|
||||
} else {
|
||||
result[key] = fields[1:]
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
+8
-12
@@ -4,19 +4,15 @@ import "strings"
|
||||
|
||||
func DecodeResolvs(input string) []string {
|
||||
var result []string
|
||||
pairs := strings.SplitSeq(input, "\n")
|
||||
lines := strings.Split(input, "\n")
|
||||
|
||||
for pair := range pairs {
|
||||
if pair == "" {
|
||||
continue
|
||||
}
|
||||
kv := strings.SplitN(pair, " ", 2)
|
||||
if len(kv) != 2 {
|
||||
continue
|
||||
}
|
||||
value := strings.TrimSpace(kv[1])
|
||||
if value != "" {
|
||||
result = append(result, value)
|
||||
for _, line := range lines {
|
||||
trimmedLine := strings.TrimSpace(line)
|
||||
if strings.HasPrefix(trimmedLine, "nameserver ") {
|
||||
value := strings.TrimPrefix(trimmedLine, "nameserver ")
|
||||
if value != "" {
|
||||
result = append(result, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
@@ -4,20 +4,22 @@ import "strings"
|
||||
|
||||
func DecodeSettings(input string, pairDelim string, kvDelim string) map[string]string {
|
||||
result := make(map[string]string)
|
||||
pairs := strings.SplitSeq(input, pairDelim)
|
||||
pairs := strings.Split(input, pairDelim)
|
||||
|
||||
for pair := range pairs {
|
||||
if pair == "" {
|
||||
for _, pair := range pairs {
|
||||
trimmedPair := strings.TrimSpace(pair)
|
||||
if trimmedPair == "" {
|
||||
continue
|
||||
}
|
||||
kv := strings.SplitN(pair, kvDelim, 2)
|
||||
|
||||
kv := strings.SplitN(trimmedPair, kvDelim, 2)
|
||||
if len(kv) != 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
key := strings.TrimSpace(kv[0])
|
||||
value := strings.TrimSpace(kv[1])
|
||||
if key != "" {
|
||||
result[key] = value
|
||||
result[key] = strings.TrimSpace(kv[1])
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// Helper to write JSON responses
|
||||
func RespondWithJSON(w http.ResponseWriter, data any, statusCode int) {
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
http.Error(w, "failed to marshal JSON", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(statusCode)
|
||||
w.Write(jsonData)
|
||||
}
|
||||
@@ -1,17 +1,26 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func RestartDnsmasq() {
|
||||
func RestartDnsmasq() error {
|
||||
var cmd *exec.Cmd
|
||||
switch os.Getenv("SYSTEM_INITIALIZATION") {
|
||||
case "rc":
|
||||
exec.Command("rc", "restart", "dnsmasq").Run()
|
||||
cmd = exec.Command("rc", "restart", "dnsmasq")
|
||||
case "openrc":
|
||||
exec.Command("rc-service", "dnsmasq", "restart").Run()
|
||||
cmd = exec.Command("rc-service", "dnsmasq", "restart")
|
||||
case "systemd":
|
||||
exec.Command("systemctl", "restart", "dnsmasq").Run()
|
||||
cmd = exec.Command("systemctl", "restart", "dnsmasq")
|
||||
default:
|
||||
return fmt.Errorf("unsupported system initialization: %s", os.Getenv("SYSTEM_INITIALIZATION"))
|
||||
}
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to restart dnsmasq: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in new issue
Block a user