diff options
Diffstat (limited to 'internal/ipc/server.go')
| -rw-r--r-- | internal/ipc/server.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/ipc/server.go b/internal/ipc/server.go index 69044af..1fe8d8f 100644 --- a/internal/ipc/server.go +++ b/internal/ipc/server.go @@ -8,6 +8,7 @@ import ( "net" "sync" + "mitmux/internal/rules" "mitmux/internal/store" ) @@ -127,6 +128,46 @@ func (s *Server) handleConn(conn net.Conn) { } enc.Encode(Response{Type: "repeat", Detail: detailFromEntry(e)}) + case "rules_list": + rs, err := s.db.ListRules() + if err != nil { + enc.Encode(Response{Type: "error", Error: err.Error()}) + continue + } + enc.Encode(Response{Type: "rules", Rules: rs}) + + case "rules_save": + if req.Rule == nil { + enc.Encode(Response{Type: "error", Error: "rules_save: missing rule"}) + continue + } + r := *req.Rule + var err error + if r.ID == 0 { + r.ID, err = s.db.AddRule(r) + } else { + err = s.db.UpdateRule(r) + } + if err != nil { + enc.Encode(Response{Type: "error", Error: err.Error()}) + continue + } + enc.Encode(Response{Type: "rules", Rules: []rules.Rule{r}}) + + case "rules_delete": + if err := s.db.DeleteRule(req.RuleID); err != nil { + enc.Encode(Response{Type: "error", Error: err.Error()}) + continue + } + enc.Encode(Response{Type: "rules"}) + + case "rules_toggle": + if err := s.db.SetRuleEnabled(req.RuleID, req.RuleEnabled); err != nil { + enc.Encode(Response{Type: "error", Error: err.Error()}) + continue + } + enc.Encode(Response{Type: "rules"}) + case "subscribe": sub := s.hub.subscribe() defer s.hub.unsubscribe(sub) |