]> Pileus Git - ~andy/rhawk/blobdiff - rhawk
Fix join/part to use functions
[~andy/rhawk] / rhawk
diff --git a/rhawk b/rhawk
index dd9bd07dd4c248ac98003fd22fd6f822c522dbb6..e15c9a34bab482b8882bc2455fd98a1c21796ac1 100755 (executable)
--- a/rhawk
+++ b/rhawk
@@ -1,13 +1,25 @@
 #!awk -f
 
 @include "irc.awk"
+@include "json.awk"
 @include "spades.awk"
 #@include "email.awk"
 
 # Initialization
 BEGIN {
-       OWNER = "andy753421"
-       connect("localhost", "rhawk", "#rhtest");
+       json_load("var/login.json", login);
+       json_load("var/plain.json", plain);
+
+       OWNER = login["owner"];
+
+       connect(login["server"],  \
+               login["nick"],    \
+               login["channel"], \
+               login["auth"],    \
+               login["pass"])
+
+       delete login
+
        if (FIRST) {
                join("#rhnoise")
                join("#rhspades")
@@ -16,37 +28,37 @@ BEGIN {
 }
 
 # Admin
-FROM == OWNER && TO == NICK && /^die in a fire/ {
+AUTH == OWNER && TO == NICK && /^die in a fire/ {
        say("Ack, argh, barasdjf..")
        quit()
 }
 
-FROM == OWNER && TO == NICK && /^reload/ {
+AUTH == OWNER && TO == NICK && /^reload/ {
        say("Reloading..")
        reload()
 }
 
-FROM == OWNER && TO == NICK && /^rejoin/ {
+AUTH == OWNER && TO == NICK && /^rejoin/ {
        reply("joining..")
        join("#rhnoise")
        next
 }
 
-FROM == OWNER && TO == NICK && /^(join|part)/ {
-       match(MSG, /(join|part) +(#+\w+)/, arr)
-       if (arr[1] && arr[2]) {
-               send(toupper(arr[1]) " " arr[2]);
+AUTH == OWNER && TO == NICK && /^(join|part)/ {
+       if (match(MSG, /(join|part) +(#+\w+)/, arr)) {
+               if (arr[1] == "join") join(arr[2]);
+               if (arr[1] == "part") part(arr[2]);
                next
        }
 }
 
-FROM == OWNER && TO == NICK && /^\.msg/ {
+AUTH == OWNER && TO == NICK && /^\.msg/ {
        match(MSG, /.*\.msg +(#*\w+) +(.*)/, arr)
        send("PRIVMSG " arr[1] " :" arr[2])
 }
 
 # Kick handling
-CMD == "KICK" && ARG == NICK {
+CMD == "KICK" && ARG[2] == NICK {
        kick_delay = (kick_delay + 2) * 2
        system("sleep " kick_delay)
        join(DST)
@@ -66,10 +78,12 @@ CMD == "NICK" && FROM in bots {
 # Unicode
 /[Uu]nicode :-?\(/ {
        plain[FROM] = 1
+       json_save("var/plain.json", plain);
 }
 
 /[Uu]nicode :-?\)/ {
-       plain[FROM] = 0
+       delete plain[FROM]
+       json_save("var/plain.json", plain);
 }
 
 # SFV Lug
@@ -89,10 +103,9 @@ function email(to, from, subj, body, sendmail)
 }
 
 BEGIN { pollchan = "#sfvlug" }
-#(CMD == "TOPIC"   && systime()-lastpoll > 60*60*24) ||
 (CMD == "PING"    && systime()-lastpoll > 60*60*24) ||
 (CMD == "PRIVMSG" && /^\.poll/) {
-       if (!topics[pollchan]) {
+       if (!TOPICS[pollchan]) {
                debug("Unknown topic for " pollchan);
                send("TOPIC " pollchan)
                next
@@ -103,14 +116,14 @@ BEGIN { pollchan = "#sfvlug" }
        _web_ptrn = "next meeting.*" _day "\\w+[, ]+([A-Z]\\w+) +([0-9]+)[, ]+([0-9]+)"
        _irc_ptrn = _day "\\w*[, ]+([A-Z]\\w+) +([0-9]+)"
        while (_curl | getline _line) {
-               if (match(_line, _web_tba))
-                       email("Brian <brian@zimage.com>");
+               #if (match(_line, _web_tba))
+               #       email("Brian <brian@zimage.com>");
                if (match(_line, _web_ptrn, _parts)) {
                        _date  = _parts[1] " " _parts[2] " " _parts[3]
-                       _topic = topics[pollchan]
+                       _topic = TOPICS[pollchan]
                        sub(_irc_ptrn, _date, _topic)
-                       if (_topic != topics[pollchan])
-                               topic(pollchan, topics[pollchan] = _topic)
+                       if (_topic != TOPICS[pollchan])
+                               topic(pollchan, TOPICS[pollchan] = _topic)
                        else
                                debug("topic is already correct")
                        break
@@ -145,6 +158,19 @@ BEGIN {
            "reload: " uptime(_now - up_reload))
 }
 
+# Auth info
+/^\.auth/ {
+       _who = $2 ? $2 : FROM
+       if (_who in USERS)
+               say("nick=" USERS[_who]["nick"] " " \
+                   "user=" USERS[_who]["user"] " " \
+                   "auth=" USERS[_who]["auth"] " " \
+                   "real=" USERS[_who]["real"] " " \
+                   "host=" USERS[_who]["host"])
+       else
+               say("no auth info for " _who)
+}
+
 # Fortune
 TO == NICK && /^/               { extra = ""   }
 TO == NICK && /^\.?fortune.*-o/ { extra = "-o" }
@@ -161,7 +187,7 @@ TO == NICK && /^\.?fortune/     {
 }
 
 # Noise
-FROM ~ OWNER && /^go go gadget woop/ {
+AUTH == OWNER && /^go go gadget woop/ {
        for (i=20; i>0; i--)
                say(".delay " i " seconds; .woop " i)
 }
@@ -197,6 +223,7 @@ TO == NICK && DST ~ /^#/ {
 
 #DST != "#sfvlug" &&
 !(FROM in bots) &&
+CMD == "PRIVMSG" &&
 MSG !~ /^\./ &&
 /awk/ {
        say("Awk, awk, awk! I'm a bird!")
@@ -283,7 +310,7 @@ FROM == "rhnoise" && load_mod {
 #      delete user_scores
 #}
 #
-#FROM == OWNER && length(user_scores) &&
+#AUTH == OWNER && length(user_scores) &&
 #tolower($0) ~ /\<nuclear launch detected\>/ {
 #      for (_i=1; _i<=length(user_scores); _i++)
 #              say(user_scores[_i]["user"] "--");