From a6fbcddad2abd4f0696df8799dab44a4cc6b7f43 Mon Sep 17 00:00:00 2001 From: Aevann1 Date: Sun, 20 Mar 2022 00:16:13 +0200 Subject: [PATCH] bu --- files/__main__.py | 3 +- files/routes/__init__.py | 3 +- files/routes/admin.py | 6 -- files/routes/chat.py | 122 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 files/routes/chat.py diff --git a/files/__main__.py b/files/__main__.py index 891f364ce6..61e6249dc2 100644 --- a/files/__main__.py +++ b/files/__main__.py @@ -1,5 +1,4 @@ -import gevent.monkey -gevent.monkey.patch_all() + from os import environ, path import secrets from flask import * diff --git a/files/routes/__init__.py b/files/routes/__init__.py index e9121b46a5..bcca8b0436 100644 --- a/files/routes/__init__.py +++ b/files/routes/__init__.py @@ -15,4 +15,5 @@ from .votes import * from .feeds import * from .awards import * from .giphy import * -from .subs import * \ No newline at end of file +from .subs import * +from .chat import * \ No newline at end of file diff --git a/files/routes/admin.py b/files/routes/admin.py index 52e1e6d10e..0907b2aa3c 100644 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -24,12 +24,6 @@ GUMROAD_TOKEN = environ.get("GUMROAD_TOKEN", "").strip() month = datetime.now().strftime('%B') -@app.get("/chat") -@auth_required -def chat( v): - return render_template("chat.html", v=v) - - @app.post('/admin/merge//') @admin_level_required(3) def merge(v, id1, id2): diff --git a/files/routes/chat.py b/files/routes/chat.py new file mode 100644 index 0000000000..3d8525c1e3 --- /dev/null +++ b/files/routes/chat.py @@ -0,0 +1,122 @@ +import time +from os import remove +from PIL import Image as IMAGE + +from files.helpers.wrappers import * +from files.helpers.alerts import * +from files.helpers.sanitize import * +from files.helpers.security import * +from files.helpers.get import * +from files.helpers.images import * +from files.helpers.const import * +from files.classes import * +from flask import * +from files.__main__ import app, cache, limiter, db_session +from .front import frontlist +from files.helpers.discord import add_role +from datetime import datetime +import requests +from urllib.parse import quote, urlencode + + + +import sys +from flask_socketio import * + +month = datetime.now().strftime('%B') + +sex = SocketIO( + app + ) + +@app.get("/chat") +@auth_required +def chat( v): + return render_template("chat.html", v=v) + + +SIDS={} + +COMMANDS={} +HELP={} + +TYPING={} + + + +@sex.on('connect') +def socket_connect_auth_user(): + + + g.db=db_session() + + v=get_logged_in_user() + + if v.id in SIDS: + SIDS[v.id].append(request.sid) + else: + SIDS[v.id]=[request.sid] + + + emit("status", {'status':"connected"}) + + g.db.close() + + +def socket_auth_required(f): + + def wrapper(*args, **kwargs): + + g.db=db_session() + v=get_logged_in_user() + + if request.sid not in SIDS.get(v.id, []): + if v.id in SIDS: + SIDS[v.id].append(request.sid) + else: + SIDS[v.id]=[request.sid] + + f(*args, v, **kwargs) + g.db.close() + + + wrapper.__name__=f.__name__ + return wrapper + + + +@sex.on('join room') +@socket_auth_required +def join_guild_room(data, v): + + return True + + + + +@sex.on('leave room') +@socket_auth_required +def leave_guild_room(data, v): + emit("status", {'status':f"Left #{guild.name}"}) + + + + +@sex.on('speak') +@socket_auth_required +def speak(data, v): + + raw_text=data['text'][0:1000].lstrip().rstrip() + if not raw_text:return + + text = sanitize(raw_text) + + data={ + "avatar": v.profile_url, + "username":v.username, + "text":text, + "time": time.strftime("%d %b %Y at %H:%M:%S", time.gmtime(int(time.time()))), + "userlink":v.url + } + + emit('speak', data) \ No newline at end of file