64 lines
1.4 KiB
Go
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()
|
|
}
|