Example #1
0
 def exists(self):
     conn, cur = db.get_conn()
     cur.execute("SELECT * FROM users WHERE discord_id=%s",
                 (self.discord_id, ))
     result = cur.fetchone()
     db.put_conn(conn, cursor=cur)
     return not not result  # Convert to bool
Example #2
0
 def get_login_key(self):
     conn, cur = db.get_conn()
     cur.execute("SELECT key FROM login_keys WHERE discord_id=%s",
                 (self.discord_id, ))
     result = cur.fetchone()
     db.put_conn(conn, cursor=cur)
     if result:
         return result[0]
Example #3
0
 def get_membership(self):
     conn, cur = db.get_conn()
     cur.execute(
         "SELECT started_at, duration FROM memberships WHERE discord_id=%s",
         (self.discord_id, ))
     result = cur.fetchone()
     db.put_conn(conn, cursor=cur)
     if result:
         return Membership(self.discord_id, result[0], result[1])
     else:
         return Membership(self.discord_id, 0, 0)
Example #4
0
 def set_login_key(self, length=16):
     key = "".join(
         random.choice(tuple(string.digits + string.ascii_letters))
         for _ in range(length))
     conn, cur = db.get_conn()
     if self.get_login_key():
         cur.execute("UPDATE login_keys SET key=%s WHERE discord_id=%s",
                     (key, self.discord_id))
     else:
         cur.execute(
             "INSERT INTO login_keys (discord_id, key) VALUES (%s, %s)",
             (self.discord_id, key))
     conn.commit()
     db.put_conn(conn, cursor=cur)
     return key
Example #5
0
 def create_membership(self, key):
     conn, cur = db.get_conn()
     cur.execute("SELECT duration FROM keys WHERE key=%s", (key, ))
     result = cur.fetchone()
     membership = False
     if result:
         cur.execute("DELETE FROM keys WHERE key=%s", (key, ))
         if self.membership and self.membership.duration != 0:
             cur.execute(
                 "UPDATE memberships SET started=%s, duration=%s WHERE discord_id=%s",
                 (int(time.time()), result[0], self.discord_id))
         else:
             cur.execute(
                 "INSERT INTO memberships (discord_id, started_at, duration) VALUES (%s, %s, %s)",
                 (self.discord_id, int(time.time()), result[0]))
         conn.commit()
         self.get_membership()
         membership = True
     db.put_conn(conn, cursor=cur)
     return membership
Example #6
0
def app_auth():
    key = request.args.get("key")
    response = {"login": False}
    if key:
        conn, cur = db.get_conn()
        cur.execute("SELECT discord_id FROM login_keys WHERE key=%s", (key, ))
        result = cur.fetchone()
        if result:
            cur.execute(
                "SELECT address, last_login FROM ip_address_logins WHERE discord_id=%s",
                (result[0], ))
            result1 = cur.fetchone()
            current_time = time.time()
            if result1:
                if result1[0] != request.remote_addr and result1[
                        1] - current_time < 10800:  # 10800 = 3hrs
                    response[
                        "reason"] = "Cannot use multiple IP addresses in quick succession."
                else:
                    response["login"] = True
                    response["discord_id"] = result[0]
                cur.execute(
                    "UPDATE ip_address_logins SET address=%s, last_login=%s, logins=logins+1 WHERE discord_id=%s",
                    (request.remote_addr, current_time, result[0]))
            else:
                response["login"] = True
                response["discord_id"] = result[0]
                cur.execute(
                    "INSERT INTO ip_address_logins VALUES (%s, %s, 0, %s)",
                    (result[0], request.remote_addr, current_time))
        else:
            response["reason"] = "Invalid key."
        conn.commit()
        db.put_conn(conn, cursor=cur)

    return jsonify(response)
Example #7
0
 def create(self):
     conn, cur = db.get_conn()
     cur.execute("INSERT INTO users (discord_id) VALUES (%s)",
                 (self.discord_id, ))
     conn.commit()
     db.put_conn(conn, cursor=cur)