diff options
Diffstat (limited to 'internal/ipc/server.go')
| -rw-r--r-- | internal/ipc/server.go | 43 |
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) |