From 3877e5d8221d42811d376ddb560552684d34f5cc Mon Sep 17 00:00:00 2001 From: EUcancER Date: Thu, 17 Nov 2011 11:16:48 +0100 Subject: //punani: rm old punani, tightnani->punani --- punani/index.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 punani/index.py (limited to 'punani/index.py') diff --git a/punani/index.py b/punani/index.py new file mode 100755 index 00000000..4e6a64a4 --- /dev/null +++ b/punani/index.py @@ -0,0 +1,58 @@ +#!/usr/bin/python + +import web +import json + +urls = ( + '/', 'Index', + '/dump','Dump', + '/reload','Reload', + '/(.+)/(.+)', 'ArchFinder', +) + + +PDB_FILE="tightnani_db" +f = open(PDB_FILE) +pdb= json.load(f) +f.close() + +class Index: + def GET(self): + ret = """Welcome to the Tightnani API
+Retrieve a package name for your distribution with: /PACKER/PKG""" + return ret + +class Reload: + def GET(self): + f = open(PDB_FILE) + pdb= json.load(f) + f.close() + return "DB reloaded" + + +class Dump: + def GET(self): + return json.dumps(pdb,sort_keys=True,indent=4) + +class ArchFinder: + def GET(self,packer,package): + if not packer or not package: web.BadRequest() + else: + packer = pdb['packer-symlinks'].get(packer,packer) #try to resolve similar packers + super_packer = pdb['super-packer'].get(packer,'') + ret = pdb.get(package,{}).get(packer,False) + ret = ret if ret else pdb.get(package,{}).get(super_packer,False) + + if not ret: + web.NotFound() + return "not found. i'm so sorry :(" + else: return ret + + + +if __name__ == "__main__": + import sys + sys.argv.append("9111") + app = web.application(urls,globals()) + app.internalerror = web.debugerror + app.run() -- cgit v1.2.3 From baeab27dffc49fea7336ffe9f24695fc5bf63474 Mon Sep 17 00:00:00 2001 From: EUcancER Date: Mon, 21 Nov 2011 15:28:41 +0100 Subject: //punani: irc support currently nonfunctional --- punani/index.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) (limited to 'punani/index.py') diff --git a/punani/index.py b/punani/index.py index 4e6a64a4..a34c444a 100755 --- a/punani/index.py +++ b/punani/index.py @@ -6,15 +6,37 @@ import json urls = ( '/', 'Index', '/dump','Dump', - '/reload','Reload', +# '/reload','Reload', '/(.+)/(.+)', 'ArchFinder', ) -PDB_FILE="tightnani_db" +PDB_FILE="db/punani" +PORT="9111" +CHANNEL="#retiolum" f = open(PDB_FILE) -pdb= json.load(f) +pdb = json.load(f) f.close() +bot = False + +try: + from threading import Thread + from ircbot import SingleServerIRCBot + class QuickBot(SingleServerIRCBot): + def on_welcome(self,conn,event): conn.join(CHANNEL) + def announce(self,msg): self.connection.privmsg(CHANNEL,"superballs") + #def on_pubmsg(self,conn,e): conn.privmsg(CHANNEL,"superaidsballs") + + bot = QuickBot([("supernode",6667)],"punani","punani") + try: + t = Thread(target=bot.start) + t.setDaemon(1) + t.start() + except (KeyboardInterrupt, SystemExit): + print("Got Interrupt!") + sys.exit() +except Exception,e: + print("Cannot connect to IRC %s" %str(e)) class Index: def GET(self): @@ -35,15 +57,19 @@ class Dump: return json.dumps(pdb,sort_keys=True,indent=4) class ArchFinder: - def GET(self,packer,package): - if not packer or not package: web.BadRequest() + def GET(self,request_packer,package): + if not request_packer or not package: web.BadRequest() else: - packer = pdb['packer-symlinks'].get(packer,packer) #try to resolve similar packers + packer = pdb['packer-symlinks'].get(request_packer,request_packer) #try to resolve similar packers super_packer = pdb['super-packer'].get(packer,'') ret = pdb.get(package,{}).get(packer,False) ret = ret if ret else pdb.get(package,{}).get(super_packer,False) - if not ret: + if not ret: + try: + bot.announce("%s asked for %s for the packer %s but i failed to find it. Please help me!" %(web.ctx.ip, packer, package)) + except Exception,e: + print ("Got Exception %s: %s" % (str(Exception),(e))) web.NotFound() return "not found. i'm so sorry :(" else: return ret @@ -52,7 +78,7 @@ class ArchFinder: if __name__ == "__main__": import sys - sys.argv.append("9111") + sys.argv.append(PORT) app = web.application(urls,globals()) app.internalerror = web.debugerror app.run() -- cgit v1.2.3 From 16c8bfee75d0d6f41671bb621ee631311c02cc1b Mon Sep 17 00:00:00 2001 From: EUcancER Date: Mon, 21 Nov 2011 18:12:07 +0100 Subject: //punani: add irc-capabilities for punani --- punani/index.py | 58 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 23 deletions(-) (limited to 'punani/index.py') diff --git a/punani/index.py b/punani/index.py index a34c444a..ac19b2fb 100755 --- a/punani/index.py +++ b/punani/index.py @@ -2,7 +2,8 @@ import web import json - +import os +from bot import * urls = ( '/', 'Index', '/dump','Dump', @@ -17,27 +18,14 @@ CHANNEL="#retiolum" f = open(PDB_FILE) pdb = json.load(f) f.close() -bot = False - -try: - from threading import Thread - from ircbot import SingleServerIRCBot - class QuickBot(SingleServerIRCBot): - def on_welcome(self,conn,event): conn.join(CHANNEL) - def announce(self,msg): self.connection.privmsg(CHANNEL,"superballs") - #def on_pubmsg(self,conn,e): conn.privmsg(CHANNEL,"superaidsballs") - - bot = QuickBot([("supernode",6667)],"punani","punani") - try: - t = Thread(target=bot.start) - t.setDaemon(1) - t.start() - except (KeyboardInterrupt, SystemExit): - print("Got Interrupt!") - sys.exit() -except Exception,e: - print("Cannot connect to IRC %s" %str(e)) +polite = os.environ.get("polite",False) +from socket import * +def local_announce(msg): + s = socket(AF_INET,SOCK_STREAM) + s.connect(('localhost',5555)) + s.send(msg) + s.close() class Index: def GET(self): ret = """Welcome to the Tightnani API
@@ -66,8 +54,11 @@ class ArchFinder: ret = ret if ret else pdb.get(package,{}).get(super_packer,False) if not ret: - try: - bot.announce("%s asked for %s for the packer %s but i failed to find it. Please help me!" %(web.ctx.ip, packer, package)) + try: + if polite: + local_announce("Client `%s` asked for the tool `%s` in packer `%s` but i do not have it in my Database. Please update me!" %(web.ctx.ip, package,packer)) + else: + local_announce("404: no %s/%s for %s" % (request_packer,package,gethostbyaddr(web.ctx.ip)[0])) except Exception,e: print ("Got Exception %s: %s" % (str(Exception),(e))) web.NotFound() @@ -78,6 +69,27 @@ class ArchFinder: if __name__ == "__main__": import sys + # Set IRC connection parameters. + irc_servers = [('supernode', 6667)] + irc_channels = [('#retiolum','')] + + # Prepare and start IRC bot. + bot = PunaniBot(irc_servers, irc_channels) + t = Thread(target=bot.start) + t.daemon = True + t.start() + announce = bot.say + + receiver = PunaniReceiveServer() + t = Thread(target=receiver.serve_forever) + t.daemon = True + t.start() + + t = Thread(target=process_queue,args=(announce,receiver.queue)) + t.daemon = True + t.start() + + sys.argv.append(PORT) app = web.application(urls,globals()) app.internalerror = web.debugerror -- cgit v1.2.3