aboutsummaryrefslogtreecommitdiffstats
path: root/plugin.py
diff options
context:
space:
mode:
authorkongr45gpen <kongr45gpen@helit.org>2013-07-31 18:19:37 +0300
committerkongr45gpen <kongr45gpen@helit.org>2013-07-31 18:19:37 +0300
commitf245c9dc0e6e154fcb6f5bd0dfe52889482c08e6 (patch)
treea67c7eb6e77c0eb1a5638a71b71f40b7b2c084a3 /plugin.py
parent8c1681000d0c91f0874d10edf4b4be354f97d6c9 (diff)
downloadsupybot_github-f245c9dc0e6e154fcb6f5bd0dfe52889482c08e6.tar.gz
supybot_github-f245c9dc0e6e154fcb6f5bd0dfe52889482c08e6.tar.bz2
supybot_github-f245c9dc0e6e154fcb6f5bd0dfe52889482c08e6.zip
Use the commit URL to set the channel
Add disallowChannelOverride configuration variable
Diffstat (limited to 'plugin.py')
-rw-r--r--plugin.py36
1 files changed, 26 insertions, 10 deletions
diff --git a/plugin.py b/plugin.py
index 2c542c5..8d89b05 100644
--- a/plugin.py
+++ b/plugin.py
@@ -28,6 +28,7 @@
import random
import json
import time
+import urllib
import urllib2
import urlparse
import threading
@@ -113,12 +114,27 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
and configValue('passcode').strip().lower() != 'null' \
and configValue('passcode').strip().lower() != 'no'
+ # Analyse the URL
i = 0
for part in path:
+ part = urllib.unquote(part)
if i == 1 and requireCode:
receivedcode = part
+
+ part = part.replace('+','#');
+ part = part.replace('~','#');
+ part = part.replace('-','#');
+ part = part.replace('&','#');
+ part = part.replace('^','#');
+
+ if part.startswith("#") and not configValue('disallowChannelOverride'):
+ channel = part
+
i+=1
+
+
+
if requireCode and receivedcode != configValue('passcode'):
# The password is wrong
s.wfile.write("The password is wrong")
@@ -130,24 +146,24 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
msgs = []
if 'pages' in data:
- msgs = s.handle_wiki(irc, data)
+ msgs = s.handle_wiki(irc, data, channel)
elif 'commits' in data:
- msgs = s.handle_push(irc, data)
+ msgs = s.handle_push(irc, data, channel)
else:
- msgs.append( ircmsgs.privmsg(configValue('channel'), "Something happened"))
+ msgs.append( ircmsgs.privmsg(channel, "Something happened"))
#msgs.append( ircmsgs.privmsg("#main", "%s" % ()) )
for msg in msgs:
irc.queueMsg(msg)
- def handle_push(s, irc, data):
+ def handle_push(s, irc, data, channel):
msgs = []
commitno = len(data['commits'])
branch = data['ref'].split('/',2)[2]
if configValue("hidePush",None) is False:
- msgs.append( ircmsgs.privmsg(configValue('channel'), "%s @ %s: %s pushed %s %s (%s):" % (
+ msgs.append( ircmsgs.privmsg(channel, "%s @ %s: %s pushed %s %s (%s):" % (
ircutils.bold(ircutils.mircColor(branch, "blue")),
ircutils.bold(data['repository']['name']),
ircutils.mircColor(data['pusher']['name'], "green"),
@@ -162,7 +178,7 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
else:
author = commit['author']['name']
- msgs.append( ircmsgs.privmsg(configValue('channel'), "%s @ %s: %s * %s (%s)" % (
+ msgs.append( ircmsgs.privmsg(channel, "%s @ %s: %s * %s (%s)" % (
ircutils.bold(ircutils.mircColor(branch, "blue")),
ircutils.bold(data['repository']['name']),
ircutils.mircColor(author, "green"),
@@ -176,7 +192,7 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
line = "%s..." % (rawline[0:397])
else :
line = rawline
- msgs.append(ircmsgs.privmsg(configValue('channel'), "%s @ %s: %s" % (
+ msgs.append(ircmsgs.privmsg(channel, "%s @ %s: %s" % (
ircutils.bold(ircutils.mircColor(branch, "blue")),
ircutils.bold(data['repository']['name']),
line,
@@ -184,7 +200,7 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
return msgs
- def handle_wiki(s, irc, data):
+ def handle_wiki(s, irc, data, channel):
msgs = []
pageno = len(data['pages'])
@@ -192,7 +208,7 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
url = getShortURL("%s/wiki/_compare/%s" % ( data['repository']['html_url'], data['pages'][0]['sha'] ))
if configValue("hidePush",None) is False:
- msgs.append( ircmsgs.privmsg(configValue('channel'), "%s: %s modified %s wiki %s (%s):" % (
+ msgs.append( ircmsgs.privmsg(channel, "%s: %s modified %s wiki %s (%s):" % (
ircutils.bold(data['repository']['name']),
ircutils.mircColor(data['sender']['login'], "green"),
ircutils.bold(str(pageno)),
@@ -212,7 +228,7 @@ class GithubHandler(BaseHTTPServer.BaseHTTPRequestHandler):
pageurl = "(%s)" % (page['html_url'],)
# Unfortunately github doesn't support edit summaries :(
- msgs.append( ircmsgs.privmsg(configValue('channel'), "%s: %s %s %s * %s %s" % (
+ msgs.append( ircmsgs.privmsg(channel, "%s: %s %s %s * %s %s" % (
ircutils.bold(data['repository']['name']),
ircutils.mircColor(data['sender']['login'], "green"),
colorAction(page['action']),

© 2014-2024 Faster IT GmbH | imprint | privacy policy