commit 7df70cd40d68fbc41ac7c01cc14f1d407fe2153e
parent a3e485fe02816fa33ceb14cf8f64579db5cefa23
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Thu, 3 Jul 2025 17:28:34 +0000
Filter removal command
Diffstat:
M | main.go | | | 40 | ++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 40 insertions(+), 0 deletions(-)
diff --git a/main.go b/main.go
@@ -328,6 +328,46 @@ func (natsim *NatsIM) doCommands() {
natsim.irc.QuitMessage = cmd.arg
natsim.Close()
+ case "unfilter":
+ uplace := strings.ToUpper(cmd.arg)
+
+ if uplace == "NATS" {
+ n := len(natsim.Nats.Filter)
+ natsim.Nats.Filter = []FilterElement{}
+ natsim.ircSendf("Removed %d NATS filter elements", n)
+ } else if uplace == "LOG" {
+ n := len(natsim.Log.Filter)
+ natsim.Log.Filter = []FilterElement{}
+ natsim.ircSendf("Removed %d log filter elements", n)
+ } else if uplace == "IRC" {
+ n := len(natsim.Irc.Filter)
+ natsim.Irc.Filter = []FilterElement{}
+ natsim.ircSendf("Removed %d IRC filter elements", n)
+ } else if n, err := strconv.Atoi(uplace[1:]); err == nil && (uplace[0:1] == "N" || uplace[0:1] == "L" || uplace[0:1] == "I") {
+ var plist *[]FilterElement
+ index := n - 1
+ name := uplace[0:1]
+ switch name {
+ case "N":
+ plist = &natsim.Nats.Filter
+ case "L":
+ plist = &natsim.Log.Filter
+ case "I":
+ plist = &natsim.Irc.Filter
+ }
+ if n < 0 {
+ index = len(*plist) + n
+ }
+ if index < 0 || index >= len(*plist) {
+ natsim.ircSendf("Bad filter index %d for %s%d", index, name, len(*plist))
+ } else {
+ *plist = append((*plist)[:index], (*plist)[index+1:]...)
+ natsim.ircSendf("Removed filter %s%d/%d", name, index+1, len(*plist)+1)
+ }
+ } else {
+ natsim.ircSendf("Unable to parse place %q", uplace)
+ }
+
case "unsubscribe":
if n, err := strconv.Atoi(cmd.arg); err == nil && n > 0 && n <= len(natsim.subs) {
if err = natsim.subs[n-1].Unsubscribe(); err != nil {