Files
AdGuardHome/internal/filtering/rewritehttp.go
Dimitry Kolyshev 6b607e982b all: rewrites
2022-12-05 14:37:55 +02:00

64 lines
1.4 KiB
Go

package filtering
import (
"encoding/json"
"net/http"
"github.com/AdguardTeam/AdGuardHome/internal/aghhttp"
"github.com/AdguardTeam/AdGuardHome/internal/filtering/rewrite"
"github.com/AdguardTeam/golibs/log"
)
func (d *DNSFilter) handleRewriteList(w http.ResponseWriter, r *http.Request) {
d.confLock.RLock()
defer d.confLock.RUnlock()
_ = aghhttp.WriteJSONResponse(w, r, d.rewriteStorage.List())
}
func (d *DNSFilter) handleRewriteAdd(w http.ResponseWriter, r *http.Request) {
rw := rewrite.Item{}
err := json.NewDecoder(r.Body).Decode(&rw)
if err != nil {
aghhttp.Error(r, w, http.StatusBadRequest, "json.Decode: %s", err)
return
}
d.confLock.Lock()
defer d.confLock.Unlock()
err = d.rewriteStorage.Add(&rw)
if err != nil {
aghhttp.Error(r, w, http.StatusBadRequest, "add rewrite: %s", err)
return
}
log.Debug("rewrite: added element: %s -> %s", rw.Domain, rw.Answer)
d.Config.ConfigModified()
}
func (d *DNSFilter) handleRewriteDelete(w http.ResponseWriter, r *http.Request) {
entDel := rewrite.Item{}
err := json.NewDecoder(r.Body).Decode(&entDel)
if err != nil {
aghhttp.Error(r, w, http.StatusBadRequest, "json.Decode: %s", err)
return
}
d.confLock.Lock()
defer d.confLock.Unlock()
err = d.rewriteStorage.Remove(&entDel)
if err != nil {
aghhttp.Error(r, w, http.StatusBadRequest, "remove rewrite: %s", err)
return
}
d.Config.ConfigModified()
}