diff options
Diffstat (limited to 'main.py')
-rw-r--r-- | main.py | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/main.py b/main.py index 31035c5..9dd1db4 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ import secrets import time from urllib.parse import urlparse -version = "Helium-0.0.0a" +version = "Helium-1.0.0a" attachment_whitelist = ["u.cubeupload.com", "files.catbox.moe", "litter.catbox.moe", "i.ibb.co", "cubeupload.com", "media.tenor.com", "tenor.com", "c.tenor.com", "meower.fraudulent.loan", "fraudulent.loan", "deer.fraudulent.loan"] addr = "localhost" @@ -276,6 +276,20 @@ async def handler(websocket): del data["secure"] await websocket.send(json.dumps({"error": False, "user": data, "listener": listener})) continue + elif r["command"] == "get_post": + fc = util.field_check({"id": range(8,128)}, r) + if fc != True: + await websocket.send(util.error(fc, listener)) + continue + if str(websocket.id) not in client_data: + await websocket.send(util.error("unauthorized", listener)) + continue + data = db.posts.get_by_id(r["id"], True) + if type(data) != dict: + await websocket.send(util.error(data, listener)) + continue + await websocket.send(json.dumps({"error": False, "post": data, "listener": listener})) + continue elif r["command"] == "set_property": fc = util.field_check({"property": range(1,64), "value": range(0,2048)}, r) if fc != True: @@ -388,6 +402,33 @@ async def handler(websocket): continue data = db.inbox.get_recent() await websocket.send(json.dumps({"error": False, "inbox": data, "listener": listener})) + elif r["command"] == "post_inbox": + fc = util.field_check({"content": range(0,3001), "attachments": range(0,4)}, r) + if fc != True: + await websocket.send(util.error(fc, listener)) + continue + if str(websocket.id) not in client_data: + await websocket.send(util.error("unauthorized", listener)) + continue + attachments = [] + for i in r["attachments"]: + if urlparse(i).hostname in attachment_whitelist: + attachments.append(i) + if len(r["content"]) == 0 and len(r["attachments"]) == 0: + await websocket.send(util.error("lengthInvalid", listener)) + continue + data = { + "_id": str(uuid.uuid4()), + "created": round(time.time()), + "content": r["content"], + "attachments": attachments + } + posted = db.inbox.add(data) + if posted != True: + await websocket.send(util.error(fc, listener)) + continue + await websocket.send(json.dumps({"error": False, "listener": listener})) + continue elif r["command"] == "post": fc = util.field_check({"content": range(0,3001), "replies": range(0,4), "attachments": range(0,4)}, r) if fc != True: @@ -427,6 +468,8 @@ async def handler(websocket): "command": "new_post", "data": data })) + await websocket.send(json.dumps({"error": False, "listener": listener})) + continue elif r["command"] == "ping": pass elif r["command"] in deprecated: |