def follow(self): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.decriptPrivateData(cherrypy.session['apiKey'], cherrypy.session['key']) friends = response["friends_usernames"] blocked = response["blocked_usernames"] count = 0 for i in range(len(friends)): if (friends[i] == cherrypy.session['targetUser']): count = 1 if (count == 0): friends.append(cherrypy.session['targetUser']) try: for i in range(len(blocked)): if (blocked[i] == cherrypy.session['targetUser']): blocked.remove(cherrypy.session['targetUser']) except: print("done") response["friends_usernames"] = friends response["blocked_usernames"] = blocked response = testing.addPrivateData(cherrypy.session['apiKey'], cherrypy.session['privateKey'], cherrypy.session['key'], response) raise cherrypy.HTTPRedirect('/pm?user='******'targetUser'])
def keyGenerate(self): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.addPubkey(cherrypy.session['apiKey']) if (response[0]["response"] == "ok"): cherrypy.session['current_prikey'] = response[1] cherrypy.session['current_pubkey'] = response[2]
def block(self, friend=None): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.decriptPrivateData(cherrypy.session['apiKey'], cherrypy.session['key']) blocked = response["blocked_usernames"] friends = response["friends_usernames"] count = 0 for i in range(len(blocked)): if (blocked[i] == friend): count = 1 if (count == 0): blocked.append(friend) cherrypy.session['blocked'].append(friend) try: for i in range(len(friends)): if (friends[i] == friend): friends.remove(friend) except: print("done") response["blocked_usernames"] = blocked response["friends_usernames"] = friends response = testing.addPrivateData(cherrypy.session['apiKey'], cherrypy.session['privateKey'], cherrypy.session['key'], response) raise cherrypy.HTTPRedirect('/friends') return 0
def pm(self, user="******"): cherrypy.session['targetUser'] = user Page = startHTML + "<H1> Private Message </H1><br/>" ApiApp.report(self, cherrypy.session['status']) Page += "<a href='/index'>Home</a></br></br>" Page += "Click on user's name to add them to friends list </br>" Page += "<H1><a href='follow'>" + user + "</a></H1> " Page += '<form action="/send" method="post" enctype="multipart/form-data">' Page += '<br/>' Page += 'Message :   <input style="height:50px"; type="text" name="pmessage"/>' Page += " " Page += '<input type="submit" value="send"/></form>' testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) data = testing.decryptingPM(cherrypy.session['privateKey'], user) Page += "<div class='myBox'>" for i in range(len(data['message']) - 1, -1, -1): Page += data['message'][i] + "</br>" Page += "from  " + str( data['sender'][i]) + " at " + str( data['time'][i]) + "</br>" Page += "</div>" # except KeyError: # Page += "Something went wrong, please log in again </br>" # Page += "<a href='/index'>Login</a>" return Page
def list_users(self): Page = startHTML + "<H1>Here are the online users:</H1><br/>" Page += "<H2> <a href='/index'> Home </a><br/>" try: testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) JSON_object = testing.listUsers(cherrypy.session['apiKey']) users_online = list() users_status = list() for i in range(len(JSON_object["users"])): sqlite.online( self, JSON_object["users"][i]["username"], JSON_object["users"][i]["connection_address"], JSON_object["users"][i]["connection_location"], JSON_object["users"][i]["incoming_pubkey"], JSON_object["users"][i]["connection_updated_at"], JSON_object["users"][i]["status"], ) users_online.append(JSON_object["users"][i]["username"]) users_status.append(JSON_object["users"][i]["status"]) Page += "<H2> Users </br>" Page += " Click on the username to pm them" for i in range(len(users_online)): Page += "<H3><a href='/pm?user="******"'>" + users_online[ i] + "</a> Status: " + users_status[i] + "<br/><br/>" except KeyError: Page += "An error has occured<br/>" Page += "<H2> <a href='/index'> Home </a><br/>" return Page
def tx_broadcast(self, message): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.Broadcast(cherrypy.session['apiKey'], cherrypy.session['privateKey'], message) json_acceptable_string = response.replace("'", "\"") d = json.loads(json_acceptable_string) return d["response"]
def addNewPairs(self): cherrypy.session['privateKey'] = cherrypy.session['current_prikey'] cherrypy.session['pubkey'] = cherrypy.session['current_pubkey'] prikey = cherrypy.session['privateKey'] testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.decriptPrivateData(cherrypy.session['apiKey'], cherrypy.session['key']) private_key_hex = prikey.encode(encoder=nacl.encoding.HexEncoder) response['prikeys'][0] = prikey testing.addPrivateData(cherrypy.session['apiKey'], cherrypy.session['privateKey'], cherrypy.session['key'], response) raise cherrypy.HTTPRedirect('/index')
def ping(self): Page = startHTML try: testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.ping(cherrypy.session['apiKey'], cherrypy.session['pubkey'], cherrypy.session['privateKey']) response = str(response) Page += "<H1>Successful Ping</H1>" Page += "<H2>" + response + "</H2><br/>" Page += "<a href='/index'> Home </a>" except KeyError: Page += "Please Sign in" Page += "<br/>" Page += "<a href='/index'> Login </a>" return Page
def get_privatedata(self, key): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) if (testing != 0): keys = ["1", "2"] response = testing.decriptPrivateData(cherrypy.session['apiKey'], key) cherrypy.session['blocked'] = response["blocked_usernames"] privatekey = nacl.signing.SigningKey( response["prikeys"][0], encoder=nacl.encoding.HexEncoder) publickey = privatekey.verify_key pubkey = publickey.encode( encoder=nacl.encoding.HexEncoder).decode('utf-8') keys[0] = privatekey keys[1] = pubkey return keys else: return 0
def friends(self): Page = startHTML + "<H1> User Friends </H1>" try: testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) ApiApp.report(self, cherrypy.session['status']) Page += "<a href='/index'>Home</a>" Page += "Click on friends name to block them </br>" response = testing.decriptPrivateData(cherrypy.session['apiKey'], cherrypy.session['key']) friends = response["friends_usernames"] for i in range(len(friends)): Page += "<H2><a href='/block?friend=" + friends[ i] + "'>" + friends[i] + "</a></H2><br/>" except KeyError: Page += "Something went wrong, please log in again </br>" Page += "<a href='/index'>Login</a>" return Page
def authoriseUserLogin(username, password): print("Log on attempt from {0}:{1}".format(username, password)) try: testing = mainApi.mainApi(username, password) response = testing.newApiKey() #print("############") print(response) if (response["response"] == "ok"): print("############") print(response) cherrypy.session['apiKey'] = response["api_key"] print("Success") return 0 else: print("faliure") return 1 except KeyError: raise cherrypy.HTTPRedirect('/')
def updateUsers(self): try: testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) JSON_object = testing.listUsers(cherrypy.session['apiKey']) users_online = list() for i in range(len(JSON_object["users"])): sqlite.updateUsers( self, JSON_object["users"][i]["username"], JSON_object["users"][i]["connection_address"], JSON_object["users"][i]["connection_location"], JSON_object["users"][i]["incoming_pubkey"], JSON_object["users"][i]["connection_updated_at"], JSON_object["users"][i]["status"], ) users_online.append(JSON_object["users"][i]["username"]) except: print("lol")
def tx_ping_check(self): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.ping_check(cherrypy.session['apiKey']) print(response)
def tx_groupmessage(self): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.createGroup(cherrypy.session['privateKey'], cherrypy.session['apiKey'])
def tx_privateMessage(self, target, message): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) testing.privateMessage(message, target, cherrypy.session['apiKey'], cherrypy.session['privateKey'])
def report(self, status): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) testing.Report(cherrypy.session['apiKey'], cherrypy.session['pubkey'], status)
def check_messages(self): testing = mainApi.mainApi(cherrypy.session['username'], cherrypy.session['password']) response = testing.CheckMessages(cherrypy.session['apiKey'], cherrypy.session['pubkey']) return 0