package settings import ( "dns_service/utils" "fmt" "os" "strings" ) func SetSettings(new_settings map[string]any, old_settings map[string]any) (map[string]any, error) { data, err := os.ReadFile(os.Getenv("DNSMASQ_CONFIG")) if err != nil { return old_settings, err } new_data := strings.Replace( string(data), "cache-size="+fmt.Sprintf("%v", old_settings["cache_size"]), "cache-size="+fmt.Sprintf("%v", new_settings["cache_size"]), 1, ) err = os.WriteFile(os.Getenv("DNSMASQ_CONFIG"), []byte(new_data), 0644) if err != nil { return old_settings, err } var resolvs string new_resolvs := new_settings["resolv"].([]any) for i := range new_resolvs { resolvs += "nameserver " + new_resolvs[i].(string) + "\n" } var hosts string new_hosts := new_settings["hosts"].(map[string]any) for key, value := range new_hosts { hosts += key switch value.(type) { case []any: arrvalue := value.([]any) for i := range arrvalue { hosts += " " + arrvalue[i].(string) } hosts += "\n" break case string: hosts += " " + value.(string) + "\n" } } fmt.Println(resolvs, hosts) err = os.WriteFile("/etc/dnsmasq.conf.d/resolv.conf", []byte(resolvs), 0644) if err != nil { return old_settings, err } err = os.WriteFile("/etc/dnsmasq.conf.d/hosts", []byte(hosts), 0644) if err != nil { return old_settings, err } utils.RestartDnsmasq() return new_settings, nil }