natsim

NATS ↔ Instant Messaging Bridge
git clone https://git.instinctive.eu/natsim.git
Log | Files | Refs | README | LICENSE

commit 8211508ade6f2991eb9ea1c72497b67555bd43b5
parent 7814525f048c47216909c9605e980fac4668c9a6
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Tue,  1 Jul 2025 18:27:01 +0000

Filter list command
Diffstat:
Mmain.go | 15+++++++++++++++
1 file changed, 15 insertions(+), 0 deletions(-)

diff --git a/main.go b/main.go @@ -244,6 +244,14 @@ func (natsim *NatsIM) doCommands() { } switch cmd.name { + case "filters": + var buf strings.Builder + buf.WriteString(fmt.Sprintf("Active filters: %d NATS, %d log, %d IRC", len(natsim.Nats.Filter), len(natsim.Log.Filter), len(natsim.Irc.Filter))) + WriteFilter(&buf, "\n N", natsim.Nats.Filter) + WriteFilter(&buf, "\n L", natsim.Log.Filter) + WriteFilter(&buf, "\n I", natsim.Irc.Filter) + natsim.ircSend(buf.String()) + case "subscribe": if s, err := natsim.nc.Subscribe(cmd.arg, natsim.natsReceive); err != nil { natsim.ircSendError("Subscribe", err) @@ -693,6 +701,13 @@ func (element *FilterElement) UnmarshalText(text []byte) error { return err } +func WriteFilter(buf *strings.Builder, prefix string, filter []FilterElement) { + for i, element := range filter { + line := fmt.Sprintf("%s%d. %s", prefix, i+1, element.String()) + buf.WriteString(line) + } +} + func IsKept(subject string, data []byte, elements []FilterElement, base bool) bool { for _, element := range elements { if element.Match(subject, data) {