Browse Source

Add separate config for channel keys.

It was a never-ending source of bugs
tags/v0.2.3
Russ Garrett 7 years ago
parent
commit
6c36b9b43c
No account linked to committer's email address
3 changed files with 17 additions and 6 deletions
  1. 2
    1
      examples/irccat.json
  2. 13
    1
      main.go
  3. 2
    4
      tcplistener/tcplistener.go

+ 2
- 1
examples/irccat.json View File

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

+ 13
- 1
main.go View File

@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/thoj/go-ircevent"
13 13
 	"os"
14 14
 	"os/signal"
15
+	"strings"
15 16
 	"syscall"
16 17
 )
17 18
 
@@ -119,7 +120,18 @@ func (i *IRCCat) handleWelcome(e *irc.Event) {
119 120
 
120 121
 	log.Infof("Connected, joining channels...")
121 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 135
 		i.channels.Add(channel)
124 136
 	}
125 137
 }

+ 2
- 4
tcplistener/tcplistener.go View File

@@ -68,8 +68,7 @@ func (l *TCPListener) parseMessage(msg string) {
68 68
 		parts := strings.SplitN(msg, " ", 2)
69 69
 		if parts[0] == "#*" {
70 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 73
 		} else {
75 74
 			targets := strings.Split(parts[0], ",")
@@ -85,8 +84,7 @@ func (l *TCPListener) parseMessage(msg string) {
85 84
 		l.irc.SendRawf("TOPIC %s :%s", parts[1], replaceFormatting(parts[2]))
86 85
 	} else {
87 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
 }

Loading…
Cancel
Save