mirror of
https://github.com/bakito/adguardhome-sync.git
synced 2025-10-26 11:19:54 +00:00
toggle filtering
This commit is contained in:
parent
44e35a1c85
commit
ee670346f2
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,2 @@
|
||||
.idea
|
||||
|
||||
coverage.out
|
||||
|
||||
37
main.go
37
main.go
@ -2,7 +2,6 @@ package main
|
||||
|
||||
import (
|
||||
"github.com/bakito/adguardhome-sync/pkg/client"
|
||||
"github.com/bakito/adguardhome-sync/pkg/log"
|
||||
"os"
|
||||
)
|
||||
|
||||
@ -15,10 +14,6 @@ const (
|
||||
envOReplicaPassword = "REPLICA_PASSWORD"
|
||||
)
|
||||
|
||||
var (
|
||||
l = log.GetLogger("main")
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create a Resty Client
|
||||
|
||||
@ -40,7 +35,6 @@ func main() {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// POST http://192.168.2.207/control/filtering/config {"interval":24,"enabled":false}
|
||||
// POST http://192.168.2.207/control/dns_config {"protection_enabled":false}
|
||||
}
|
||||
|
||||
@ -56,38 +50,32 @@ func syncFilters(err error, origin client.Client, replica client.Client) error {
|
||||
|
||||
fa, fd := rf.Filters.Merge(of.Filters)
|
||||
|
||||
err = replica.AddFilters(false, fa...)
|
||||
if err != nil {
|
||||
if err = replica.AddFilters(false, fa...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(fa) > 0 {
|
||||
err = replica.RefreshFilters(false)
|
||||
if err != nil {
|
||||
if err = replica.RefreshFilters(false); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = replica.DeleteFilters(false, fd...)
|
||||
if err != nil {
|
||||
if err = replica.DeleteFilters(false, fd...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fa, fd = rf.WhitelistFilters.Merge(of.WhitelistFilters)
|
||||
err = replica.AddFilters(true, fa...)
|
||||
if err != nil {
|
||||
if err = replica.AddFilters(true, fa...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(fa) > 0 {
|
||||
err = replica.RefreshFilters(true)
|
||||
if err != nil {
|
||||
if err = replica.RefreshFilters(true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = replica.DeleteFilters(true, fd...)
|
||||
if err != nil {
|
||||
if err = replica.DeleteFilters(true, fd...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -95,6 +83,11 @@ func syncFilters(err error, origin client.Client, replica client.Client) error {
|
||||
return replica.SetCustomRules(of.UserRules)
|
||||
}
|
||||
|
||||
if of.Enabled != rf.Enabled || of.Interval != rf.Interval {
|
||||
if err = replica.ToggleFiltering(of.Enabled, of.Interval); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -110,13 +103,11 @@ func syncRewrites(err error, origin client.Client, replica client.Client) error
|
||||
|
||||
a, r := replicaRewrites.Merge(originRewrites)
|
||||
|
||||
err = replica.AddRewriteEntries(a...)
|
||||
if err != nil {
|
||||
if err = replica.AddRewriteEntries(a...); err != nil {
|
||||
return err
|
||||
}
|
||||
err = replica.DeleteRewriteEntries(r...)
|
||||
if err != nil {
|
||||
if err = replica.DeleteRewriteEntries(r...); err != nil {
|
||||
return err
|
||||
}
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -38,6 +38,7 @@ type Client interface {
|
||||
DeleteRewriteEntries(e ...types.RewriteEntry) error
|
||||
|
||||
Filtering() (*types.FilteringStatus, error)
|
||||
ToggleFiltering(enabled bool, interval int) error
|
||||
AddFilters(whitelist bool, e ...types.Filter) error
|
||||
DeleteFilters(whitelist bool, e ...types.Filter) error
|
||||
RefreshFilters(whitelist bool) error
|
||||
@ -153,3 +154,9 @@ func (cl *client) SetCustomRules(rules types.UserRules) error {
|
||||
_, err := cl.client.R().EnableTrace().SetBody(rules.String()).Post("/filtering/set_rules")
|
||||
return err
|
||||
}
|
||||
|
||||
func (cl *client) ToggleFiltering(enabled bool, interval int) error {
|
||||
cl.log.With("enabled", enabled, "interval", interval).Info("Toggle filtering")
|
||||
_, err := cl.client.R().EnableTrace().SetBody(&types.FilteringConfig{Enabled: enabled, Interval: interval}).Post("/filtering/config")
|
||||
return err
|
||||
}
|
||||
|
||||
@ -65,8 +65,7 @@ type Filter struct {
|
||||
}
|
||||
|
||||
type FilteringStatus struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
Interval int `json:"interval"`
|
||||
FilteringConfig
|
||||
Filters Filters `json:"filters"`
|
||||
WhitelistFilters Filters `json:"whitelist_filters"`
|
||||
UserRules UserRules `json:"user_rules"`
|
||||
@ -78,6 +77,11 @@ func (ur *UserRules) String() string {
|
||||
return strings.Join(*ur, "\n")
|
||||
}
|
||||
|
||||
type FilteringConfig struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
Interval int `json:"interval"`
|
||||
}
|
||||
|
||||
type RefreshFilter struct {
|
||||
Whitelist bool `json:"whitelist"`
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user