Files
wild-cloud/experimental/daemon/internal/handlers/dnsmasq.go
2025-06-26 08:28:52 -07:00

45 lines
1.5 KiB
Go

package handlers
import (
"encoding/json"
"log"
"net/http"
)
// GetDnsmasqConfigHandler handles requests to view the dnsmasq configuration
func (app *App) GetDnsmasqConfigHandler(w http.ResponseWriter, r *http.Request) {
if app.Config == nil || app.Config.IsEmpty() {
http.Error(w, "No configuration available. Please configure the system first.", http.StatusPreconditionFailed)
return
}
config := app.DnsmasqManager.Generate(app.Config)
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte(config))
}
// RestartDnsmasqHandler handles requests to restart the dnsmasq service
func (app *App) RestartDnsmasqHandler(w http.ResponseWriter, r *http.Request) {
if app.Config == nil || app.Config.IsEmpty() {
http.Error(w, "No configuration available. Please configure the system first.", http.StatusPreconditionFailed)
return
}
// Update dnsmasq config first
paths := app.DataManager.GetPaths()
if err := app.DnsmasqManager.WriteConfig(app.Config, paths.DnsmasqConf); err != nil {
log.Printf("Failed to update dnsmasq config: %v", err)
http.Error(w, "Failed to update dnsmasq config", http.StatusInternalServerError)
return
}
// Restart dnsmasq service
if err := app.DnsmasqManager.RestartService(); err != nil {
log.Printf("Failed to restart dnsmasq: %v", err)
http.Error(w, "Failed to restart dnsmasq service", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "restarted"})
}