def startYowsup(self): if RequestHandler.core.status==Constants.INSTANCESTATUS_RUNNING and RequestHandler.core.session.authStatus==Constants.AUTHSTATUS_LOGGEDIN: self.headers.append(("Location","/inbox")) self.responseCode ="302 Moved Temporarily" return s= self.HTTPSession if s["phone"]==None or s["AESKey"]==None: self.badRequest() return else: RequestHandler.core.initListener() RequestHandler.core.initSender() RequestHandler.core.initSession(self.HTTPSession["phone"], self.HTTPSession["AESKey"]) timeToSleep = 3 #Just so that the callbacks are completed? while RequestHandler.core.session.authStatus!=Constants.AUTHSTATUS_LOGGEDIN and RequestHandler.core.session.authStatus!=Constants.AUTHSTATUS_IDLE and timeToSleep>0: time.sleep(1) timeToSleep = timeToSleep-1 if Constants.AUTHSTATUS_LOGGEDIN == RequestHandler.core.session.authStatus: self.response = Skin.completeHTML("Logged in successfully. Proceed to <a href='/inbox'>inbox</a>") else: if Constants.AUTHSTATUS_IDLE == RequestHandler.core.session.authStatus : self.response = "Looks like it failed. Try again in some time?" else: self.response = "Logging in is taking longer than usual. Proceed to<a href='/checkStatus'>Check status to see status.</a>"
def send(self): self.headers.append(('Content-type','text/html')) if self.requestMethod!="POST": self.responseCode= "400 Bad Request" #Should actually be 405 self.response = "This page can be accessed by POST only" self.responseCode = "200 OK" if RequestHandler.core.yowsupStarted==0: self.response = Skin.completeHTML("Yowsup has not been started. Can't send messages till it has. <a href='/startYowsup'>Start Yowsup</a>") return phone = self.HTTPSession["phone"] messagearg = self.post.get("message",None) recipientarg = self.post.get("recipient",None) if messagearg==None or recipientarg==None or phone==None: self.response = "Invalid arguments" else: recipient = recipientarg[0] message = {"recipient":recipient, "messageText":messagearg[0],"sender":phone} RequestHandler.core.sender.sendMessage(message) url = 'chat?with=%s'%(recipient) self.response = Skin.metaRedirect(url,"Sending... Redirecting you to the chat page.")
def startYowsup(self): if RequestHandler.core.status == Constants.INSTANCESTATUS_RUNNING and RequestHandler.core.session.authStatus == Constants.AUTHSTATUS_LOGGEDIN: self.headers.append(("Location", "/inbox")) self.responseCode = "302 Moved Temporarily" return s = self.HTTPSession if s["phone"] == None or s["AESKey"] == None: self.badRequest() return else: RequestHandler.core.initListener() RequestHandler.core.initSender() RequestHandler.core.initSession(self.HTTPSession["phone"], self.HTTPSession["AESKey"]) timeToSleep = 3 #Just so that the callbacks are completed? while RequestHandler.core.session.authStatus != Constants.AUTHSTATUS_LOGGEDIN and RequestHandler.core.session.authStatus != Constants.AUTHSTATUS_IDLE and timeToSleep > 0: time.sleep(1) timeToSleep = timeToSleep - 1 if Constants.AUTHSTATUS_LOGGEDIN == RequestHandler.core.session.authStatus: self.response = Skin.completeHTML( "Logged in successfully. Proceed to <a href='/inbox'>inbox</a>" ) else: if Constants.AUTHSTATUS_IDLE == RequestHandler.core.session.authStatus: self.response = "Looks like it failed. Try again in some time?" else: self.response = "Logging in is taking longer than usual. Proceed to<a href='/checkStatus'>Check status to see status.</a>"
def siteLogin(self): self.headers.append(('Content-type', 'text/html')) if self.requestMethod != "POST": self.response = "This page can only be accessed by POST. Please go back to the index" else: self.responseCode = "200 OK" phone = self.post.get("phone")[0] password = self.post.get("password")[0] hash = hashlib.md5(password).hexdigest() with BlockingDBICursor(RequestHandler.core.dbi) as dbiCursor: dbiCursor.execute( "SELECT phone FROM users WHERE phone=%s AND password=%s", (phone, hash)) if dbiCursor.rowcount > 0: row = dbiCursor.fetchone() self.HTTPSession["phone"] = row.get("phone") self.HTTPSession["AESKey"] = RequestHandler.core.genAESKey( password) self.response = Skin.completeHTML( "SUCCESS! <a href='startYowsup'>Start yowsup</a>") else: self.response = "Login failed" RequestHandler.core.dbi.done()
def send(self): self.headers.append(('Content-type', 'text/html')) if self.requestMethod != "POST": self.responseCode = "400 Bad Request" #Should actually be 405 self.response = "This page can be accessed by POST only" self.responseCode = "200 OK" if RequestHandler.core.yowsupStarted == 0: self.response = Skin.completeHTML( "Yowsup has not been started. Can't send messages till it has. <a href='/startYowsup'>Start Yowsup</a>" ) return phone = self.HTTPSession["phone"] messagearg = self.post.get("message", None) recipientarg = self.post.get("recipient", None) if messagearg == None or recipientarg == None or phone == None: self.response = "Invalid arguments" else: recipient = recipientarg[0] message = { "recipient": recipient, "messageText": messagearg[0], "sender": phone } RequestHandler.core.sender.sendMessage(message) url = 'chat?with=%s' % (recipient) self.response = Skin.metaRedirect( url, "Sending... Redirecting you to the chat page.")
def wrapUp(self): self.responseCode="200 OK" if self.requestMethod=="POST": confirm = self.post.get("confirmWrapUp",False) if confirm: RequestHandler.core.wrapUp("User requested wrap up") self.response = Skin.completeHTML("Wrapped up.") RequestHandler.core.dbi.close() #RequestHandler.startShutdownSequence() #if you want to shutdown after this. else: self.response = Skin.confirmWrapUpForm()
def wrapUp(self): self.responseCode = "200 OK" if self.requestMethod == "POST": confirm = self.post.get("confirmWrapUp", False) if confirm: RequestHandler.core.wrapUp("User requested wrap up") self.response = Skin.completeHTML("Wrapped up.") RequestHandler.core.dbi.close() #RequestHandler.startShutdownSequence() #if you want to shutdown after this. else: self.response = Skin.confirmWrapUpForm()
def shutdownRequest(self): self.responseCode = "200 OK" if RequestHandler.core.status == Constants.INSTANCESTATUS_RUNNING: self.response = "The python instance must be wrapped up ( or atleast, Not running )before you can shut it down" return if self.requestMethod == "POST": confirm = self.post.get("confirmShutdown", False) if confirm: RequestHandler.startShutdownSequence() self.response = Skin.completeHTML("Shutting down. Bye :)") else: self.response = Skin.confirmShutdownForm()
def shutdownRequest(self): self.responseCode = "200 OK" if RequestHandler.core.status==Constants.INSTANCESTATUS_RUNNING: self.response = "The python instance must be wrapped up ( or atleast, Not running )before you can shut it down" return if self.requestMethod=="POST": confirm = self.post.get("confirmShutdown",False) if confirm: RequestHandler.startShutdownSequence() self.response = Skin.completeHTML("Shutting down. Bye :)") else: self.response = Skin.confirmShutdownForm()
def siteLogin(self): self.headers.append(('Content-type','text/html')) if self.requestMethod!="POST": self.response="This page can only be accessed by POST. Please go back to the index" else: self.responseCode = "200 OK" phone= self.post.get("phone")[0] password = self.post.get("password")[0] hash = hashlib.md5(password).hexdigest() with BlockingDBICursor(RequestHandler.core.dbi) as dbiCursor: dbiCursor.execute( "SELECT phone FROM users WHERE phone=%s AND password=%s", (phone,hash) ) if dbiCursor.rowcount>0: row = dbiCursor.fetchone() self.HTTPSession["phone"] = row.get("phone") self.HTTPSession["AESKey"] = RequestHandler.core.genAESKey(password) self.response= Skin.completeHTML("SUCCESS! <a href='startYowsup'>Start yowsup</a>") else: self.response ="Login failed" RequestHandler.core.dbi.done()