srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/internal/ipc/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/ipc/server.go')
-rw-r--r--internal/ipc/server.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/ipc/server.go b/internal/ipc/server.go
index 7f77ceb..303fdef 100644
--- a/internal/ipc/server.go
+++ b/internal/ipc/server.go
@@ -10,6 +10,7 @@ import (
"sync"
"mitmux/internal/rules"
+ "mitmux/internal/scope"
"mitmux/internal/store"
)
@@ -281,6 +282,48 @@ func (s *Server) handleConn(conn net.Conn) {
}
enc.Encode(Response{Type: "rules"})
+ case "scope_list":
+ rs, err := s.db.ListScopeRules()
+ if err != nil {
+ enc.Encode(Response{Type: "error", Error: err.Error()})
+ continue
+ }
+ enc.Encode(Response{Type: "scope_rules", ScopeRules: rs})
+
+ case "scope_add":
+ if req.ScopeRule == nil {
+ enc.Encode(Response{Type: "error", Error: "scope_add: missing rule"})
+ continue
+ }
+ r := *req.ScopeRule
+ if r.IsRegex {
+ if _, err := regexp.Compile(r.Pattern); err != nil {
+ enc.Encode(Response{Type: "error", Error: "invalid regex: " + err.Error()})
+ continue
+ }
+ }
+ id, err := s.db.AddScopeRule(r)
+ if err != nil {
+ enc.Encode(Response{Type: "error", Error: err.Error()})
+ continue
+ }
+ r.ID = id
+ enc.Encode(Response{Type: "scope_rules", ScopeRules: []scope.Rule{r}})
+
+ case "scope_delete":
+ if err := s.db.DeleteScopeRule(req.ScopeRuleID); err != nil {
+ enc.Encode(Response{Type: "error", Error: err.Error()})
+ continue
+ }
+ enc.Encode(Response{Type: "scope_rules"})
+
+ case "scope_toggle":
+ if err := s.db.SetScopeRuleEnabled(req.ScopeRuleID, req.RuleEnabled); err != nil {
+ enc.Encode(Response{Type: "error", Error: err.Error()})
+ continue
+ }
+ enc.Encode(Response{Type: "scope_rules"})
+
case "subscribe":
sub := s.hub.subscribe()
defer s.hub.unsubscribe(sub)