From f583352e426ef114865e72832a0d28b8cf33827c Mon Sep 17 00:00:00 2001 From: Andrew Gundersen Date: Mon, 21 Dec 2020 12:00:32 -0600 Subject: [PATCH] db --- __pycache__/agent.cpython-38.pyc | Bin 1367 -> 1313 bytes __pycache__/db.cpython-38.pyc | Bin 0 -> 675 bytes __pycache__/mail.cpython-38.pyc | Bin 1573 -> 1600 bytes __pycache__/message.cpython-38.pyc | Bin 758 -> 767 bytes __pycache__/session.cpython-38.pyc | Bin 1794 -> 1878 bytes agent.py | 4 ++-- db.py | 26 ++++++++++++++++++++++++++ mail.py | 8 ++++---- message.py | 2 +- session.py | 19 ++++++++++++++----- 10 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 __pycache__/db.cpython-38.pyc create mode 100644 db.py diff --git a/__pycache__/agent.cpython-38.pyc b/__pycache__/agent.cpython-38.pyc index e0a1799db4ca3f40d59a7aee0d7f3d0449e448bf..8fdd51c9e7be8b5a0ab8412a3b3a116f7676a72a 100644 GIT binary patch delta 132 zcmcc4wUCQ9l$V!_0SMAr?!?P);?aQ1m=Y5CCH0H244j diff --git a/__pycache__/db.cpython-38.pyc b/__pycache__/db.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0050954d422340f398783fb82badb6ed3cd26257 GIT binary patch literal 675 zcmYjNO>fgc5Z(2z9oI<;NSsk_m64jHk@_L=A(|#p571QkP^A?pN;(oPzY?+;mL@NBs;UMc zKqo{{FoXe2FyMkC9h+kd4P?l{1nZiM3}(hQWWc_rVheKMK=uW!sJK_&7uGrY!313%^GKnL?VzvJ2VX+W-})*P zHuS^(WnW>(rNX|91_P7`4NqIT3sYBI=ZQ{L(ExNsJ`*s$u(c7AuXJU6qm%$!vyjxt zo9)+Z&DUhjfv?&8(TZvL=Gk($U4L0W=@cFp8m;E5!i}(EqDmDmPV23D!IPt@meU)- zvz?`}^Q6&njW{2q4ticBl`r*;uF#7@bj{fL-ygFfhOs%1P%dKoJ<8Ewgb>r-cOtV| z@t;bmn=C5zVHnLoS2!!xP`wNNpmaNCcd9Rnvmwe7To!{xY^8G+4-(rs4TROue)Dq3~Ls+$Hw_R@ur&c{bZnrO*ty=PT+H7~k)?Ig; txh;kB&*t>S6;DJ+b|C>O(Za=S;IyqRlwf&wNO8>@P1Pv2y?b literal 0 HcmV?d00001 diff --git a/__pycache__/mail.cpython-38.pyc b/__pycache__/mail.cpython-38.pyc index 8c36803d8715be1039d470665db7d04a08ce119a..39159837f5deebec8a7cae3296bffb2262dd48c5 100644 GIT binary patch delta 492 zcmYjNJxc>Y5Z&3`yIejlCTc=dB*avwkot-gf=w(;BZ_DdBzuU5B(fI}<${fWAZ#V1 zND6E54~XEuIK&e;r1(?Hq9H~D#vVMDL#c=rdW#s;y&|)aYZ%t0Z8*~(-50> zBBP+E%#rZ34ptdtpa6MuFZ@aq(-?+4W+5Ajm`^~#6o%4#iIU(GVbap`rItub#91&% z@7+ O7t*sY61rkOE&m6B1yS5YFsRjA_yqTS}{P3TDw%e+P`zP^kk zLFieM<0A{2hW>bFHQb?aQ69jhJZ?<9F#Rvd!mlD+g delta 63 zcmey*`i+%0l$V!_0SLC}T#diKk(Y;2nQezw6!x=yKBq}eks>Hn15L%!QwGEUYY_t!hAySc4TNj#MiMrOLr8#_ zDxt~~3{}#l>d3%=I(F~Cz+j1isp4PooTbltpY8Yjz3=&bh<-=WX1zW~(4LDw-J|d@ zYQfXPPUn^)3Wh-vJSK`N_K7H_gMrX|5Psx|{61Ww(6k5i&OAe|L_bH*j}b~TAm+&a zqA%VTmC0NQld570aMS(} Ns|`<(fQ!zM{Rh#idiVeU delta 463 zcmY+Ay-ve05XWuDNlZ#ZOZg~Y0w#!Bi3K*KNG!n81z0kWmc~L!OIw^!F?8bN0V=bA z7+^vS3`i{S2D|`6UVw#nfHO!SPV)Km_nq%|_hz5i_D(iyA+W~soBwL`?P5@EEP1UJ3tnFEde^V*^H$=AtpqOlqOHw(g9o*+xz|4SW8Mnx ziO4_~k42qYy#dK`mCnyiffN_PA#4zWDK-%K%#j>sco^H*lIJwgfM0&l(gHmNB4A^R zZ4<~g&@Z80+5aJYcIAq`xLbfPQ$22S-Vq}Z|G_9&F$$7U>+_|_ekQnf&# R5XG1@P1pWOW0(;*+80p%Zteg8 diff --git a/agent.py b/agent.py index 2d0fbc3..1ff4d86 100644 --- a/agent.py +++ b/agent.py @@ -16,12 +16,12 @@ class Agent: self.service = None self.client_connection = connection - async def recv_agent_intent(self): + async def recv(self): package = await self.client_connection.recv() jpackage = self.__decode(package) return jpackage - async def send_agent_intent(self, jpackage): + async def send(self, jpackage): package = self.__encode(jpackage) await self.client_connection.send(package) diff --git a/db.py b/db.py new file mode 100644 index 0000000..9b72d8e --- /dev/null +++ b/db.py @@ -0,0 +1,26 @@ +# db.py + +import mysql.connector + +# database settings +DBUSER = "remoteAccess" +DBPASSWORD = "remoteAccess2020" +DBHOST = "75.86.178.105" + +# People Schema +# ------------- + +people_cnx = mysql.connector.connect(user=DBUSER, password=DBPASSWORD, host=DBHOST, database="People") +people_cursor = people_cnx.cursor(buffered=True) + +# Verify that an email is a valid crimata_id. +def verify(crimata_id, get=False): + query = (f"SELECT * FROM People.users WHERE crimata_id='{crimata_id}';") + + people_cursor.execute(query) + + verified = False + for (_, crimata_id, _) in people_cursor: + verified = True + + return verified \ No newline at end of file diff --git a/mail.py b/mail.py index 7ca46d7..cb5b6f9 100644 --- a/mail.py +++ b/mail.py @@ -20,25 +20,25 @@ class Mail: return intent # Send intent. - def mailbox_send(self, jpackage): + async def mailbox_send(self, jpackage): mail = self.__encode(jpackage) print(f"Putting message into outbox {self.crimata_id}") mailroom.put_mail(self.crimata_id, mail) + await self.send(1) # agent confirmation. def __encode(self, jpackage) -> typs.Mail: j = jpackage owner = self.crimata_id target = j.get("target") - print(target) text = j.get("text") audio = j.get("audio") mail = typs.Mail(owner, target, text, audio) return mail - @staticmethod - def __decode(mail: typs.Mail): + def __decode(self, mail: typs.Mail): jpackage = { "owner": mail.owner, + "target": self.crimata_id, "text": mail.text, #dev only "audio": mail.audio } diff --git a/message.py b/message.py index 9f803b5..73fc394 100644 --- a/message.py +++ b/message.py @@ -33,7 +33,7 @@ async def messenger(): # Put the mailbox back mailroom.que.put(mailbox) - await asyncio.sleep(1) + await asyncio.sleep(0.1) async def run(): await messenger() \ No newline at end of file diff --git a/session.py b/session.py index 2e1f806..ec4f0b9 100644 --- a/session.py +++ b/session.py @@ -4,6 +4,7 @@ import time import asyncio import websockets +import db import mail import agent @@ -29,15 +30,23 @@ class Session(agent.Agent, mail.Mail): try: jpackage = await asyncio.wait_for( - self.recv_agent_intent(), timeout=0.2) + self.recv(), timeout=0.1) except asyncio.TimeoutError: continue except websockets.exceptions.ConnectionClosed: await self.shutdown() - continue + continue + + # Check if target is verified. + verified = db.verify(jpackage.get("target")) + + # Send error code back to agent. + if not verified: + await self.send(2) + continue # Call corresponding endpoint. - self.mailbox_send(jpackage) + await self.mailbox_send(jpackage) # Send mail back to agent. #! Pulling message from backend. @@ -51,13 +60,13 @@ class Session(agent.Agent, mail.Mail): # Try recv. try: jpackage = await asyncio.wait_for( - self.mailbox_recv(), timeout=0.2) + self.mailbox_recv(), timeout=0.1) except asyncio.TimeoutError: continue # Send message to Agent. print("Sending message") - await self.send_agent_intent(jpackage) + await self.send(jpackage) # Shutdown protocol. async def shutdown(self): -- 2.43.0