This commit is contained in:
29
main.go
29
main.go
@@ -980,33 +980,40 @@ func (s *server) handleWhitelist(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
var body struct {
|
||||
Entry string `json:"ip"` // rückwärtskompatibel: Feld heißt weiter "ip"
|
||||
// optional: "entry" wäre semantisch besser; hier bleiben wir kompatibel
|
||||
}
|
||||
IP string `json:"ip"`
|
||||
} // GUI bleibt kompatibel
|
||||
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
||||
http.Error(w, "bad request", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
sRaw := strings.TrimSpace(body.Entry)
|
||||
raw := strings.TrimSpace(body.IP)
|
||||
|
||||
// 1) Einzel-IP?
|
||||
if addr, err := netip.ParseAddr(sRaw); err == nil {
|
||||
if err := s.st.AddWhitelist(addr.Unmap()); err != nil {
|
||||
// Fall 1: Einzel-IP
|
||||
if addr, err := netip.ParseAddr(raw); err == nil {
|
||||
addr = addr.Unmap()
|
||||
if err := s.st.AddWhitelist(addr); err != nil {
|
||||
http.Error(w, "store error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
writeJSON(w, map[string]any{"status": "whitelisted_ip", "ip": addr.Unmap().String()})
|
||||
writeJSON(w, map[string]any{
|
||||
"status": "whitelisted_ip",
|
||||
"ip": addr.String(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 2) Prefix?
|
||||
if norm, ok := normalizeLineToPrefix(sRaw); ok {
|
||||
// Fall 2: Prefix (wir erlauben auch "8.8.8.8" → wird zu /32 normalisiert)
|
||||
if norm, ok := normalizeLineToPrefix(raw); ok {
|
||||
if pfx, err := netip.ParsePrefix(norm); err == nil {
|
||||
// wenn du Prefix-Whitelist hast:
|
||||
if err := s.st.AddWhitelistPrefix(pfx); err != nil {
|
||||
http.Error(w, "store error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
writeJSON(w, map[string]any{"status": "whitelisted_prefix", "prefix": pfx.String()})
|
||||
writeJSON(w, map[string]any{
|
||||
"status": "whitelisted_prefix",
|
||||
"prefix": pfx.String(),
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user