def on_identify(self, data): guild_id = data["guild_id"] if not guild_accepts_visitors(guild_id) and not check_user_in_guild(guild_id): disconnect() return session["socket_guild_id"] = guild_id channels = [] if guild_accepts_visitors(guild_id) and not check_user_in_guild(guild_id): channels = get_guild_channels(guild_id, force_everyone=True) else: channels = get_guild_channels(guild_id) join_room("GUILD_"+guild_id) for chan in channels: if chan["read"]: join_room("CHANNEL_"+chan["channel"]["id"]) if session.get("unauthenticated", True) and guild_id in session.get("user_keys", {}): join_room("IP_"+get_client_ipaddr()) elif not session.get("unauthenticated", True): join_room("USER_"+str(session["user_id"])) visitor_mode = data["visitor_mode"] if not visitor_mode: if session["unauthenticated"]: emit("embed_user_connect", {"unauthenticated": True, "username": session["username"], "discriminator": session["user_id"]}, room="GUILD_"+guild_id) else: nickname = db.session.query(GuildMembers).filter(GuildMembers.guild_id == guild_id, GuildMembers.user_id == session["user_id"]).first().nickname emit("embed_user_connect", {"unauthenticated": False, "id": str(session["user_id"]), "nickname": nickname, "username": session["username"],"discriminator": session["discriminator"], "avatar_url": session["avatar"]}, room="GUILD_"+guild_id) emit("identified") self.teardown_db_session()
def on_identify(self, data): authorization = data.get("session", None) if authorization: try: data = serializer.loads(authorization) session.update(data) except: pass guild_id = data["guild_id"] if not guild_accepts_visitors(guild_id) and not check_user_in_guild( guild_id): disconnect() self.teardown_db_session() return session["socket_guild_id"] = guild_id channels = [] forced_role = get_forced_role(guild_id) if guild_accepts_visitors( guild_id) and not check_user_in_guild(guild_id): channels = get_guild_channels(guild_id, force_everyone=True, forced_role=forced_role) else: channels = get_guild_channels(guild_id, forced_role=forced_role) join_room("GUILD_" + guild_id) for chan in channels: if chan["read"]: join_room("CHANNEL_" + chan["channel"]["id"]) if session.get("unauthenticated", True) and guild_id in session.get( "user_keys", {}): join_room("IP_" + get_client_ipaddr()) elif not session.get("unauthenticated", True): join_room("USER_" + str(session["user_id"])) visitor_mode = data["visitor_mode"] if not visitor_mode: if session["unauthenticated"]: emit("embed_user_connect", { "unauthenticated": True, "username": session["username"], "discriminator": session["user_id"] }, room="GUILD_" + guild_id) else: nickname = redisqueue.get_guild_member( guild_id, session["user_id"]).get("nickname") emit("embed_user_connect", { "unauthenticated": False, "id": str(session["user_id"]), "nickname": nickname, "username": session["username"], "discriminator": session["discriminator"], "avatar_url": session["avatar"] }, room="GUILD_" + guild_id) emit("identified") self.teardown_db_session()
def query_guild_visitor(): guild_id = request.args.get('guild_id') if check_guild_existance(guild_id): if not guild_accepts_visitors(guild_id): abort(403) return process_query_guild(guild_id, True) abort(404)
def on_heartbeat(self, data): time.sleep(0) if "socket_guild_id" not in session: disconnect() return guild_id = data["guild_id"] visitor_mode = data["visitor_mode"] if not visitor_mode: key = None if "unauthenticated" not in session: self.teardown_db_session() disconnect() return if session["unauthenticated"]: key = session["user_keys"][guild_id] time.sleep(0) status = update_user_status(guild_id, session["username"], key) if status["revoked"] or status["banned"]: emit("revoke") self.teardown_db_session() time.sleep(1) disconnect() return else: emit("ack") else: if not guild_accepts_visitors(guild_id): self.teardown_db_session() disconnect() return self.teardown_db_session()
def guild_embed(guild_id): if check_guild_existance(guild_id): guild = redisqueue.get_guild(guild_id) dbguild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first() if not dbguild: abort(404) guild_dict = { "id": guild["id"], "name": guild["name"], "unauth_users": dbguild.unauth_users, "icon": guild["icon"], "invite_link": dbguild.invite_link, "invite_domain": parse_url_domain(dbguild.invite_link), "post_timeout": dbguild.post_timeout, } customcss = get_custom_css() return render_template("embed.html.j2", disabled=guild_id in list_disabled_guilds(), login_greeting=get_logingreeting(), guild_id=guild_id, guild=guild_dict, generate_guild_icon=generate_guild_icon_url, unauth_enabled=guild_query_unauth_users_bool(guild_id), visitors_enabled=guild_accepts_visitors(guild_id), unauth_captcha_enabled=guild_unauthcaptcha_enabled(guild_id), client_id=config['client-id'], recaptcha_site_key=config["recaptcha-site-key"], css=customcss, cssvariables=parse_css_variable(customcss), same_target=request.args.get("sametarget", False) == "true", userscalable=request.args.get("userscalable", "True").lower().startswith("t"), fixed_sidenav=request.args.get("fixedsidenav", "False").lower().startswith("t"), is_peak=is_peak(guild_id) ) abort(404)
def guild_embed(guild_id): if check_guild_existance(guild_id): guild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first() guild_dict = { "id": guild.guild_id, "name": guild.name, "unauth_users": guild.unauth_users, "icon": guild.icon, "discordio": guild.discordio, } customcss = get_custom_css() return render_template("embed.html.j2", login_greeting=get_logingreeting(), guild_id=guild_id, guild=guild_dict, generate_guild_icon=generate_guild_icon_url, unauth_enabled=guild_query_unauth_users_bool(guild_id), visitors_enabled=guild_accepts_visitors(guild_id), unauth_captcha_enabled=guild_unauthcaptcha_enabled(guild_id), client_id=config['client-id'], recaptcha_site_key=config["recaptcha-site-key"], css=customcss, cssvariables=parse_css_variable(customcss), same_target=request.args.get("sametarget", False) == "true" ) abort(404)
def server_members_visitor(): guild_id = request.args.get("guild_id", None) if not check_guild_existance(guild_id): abort(404) if not guild_accepts_visitors(guild_id): abort(403) members = query_server_members(guild_id) return jsonify(members)
def on_heartbeat(self, data): guild_id = data["guild_id"] visitor_mode = data["visitor_mode"] if not visitor_mode: key = None if session["unauthenticated"]: key = session["user_keys"][guild_id] status = update_user_status(guild_id, session["username"], key) if status["revoked"] or status["banned"]: emit("revoke") time.sleep(1000) disconnect() else: if not guild_accepts_visitors(guild_id): disconnect()
def fetch_visitor(): guild_id = request.args.get("guild_id") channel_id = request.args.get('channel_id') after_snowflake = request.args.get('after', None, type=int) if not guild_accepts_visitors(guild_id): abort(403) messages = {} chan = filter_guild_channel(guild_id, channel_id, True) if not chan: abort(404) if not chan.get("read") or chan["channel"]["type"] != "text": status_code = 401 else: messages = get_channel_messages(guild_id, channel_id, after_snowflake) status_code = 200 response = jsonify(messages=messages) response.status_code = status_code return response
def guild_embed(guild_id): if check_guild_existance(guild_id): guild = db.session.query(Guilds).filter( Guilds.guild_id == guild_id).first() guild_dict = { "id": guild.guild_id, "name": guild.name, "unauth_users": guild.unauth_users, "icon": guild.icon, "discordio": guild.discordio, } return render_template( "embed.html.j2", login_greeting=get_logingreeting(), guild_id=guild_id, guild=guild_dict, generate_guild_icon=generate_guild_icon_url, unauth_enabled=guild_query_unauth_users_bool(guild_id), visitors_enabled=guild_accepts_visitors(guild_id), client_id=config['client-id'], css=get_custom_css()) abort(404)