def next_func(args,u413): context=u413.user.context.split(' ') if context[0]=='BOARD': if context[1]=='ALL': context[1]=0 pages=int(db.query("SELECT COUNT(*) FROM posts WHERE topic=TRUE AND parent IN (SELECT id FROM boards WHERE onall=TRUE);")[0]["COUNT(*)"]) if pages==0: pages=1 else: pages=math.ceil(pages/10.0) page=1 if len(context)>2: page=int(context[2]) if page<pages: page+=1 command.respond(context[0]+' '+str(context[1])+' '+str(page),u413) return if context[0] in ['BOARD','TOPIC']: pages=int(db.query("SELECT COUNT(*) FROM posts WHERE parent=%i;"%int(context[1]))[0]["COUNT(*)"]) if pages==0: pages=1 else: pages=math.ceil(pages/10.0) page=1 if len(context)>2: page=int(context[2]) if page<pages: page+=1 command.respond(context[0]+' '+str(context[1])+' '+str(page),u413) else: u413.type('"NEXT" is not a valid command or is not available in the current context.')
def prev_func(args,u413): context=u413.user.context.split(' ') if context[0]=='BOARD': if context[1]=='ALL': context[1]=0 if context[0] in ['BOARD','TOPIC']: page=1 if len(context)>2: page=int(context[2]) if page>1: page-=1 command.respond(context[0]+' '+str(context[1])+' '+str(page),u413) else: u413.type('"PREV" is not a valid command or is not available in the current context.')
def prev_func(args, u413): context = u413.user.context.split(' ') if context[0] == 'BOARD': if context[1] == 'ALL': context[1] = 0 if context[0] in ['BOARD', 'TOPIC']: page = 1 if len(context) > 2: page = int(context[2]) if page > 1: page -= 1 command.respond(context[0] + ' ' + str(context[1]) + ' ' + str(page), u413) else: u413.type( '"PREV" is not a valid command or is not available in the current context.' )
def next_func(args, u413): context = u413.user.context.split(' ') if context[0] == 'BOARD': if context[1] == 'ALL': context[1] = 0 pages = int( db.query( "SELECT COUNT(*) FROM posts WHERE topic=TRUE AND parent IN (SELECT id FROM boards WHERE onall=TRUE);" )[0]["COUNT(*)"]) if pages == 0: pages = 1 else: pages = math.ceil(pages / 10.0) page = 1 if len(context) > 2: page = int(context[2]) if page < pages: page += 1 command.respond( context[0] + ' ' + str(context[1]) + ' ' + str(page), u413) return if context[0] in ['BOARD', 'TOPIC']: pages = int( db.query("SELECT COUNT(*) FROM posts WHERE parent=%i;" % int(context[1]))[0]["COUNT(*)"]) if pages == 0: pages = 1 else: pages = math.ceil(pages / 10.0) page = 1 if len(context) > 2: page = int(context[2]) if page < pages: page += 1 command.respond(context[0] + ' ' + str(context[1]) + ' ' + str(page), u413) else: u413.type( '"NEXT" is not a valid command or is not available in the current context.' )
def index(req): import user import command cli = req.form.get("cli", None) if cli != None: cli = cli.value session = req.form.get("session", None) if session != None: session = session.value #no session if session == None: jar = Cookie.get_cookies(req) if "session" in jar: session = jar.get("session", None) if session != None: session = session.value currentuser = user.User(session) if cli == None: cli = "LOGIN" else: currentuser = user.User() if cli == None: cli = "INITIALIZE" else: currentuser = user.User(session) if cli == None: cli = "LOGIN" cmdarg = cli.split(' ', 1) cmd = cmdarg[0] args = "" if len(cmdarg) > 1: args = cmdarg[1] callback = req.form.get("callback", None) class u413(object): def __init__(self, u): self.j = { "Command": "", "ContextText": u.context, "CurrentUser": u.name, "EditText": None, "SessionId": u.session, "TerminalTitle": "Terminal - " + u.name, "ClearScreen": False, "Exit": False, "PasswordField": False, "ScrollToBottom": True, "DisplayItems": [], "Notification": None } self.cmds = command.cmds self.user = u self.cont = False self.cookies = [] self.cmddata = u.cmddata self.mute = u.mute def type(self, text, mute=None): if mute == None: mute = self.mute self.j["DisplayItems"].append({ "Text": text, "DontType": False, "Mute": mute }) def donttype(self, text, mute=None): if mute == None: mute = self.mute self.j["DisplayItems"].append({ "Text": text, "DontType": True, "Mute": mute }) def set_context(self, context): self.j["ContextText"] = context self.user.context = context def set_title(self, title): self.j["TerminalTitle"] = title def edit_text(self, text): self.j["EditText"] = text def clear_screen(self): self.j["ClearScreen"] = True def scroll_down(self): self.j["ScrollToBottom"] = True def use_password(self): self.j["PasswordField"] = True def continue_cmd(self): self.cont = True self.user.cmd = self.j["Command"] def set_cookie(self, cookie, value): self.cookies.append({"name": cookie, "value": value}) def exit(self): self.j["Exit"] = True def notify(self, notification): self.j["Notification"] = notification def exec_js(self, start, cleanup=''): out = '' if cleanup != '': out += '<div id="mark"></div>' out += '<script type="text/javascript">' + start if cleanup != '': out += '$("#mark").data("cleanup",function(){%s});' % cleanup out += '</script>' self.donttype(out) u = u413(currentuser) try: import database as db import time import initialize import echo import ping import login import logout import register import who import desu import clear import boards import wall import nsfwall import history import whois import users import mute import alias import topic import reply import newtopic import board import edit import delete import move import first import last import prev import next import refresh import help import messages import message import newmessage import chat import sql import pi import pirates import b import turkey import cosmos import do import rude command.respond(cli, u) if u.cont: u.j["Command"] = currentuser.cmd if currentuser.cmd != '': cmd = currentuser.cmd db.query( "UPDATE sessions SET expire=DATE_ADD(NOW(),INTERVAL 6 HOUR),cmd='%s',cmddata='%s',context='%s' WHERE id='%s';" % (cmd, db.escape(repr( u.cmddata)), currentuser.context, currentuser.session)) else: db.query( "UPDATE sessions SET expire=DATE_ADD(NOW(),INTERVAL 6 HOUR),cmd='',cmddata='{}',context='%s' WHERE id='%s';" % (currentuser.context, currentuser.session)) if callback == None: req.content_type = 'application/json' else: req.content_type = 'application/javascript' for cookie in u.cookies: Cookie.add_cookie(req, Cookie.Cookie(cookie["name"], cookie["value"])) session = Cookie.Cookie('session', currentuser.session) session.expires = time.time() + 6 * 60 * 60 Cookie.add_cookie(req, session) msgs = int( db.query( "SELECT COUNT(*) FROM messages WHERE receiver=%i AND seen=FALSE;" % currentuser.userid)[0]["COUNT(*)"]) if msgs > 0: u.notify("You have %i new messages in your inbox." % msgs) if callback == None: return json.dumps(u.j) else: return callback + '(' + json.dumps(u.j) + ')' except Exception as e: import traceback u.donttype('<span class="error">' + traceback.format_exc().replace( '&', '&').replace('<', '<').replace('>', '>').replace( '\n', '<br/>').replace(' ' * 4, '<span class="tab"></tab>') + '</span>') req.content_type = "application/json" session = Cookie.Cookie('session', currentuser.session) session.expires = time.time() + 6 * 60 * 60 if callback == None: return json.dumps(u.j) else: return callback + '(' + json.dumps(u.j) + ')'
import next import refresh import help import messages import message import newmessage import pi import pirates import b import turkey import cosmos command.respond(cli,u) if u.cont: u.j["Command"]=currentuser.cmd if callback==None: print "Content-type: application/json" else: print "Content-type: application/javascript" for cookie in u.cookies: print "Set-Cookie: "+cookie["name"]+"="+cookie["value"] print 'Set-Cookie: session='+currentuser.session+'; Max-Age: 21600' print
def refresh_func(args,u413): if u413.user.context.split(' ',1)[0] in ['BOARD','TOPIC','WALL']: command.respond(u413.user.context,u413) else: u413.clear_screen()
def index(req): import user import command cli=req.form.get("cli",None) if cli!=None: cli=cli.value session=req.form.get("session",None) if session!=None: session=session.value #no session if session==None: jar=Cookie.get_cookies(req) if "session" in jar: session=jar.get("session",None) if session!=None: session=session.value currentuser=user.User(session) if cli==None: cli="LOGIN" else: currentuser=user.User() if cli==None: cli="INITIALIZE" else: currentuser=user.User(session) if cli==None: cli="LOGIN" cmdarg=cli.split(' ',1) cmd=cmdarg[0] args="" if len(cmdarg)>1: args=cmdarg[1] callback=req.form.get("callback",None) class u413(object): def __init__(self,u): self.j={ "Command":"", "ContextText":u.context, "CurrentUser":u.name, "EditText":None, "SessionId":u.session, "TerminalTitle":"Terminal - "+u.name, "ClearScreen":False, "Exit":False, "PasswordField":False, "ScrollToBottom":True, "DisplayItems":[], "Notification":None } self.cmds=command.cmds self.user=u self.cont=False self.cookies=[] self.cmddata=u.cmddata self.mute=u.mute def type(self,text,mute=None): if mute==None: mute=self.mute self.j["DisplayItems"].append({"Text":text,"DontType":False,"Mute":mute}) def donttype(self,text,mute=None): if mute==None: mute=self.mute self.j["DisplayItems"].append({"Text":text,"DontType":True,"Mute":mute}) def set_context(self,context): self.j["ContextText"]=context self.user.context=context def set_title(self,title): self.j["TerminalTitle"]=title def edit_text(self,text): self.j["EditText"]=text def clear_screen(self): self.j["ClearScreen"]=True def scroll_down(self): self.j["ScrollToBottom"]=True def use_password(self): self.j["PasswordField"]=True def continue_cmd(self): self.cont=True self.user.cmd=self.j["Command"] def set_cookie(self,cookie,value): self.cookies.append({"name":cookie,"value":value}) def exit(self): self.j["Exit"]=True def notify(self,notification): self.j["Notification"]=notification def exec_js(self,start,cleanup=''): out='' if cleanup!='': out+='<div id="mark"></div>' out+='<script type="text/javascript">'+start if cleanup!='': out+='$("#mark").data("cleanup",function(){%s});'%cleanup out+='</script>' self.donttype(out) u=u413(currentuser) try: import database as db import time import initialize import echo import ping import login import logout import register import who import desu import clear import boards import wall import nsfwall import history import whois import users import mute import alias import topic import reply import newtopic import board import edit import delete import move import first import last import prev import next import refresh import help import messages import message import newmessage import chat import sql import pi import pirates import b import turkey import cosmos import do import rude command.respond(cli,u) if u.cont: u.j["Command"]=currentuser.cmd if currentuser.cmd!='': cmd=currentuser.cmd db.query("UPDATE sessions SET expire=DATE_ADD(NOW(),INTERVAL 6 HOUR),cmd='%s',cmddata='%s',context='%s' WHERE id='%s';"%(cmd,db.escape(repr(u.cmddata)),currentuser.context,currentuser.session)) else: db.query("UPDATE sessions SET expire=DATE_ADD(NOW(),INTERVAL 6 HOUR),cmd='',cmddata='{}',context='%s' WHERE id='%s';"%(currentuser.context,currentuser.session)) if callback==None: req.content_type='application/json' else: req.content_type='application/javascript' for cookie in u.cookies: Cookie.add_cookie(req,Cookie.Cookie(cookie["name"],cookie["value"])) session=Cookie.Cookie('session',currentuser.session) session.expires=time.time()+6*60*60 Cookie.add_cookie(req,session) msgs=int(db.query("SELECT COUNT(*) FROM messages WHERE receiver=%i AND seen=FALSE;"%currentuser.userid)[0]["COUNT(*)"]) if msgs>0: u.notify("You have %i new messages in your inbox."%msgs); if callback==None: return json.dumps(u.j) else: return callback+'('+json.dumps(u.j)+')' except Exception as e: import traceback u.donttype('<span class="error">'+traceback.format_exc().replace('&','&').replace('<','<').replace('>','>').replace('\n','<br/>').replace(' '*4,'<span class="tab"></tab>')+'</span>') req.content_type="application/json" session=Cookie.Cookie('session',currentuser.session) session.expires=time.time()+6*60*60 if callback==None: return json.dumps(u.j) else: return callback+'('+json.dumps(u.j)+')'