mirror of
https://github.com/TitanEmbeds/Titan.git
synced 2025-06-16 19:35:24 +02:00
Move tracking online users to redis
This commit is contained in:
@ -3,6 +3,7 @@ from flask_socketio import emit
|
||||
from functools import wraps
|
||||
from titanembeds.database import db, get_administrators_list, Cosmetics, Guilds, UnauthenticatedUsers, UnauthenticatedBans, TitanTokens, TokenTransactions, get_titan_token, set_titan_token, list_disabled_guilds, DisabledGuilds, UserCSS, AuthenticatedUsers
|
||||
from titanembeds.oauth import generate_guild_icon_url
|
||||
from titanembeds.utils import get_online_embed_user_keys
|
||||
import datetime
|
||||
import json
|
||||
from sqlalchemy import func
|
||||
@ -22,9 +23,9 @@ def is_admin(f):
|
||||
return decorator(f)
|
||||
|
||||
def get_online_users_count():
|
||||
time_past = (datetime.datetime.now() - datetime.timedelta(seconds = 15)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
unauths = db.session.query(func.count(UnauthenticatedUsers.id)).filter(UnauthenticatedUsers.last_timestamp > time_past, UnauthenticatedUsers.revoked == False).scalar()
|
||||
auths = db.session.query(func.count(AuthenticatedUsers.id)).filter(AuthenticatedUsers.last_timestamp > time_past).scalar()
|
||||
users = get_online_embed_user_keys()
|
||||
auths = len(users["AuthenticatedUsers"])
|
||||
unauths = len(users["UnauthenticatedUsers"])
|
||||
return {"authenticated": auths, "guest": unauths, "total": auths + unauths}
|
||||
|
||||
@admin.route("/")
|
||||
@ -114,14 +115,13 @@ def cosmetics_patch():
|
||||
def prepare_guild_members_list(members, bans):
|
||||
all_users = []
|
||||
ip_pool = []
|
||||
members = sorted(members, key=lambda k: datetime.datetime.strptime(str(k.last_timestamp.replace(tzinfo=None, microsecond=0)), "%Y-%m-%d %H:%M:%S"), reverse=True)
|
||||
members = sorted(members, key=lambda k: k.id, reverse=True)
|
||||
for member in members:
|
||||
user = {
|
||||
"id": member.id,
|
||||
"username": member.username,
|
||||
"discrim": member.discriminator,
|
||||
"ip": member.ip_address,
|
||||
"last_visit": member.last_timestamp,
|
||||
"kicked": member.revoked,
|
||||
"banned": False,
|
||||
"banned_timestamp": None,
|
||||
@ -164,7 +164,7 @@ def administrate_guild(guild_id):
|
||||
permissions.append("Manage Embed Settings")
|
||||
permissions.append("Ban Members")
|
||||
permissions.append("Kick Members")
|
||||
all_members = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.guild_id == guild_id).order_by(UnauthenticatedUsers.last_timestamp).all()
|
||||
all_members = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.guild_id == guild_id).order_by(UnauthenticatedUsers.id).all()
|
||||
all_bans = db.session.query(UnauthenticatedBans).filter(UnauthenticatedBans.guild_id == guild_id).all()
|
||||
users = prepare_guild_members_list(all_members, all_bans)
|
||||
dbguild_dict = {
|
||||
|
@ -1,6 +1,6 @@
|
||||
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers, GuildMembers, Messages, get_channel_messages, list_all_guild_members, get_guild_member, get_administrators_list, get_badges
|
||||
from titanembeds.decorators import valid_session_required, discord_users_only, abort_if_guild_disabled
|
||||
from titanembeds.utils import check_guild_existance, guild_accepts_visitors, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, user_unauthenticated, checkUserRevoke, checkUserBanned, update_user_status, check_user_in_guild, get_guild_channels, guild_webhooks_enabled, guild_unauthcaptcha_enabled, get_member_roles
|
||||
from titanembeds.utils import check_guild_existance, guild_accepts_visitors, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, user_unauthenticated, checkUserRevoke, checkUserBanned, update_user_status, check_user_in_guild, get_guild_channels, guild_webhooks_enabled, guild_unauthcaptcha_enabled, get_member_roles, get_online_embed_user_keys
|
||||
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
|
||||
from flask import Blueprint, abort, jsonify, session, request, url_for
|
||||
from flask import current_app as app
|
||||
@ -111,9 +111,9 @@ def get_online_discord_users(guild_id, embed):
|
||||
return embed['members']
|
||||
|
||||
def get_online_embed_users(guild_id):
|
||||
time_past = (datetime.datetime.now() - datetime.timedelta(seconds = 15)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
unauths = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.last_timestamp > time_past, UnauthenticatedUsers.revoked == False, UnauthenticatedUsers.guild_id == guild_id).all()
|
||||
auths = db.session.query(AuthenticatedUsers).filter(AuthenticatedUsers.last_timestamp > time_past, AuthenticatedUsers.guild_id == guild_id).all()
|
||||
usrs = get_online_embed_user_keys(guild_id)
|
||||
unauths = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.user_key.in_(usrs["UnauthenticatedUsers"]), UnauthenticatedUsers.revoked == False, UnauthenticatedUsers.guild_id == guild_id).all() if usrs["UnauthenticatedUsers"] else []
|
||||
auths = db.session.query(AuthenticatedUsers).filter(AuthenticatedUsers.client_id.in_(usrs["AuthenticatedUsers"]), AuthenticatedUsers.guild_id == guild_id).all() if usrs["AuthenticatedUsers"] else []
|
||||
users = {'unauthenticated':[], 'authenticated':[]}
|
||||
for user in unauths:
|
||||
meta = {
|
||||
|
@ -201,7 +201,7 @@ def administrate_guild(guild_id):
|
||||
if check_user_permission(guild_id, 1):
|
||||
permissions.append("Kick Members")
|
||||
cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first()
|
||||
all_members = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.guild_id == guild_id).order_by(UnauthenticatedUsers.last_timestamp).all()
|
||||
all_members = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.guild_id == guild_id).order_by(UnauthenticatedUsers.id).all()
|
||||
all_bans = db.session.query(UnauthenticatedBans).filter(UnauthenticatedBans.guild_id == guild_id).all()
|
||||
users = prepare_guild_members_list(all_members, all_bans)
|
||||
dbguild_dict = {
|
||||
@ -275,14 +275,13 @@ def add_bot(guild_id):
|
||||
def prepare_guild_members_list(members, bans):
|
||||
all_users = []
|
||||
ip_pool = []
|
||||
members = sorted(members, key=lambda k: datetime.datetime.strptime(str(k.last_timestamp.replace(tzinfo=None, microsecond=0)), "%Y-%m-%d %H:%M:%S"), reverse=True)
|
||||
members = sorted(members, key=lambda k: k.id, reverse=True)
|
||||
for member in members:
|
||||
user = {
|
||||
"id": member.id,
|
||||
"username": member.username,
|
||||
"discrim": member.discriminator,
|
||||
"ip": member.ip_address,
|
||||
"last_visit": member.last_timestamp,
|
||||
"kicked": member.revoked,
|
||||
"banned": False,
|
||||
"banned_timestamp": None,
|
||||
|
Reference in New Issue
Block a user