Przeglądaj źródła

Add separate config for channel keys.

It was a never-ending source of bugs
tags/v0.2.3
Russ Garrett 7 lat temu
rodzic
commit
6c36b9b43c
No account linked to committer's email address
3 zmienionych plików z 17 dodań i 6 usunięć
  1. 2
    1
      examples/irccat.json
  2. 13
    1
      main.go
  3. 2
    4
      tcplistener/tcplistener.go

+ 2
- 1
examples/irccat.json Wyświetl plik

18
     "nick": "irccat",
18
     "nick": "irccat",
19
     "realname": "IRCCat",
19
     "realname": "IRCCat",
20
     "identify_pass": "",
20
     "identify_pass": "",
21
-    "channels": ["#channel"]
21
+    "channels": ["#channel"],
22
+    "keys": {"#channel": "join_key"}
22
   },
23
   },
23
   "commands": {
24
   "commands": {
24
     "auth_channel": "#channel",
25
     "auth_channel": "#channel",

+ 13
- 1
main.go Wyświetl plik

12
 	"github.com/thoj/go-ircevent"
12
 	"github.com/thoj/go-ircevent"
13
 	"os"
13
 	"os"
14
 	"os/signal"
14
 	"os/signal"
15
+	"strings"
15
 	"syscall"
16
 	"syscall"
16
 )
17
 )
17
 
18
 
119
 
120
 
120
 	log.Infof("Connected, joining channels...")
121
 	log.Infof("Connected, joining channels...")
121
 	for _, channel := range viper.GetStringSlice("irc.channels") {
122
 	for _, channel := range viper.GetStringSlice("irc.channels") {
122
-		i.irc.Join(channel)
123
+		key_var := fmt.Sprintf("irc.keys.%s", channel)
124
+		if strings.ContainsAny(channel, " \t") {
125
+			log.Errorf("Channel name '%s' contains whitespace. Set a channel key by setting the config variable irc.keys.#channel",
126
+				channel)
127
+			continue
128
+		}
129
+
130
+		if viper.IsSet(key_var) {
131
+			i.irc.Join(channel + " " + viper.GetString(key_var))
132
+		} else {
133
+			i.irc.Join(channel)
134
+		}
123
 		i.channels.Add(channel)
135
 		i.channels.Add(channel)
124
 	}
136
 	}
125
 }
137
 }

+ 2
- 4
tcplistener/tcplistener.go Wyświetl plik

68
 		parts := strings.SplitN(msg, " ", 2)
68
 		parts := strings.SplitN(msg, " ", 2)
69
 		if parts[0] == "#*" {
69
 		if parts[0] == "#*" {
70
 			for _, channel := range channels {
70
 			for _, channel := range channels {
71
-				chan_parts := strings.Split(channel, " ")
72
-				l.irc.Privmsg(chan_parts[0], replaceFormatting(parts[1]))
71
+				l.irc.Privmsg(channel, replaceFormatting(parts[1]))
73
 			}
72
 			}
74
 		} else {
73
 		} else {
75
 			targets := strings.Split(parts[0], ",")
74
 			targets := strings.Split(parts[0], ",")
85
 		l.irc.SendRawf("TOPIC %s :%s", parts[1], replaceFormatting(parts[2]))
84
 		l.irc.SendRawf("TOPIC %s :%s", parts[1], replaceFormatting(parts[2]))
86
 	} else {
85
 	} else {
87
 		if len(channels) > 0 {
86
 		if len(channels) > 0 {
88
-			chan_parts := strings.Split(channels[0], " ")
89
-			l.irc.Privmsg(chan_parts[0], replaceFormatting(msg))
87
+			l.irc.Privmsg(channels[0], replaceFormatting(msg))
90
 		}
88
 		}
91
 	}
89
 	}
92
 }
90
 }

Ładowanie…
Anuluj
Zapisz