X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=rhawk;h=5420d6363ab3dcf8c54ffa1da563a0d09ea4633c;hb=ddd145ae8ed1ca8b1180c3ee835a133ca10f1fa2;hp=a1c210d092ccfe93c800482058c83f26eca2c0a5;hpb=536c61ac0da88eb94d1e271a7fcfb633ddbe298d;p=~andy%2Frhawk diff --git a/rhawk b/rhawk index a1c210d..5420d63 100755 --- a/rhawk +++ b/rhawk @@ -9,7 +9,7 @@ BEGIN { json_load("var/login.json", login); json_load("var/nounicode.json", nounicode); - json_load("var/nocolor.json", nocolors); + json_load("var/nocolor.json", nocolor); OWNER = login["owner"]; @@ -22,7 +22,7 @@ BEGIN { delete login if (FIRST) { - join("#rhnoise") + join("#rhtest") join("#rhspades") join("#sfvlug") } @@ -145,6 +145,11 @@ BEGIN { pollchan = "#sfvlug" } } # Versin/Uptime +function head(cmd, var) { + cmd | getline var + close(cmd) + return var +} function uptime(time, fmt) { fmt = "%d:%02d:%02d:%02d" fmt = "%d days %02d:%02d:%02d" @@ -155,13 +160,13 @@ function uptime(time, fmt) { time / (1 ) % 60) } BEGIN { - _cmd = "git describe --always --dirty"; - _cmd | getline up_version; - close(_cmd); - up_reload = systime(); + up_version = head("git describe --always --dirty") + up_author = head("git log -n1 --format=format:%an") + up_message = head("git log -n1 --format=format:%s") + up_reload = systime(); } -/^\.version/ { - say("version: " up_version) +/^\.(version|rev)/ { + say("version: " up_version " - " up_author " - " up_message) } /^\.uptime/ { _now = systime(); @@ -182,6 +187,31 @@ BEGIN { say("no auth info for " _who) } +# GeoIP Lookup +function geoip(ip, dat, cmd, line, parts) { + dat = "/usr/share/GeoIP/GeoIPCity.dat" + + cmd = "geoiplookup -f " dat " " ip + cmd | getline line + close(cmd) + + if (split(line, parts, /[:,] /) >= 9) + return parts[8] "," parts[9] " -- " \ + parts[6] ", " parts[4] ", " parts[3] + else + return "not found" +} + +/^\.geoip (([0-9a-zA-Z_.-]+) *)*$/ { + for (_i=2; _i<=NF; _i++) { + if ($_i in USERS) + say(geoip(USERS[$_i]["host"]) " -- " \ + $_i " -> " USERS[$_i]["host"]) + else + say(geoip($_i) " -- " $_i) + } +} + # Fortune TO == NICK && /^/ { extra = "" } TO == NICK && /^\.?fortune.*-o/ { extra = "-o" } @@ -197,6 +227,16 @@ TO == NICK && /^\.?fortune/ { next } +/\<[Bb][Oo][Ff][Hh]\>/ { + _cmd = "fortune bofh-excuses" + _cmd | getline _fortune + _cmd | getline _fortune + _cmd | getline _fortune + close(_cmd) + say(_fortune) + next +} + # Morse code BEGIN { morse["/" ] = " " @@ -303,6 +343,11 @@ TO == NICK && DST ~ /^#/ { #say("Hello, " FROM) } +/^\.nestroyeti/ { + say(sprintf("Temperature: %4.1f F Humidity: %2d%%", + rand()*20+65, rand()*20+40)) +} + #DST != "#sfvlug" && !(FROM in bots) && CMD == "PRIVMSG" && @@ -344,6 +389,15 @@ FROM == "rhnoise" && $2 == "slaps" && $3 == NICK { say("THE LARCH"); } +/(for what|that for)\?$/ { + say("For great justice!"); +} + +/\/ { -# for (_i=1; _i<=length(user_scores); _i++) -# say(user_scores[_i]["user"] "--"); -#} +BEGIN { + user_scores[0] = 1; + delete user_scores +} + +/^\.(scores|scoreboard)$/ { + delete user_scores +} + +FROM == "rhnoise" && !length(user_scores) { + if (split(MSG, _parts, /, /)) { + for (_i=1; _i<=length(_parts); _i++) { + split(_parts[_i], _tmp, ": "); + user_scores[_i]["user"] = _tmp[1]; + user_scores[_i]["score"] = _tmp[2]; + } + } +} + +length(user_scores) && +tolower($0) ~ /\/ { + _count = 0; + for (_i=1; _i<=length(user_scores); _i++) { + _user = user_scores[_i]["user"]; + _score = user_scores[_i]["score"]; + if (_user in USERS) continue + if (_score == 1) { say(_user "--"); _count++; } + if (_score == -1) { say(_user "++"); _count++; } + } + if (_count) { + delete user_scores; + say(".scores"); + } else { + say("looks like you're safe.. for now.."); + } +} + +# Vote relay +DST != "#rhnoise" && /\<[a-zA-Z0-9_]{3,16}(\+\+|--)/ { + say("#rhnoise", "(" DST ") " FROM ": " MSG); +} # Misc { fflush("") }