Beispiel #1
0
def guilds():
    guilds = []
    dbguilds = db.session.query(Guilds).all()
    for guild in dbguilds:
        rguild = redisqueue.get_guild(guild.guild_id)
        if not rguild:
            continue
        guilds.append({
            "guild_id": guild.guild_id,
            "name": rguild["name"],
            "icon": rguild["icon"]
        })
    return render_template("admin_guilds.html.j2",
                           servers=guilds,
                           icon_generate=generate_guild_icon_url)
Beispiel #2
0
def administrate_guild(guild_id):
    if not check_user_can_administrate_guild(guild_id):
        return redirect(url_for("user.dashboard"))
    guild = redisqueue.get_guild(guild_id)
    if not guild:
        session["redirect"] = url_for("user.administrate_guild", guild_id=guild_id, _external=True)
        return redirect(url_for("user.add_bot", guild_id=guild_id))
    session["redirect"] = None
    db_guild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first()
    if not db_guild:
        db_guild = Guilds(guild["id"])
        db.session.add(db_guild)
        db.session.commit()
    permissions=[]
    if check_user_permission(guild_id, 5):
        permissions.append("Manage Embed Settings")
    if check_user_permission(guild_id, 2):
        permissions.append("Ban Members")
    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.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 = {
        "id": db_guild.guild_id,
        "name": guild["name"],
        "roles": guild["roles"],
        "unauth_users": db_guild.unauth_users,
        "visitor_view": db_guild.visitor_view,
        "webhook_messages": db_guild.webhook_messages,
        "chat_links": db_guild.chat_links,
        "bracket_links": db_guild.bracket_links,
        "mentions_limit": db_guild.mentions_limit,
        "unauth_captcha": db_guild.unauth_captcha,
        "icon": guild["icon"],
        "invite_link": db_guild.invite_link if db_guild.invite_link != None else "",
        "guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "",
        "post_timeout": db_guild.post_timeout,
        "max_message_length": db_guild.max_message_length,
        "banned_words_enabled": db_guild.banned_words_enabled,
        "banned_words_global_included": db_guild.banned_words_global_included,
        "banned_words": json.loads(db_guild.banned_words),
        "autorole_unauth": db_guild.autorole_unauth,
        "autorole_discord": db_guild.autorole_discord,
        "file_upload": db_guild.file_upload,
    }
    return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics, disabled=(guild_id in list_disabled_guilds()))
Beispiel #3
0
def delete_webhook_if_too_much(webhook):
    if not webhook:
        return
    guild_id = webhook["guild_id"]
    if guild_webhooks_enabled(guild_id):
        guild = redisqueue.get_guild(guild_id)
        guild_webhooks = guild["webhooks"]
        total_wh_cnt = len(guild_webhooks)
        titan_wh_cnt = 0
        for wh in guild_webhooks:
            if wh["name"].startswith("[Titan] "):
                titan_wh_cnt = titan_wh_cnt + 1
        if titan_wh_cnt > 0 and total_wh_cnt >= 8:
            try:
                discord_api.delete_webhook(webhook["id"], webhook["token"])
            except:
                pass  # not my problem now
Beispiel #4
0
def get_channel_webhook_url(guild_id, channel_id):
    if not guild_webhooks_enabled(guild_id):
        return None
    guild = redisqueue.get_guild(guild_id)
    guild_webhooks = guild["webhooks"]
    name = "[Titan] "
    username = session["username"]
    if len(username) > 19:
        username = username[:19]
    if user_unauthenticated():
        name = name + username + "#" + str(session["user_id"])
    else:
        name = name + username + "#" + str(session["discriminator"])
    for webhook in guild_webhooks:
        if channel_id == webhook["channel_id"] and webhook["name"] == name:
            return {"id": webhook["id"], "token": webhook["token"]}
    webhook = discord_api.create_webhook(channel_id, name)
    return webhook["content"]
Beispiel #5
0
def get_online_discord_users(guild_id, embed):
    apimembers = redisqueue.list_guild_members(guild_id)
    apimembers_filtered = {}
    for member in apimembers:
        apimembers_filtered[int(member["id"])] = member
    guild_roles = redisqueue.get_guild(guild_id)["roles"]
    guildroles_filtered = {}
    for role in guild_roles:
        guildroles_filtered[role["id"]] = role
    for member in embed['members']:
        apimem = apimembers_filtered.get(int(member["id"]))
        member["hoist-role"] = None
        member["color"] = None
        if apimem:
            member["hoist-role"] = apimem["hoist-role"]
            member["color"] = apimem["color"]
            member["avatar"] = apimem["avatar"]
            member["avatar_url"] = apimem["avatar_url"]
    return embed['members']
Beispiel #6
0
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=str(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=request.args.get("forcepeak", False) == "1"
            or is_peak(guild_id))
    abort(404)
Beispiel #7
0
 def get_user_color(self, guild_id, user_id):
     color = None
     member = redisqueue.get_guild_member(guild_id, user_id)
     if not member:
         return None
     guild_roles = redisqueue.get_guild(guild_id)["roles"]
     guildroles_filtered = {}
     for role in guild_roles:
         guildroles_filtered[role["id"]] = role
     member_roleids = member["roles"]
     member_roles = []
     for roleid in member_roleids:
         role = guildroles_filtered.get(str(roleid))
         if not role:
             continue
         member_roles.append(role)
     member_roles = sorted(member_roles, key=lambda k: k['position'])
     for role in member_roles:
         if role["color"] != 0:
             color = '{0:02x}'.format(role["color"])
             while len(color) < 6:
                 color = "0" + color
     return color
Beispiel #8
0
 def on_disconnect(self):
     time.sleep(0)
     if "user_keys" not in session:
         self.teardown_db_session()
         return
     if "socket_guild_id" not in session:
         self.teardown_db_session()
         return
     else:
         guild_id = session["socket_guild_id"]
         msg = {}
         if session["unauthenticated"]:
             msg = {
                 "unauthenticated": True,
                 "username": session["username"],
                 "discriminator": session["user_id"]
             }
         else:
             msg = {"unauthenticated": False, "id": str(session["user_id"])}
         emit("embed_user_disconnect", msg, room="GUILD_" + guild_id)
         if guild_webhooks_enabled(guild_id):  # Delete webhooks
             guild_webhooks = redisqueue.get_guild(guild_id)["webhooks"]
             name = "[Titan] "
             username = session["username"]
             if len(username) > 19:
                 username = username[:19]
             if session["unauthenticated"]:
                 name = name + username + "#" + str(session["user_id"])
             else:
                 name = name + username + "#" + str(
                     session["discriminator"])
             for webhook in guild_webhooks:
                 time.sleep(0)
                 if webhook["name"] == name:
                     discord_api.delete_webhook(webhook["id"],
                                                webhook["token"])
     self.teardown_db_session()
Beispiel #9
0
def get_guild_roles(guild_id):
    return redisqueue.get_guild(guild_id)["roles"]
Beispiel #10
0
def get_guild_emojis(guild_id):
    return redisqueue.get_guild(guild_id)["emojis"]