OTPSystem/db.py
2025-02-22 20:09:07 -06:00

225 lines
7.5 KiB
Python

import sqlite3
from datetime import datetime, timedelta
class db:
def init():
try:
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS sessions (email text UNIQUE, password integer, code integer, datedel text)''')
cursor.execute('''CREATE TABLE IF NOT EXISTS accounts (email text UNIQUE, password integer, discord text UNIQUE, mc text UNIQUE, code integer, datedel text)''')
conn.commit()
conn.close()
return True
except:
return False
def get_session_passwd(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
passwd = '''SELECT password FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(passwd, (email, ))
fetch_passwd = cursor.fetchone()
conn.close()
return fetch_passwd[0]
def del_session(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
session = '''DELETE FROM sessions WHERE email = ?'''
cursor.execute(session, (email, ))
conn.commit()
conn.close()
return True
def get_session(email):
exists = '''SELECT email FROM sessions WHERE email = ? LIMIT 1'''
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
cursor.execute(exists, (email, ))
result = cursor.fetchone()
conn.close()
return result
def check_date(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
past_sql = '''SELECT datedel FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(past_sql, (email, ))
fetch_past = cursor.fetchone()
past = fetch_past[0]
conn.close()
return past
def fetch_session_code(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
match_sql = '''SELECT code FROM sessions WHERE email = ? LIMIT 1'''
cursor.execute(match_sql, (email, ))
fetch_otp = cursor.fetchone()
otp = fetch_otp[0]
conn.close()
return otp
def add_session(email, password, code):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
insert_email = "INSERT OR IGNORE INTO sessions (email) VALUES (?)"
insert_password = "UPDATE sessions SET password = ? WHERE email = ?"
insert_code = "UPDATE sessions SET code = ? WHERE email = ?"
insert_datedel = "UPDATE sessions SET datedel = ? WHERE email = ?"
cursor.execute(insert_email, (email, ))
cursor.execute(insert_password, (password, email, ))
cursor.execute(insert_code, (code, email, ))
cursor.execute(insert_datedel, (datetime.now() + timedelta(minutes=5), email, ))
conn.commit()
conn.close()
return True
def add_account(email, password):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
insert_email = "INSERT OR IGNORE INTO accounts (email) VALUES (?)"
insert_password = "UPDATE accounts SET password = ? WHERE email = ?"
cursor.execute(insert_email, (email, ))
cursor.execute(insert_password, (password, email, ))
conn.commit()
conn.close()
return True
def account_exists(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
match_sql = '''SELECT email FROM accounts WHERE email = ? LIMIT 1'''
cursor.execute(match_sql, (email, ))
fetch_acc = cursor.fetchone()
if fetch_acc is None or False:
return False
conn.close()
return True
def account_add_otp(email, otp):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
insert_code = "UPDATE accounts SET code = ? WHERE email = ?"
insert_datedel = "UPDATE accounts SET datedel = ? WHERE email = ?"
cursor.execute(insert_code, (otp, email, ))
cursor.execute(insert_datedel, (datetime.now() + timedelta(minutes=5), email, ))
conn.commit()
conn.close()
return True
def account_del_otp(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
empty = None
remove_code = "UPDATE sessions SET code = ? WHERE email = ?"
remove_datedel = "UPDATE sessions SET datedel = ? WHERE email = ?"
cursor.execute(remove_code, (empty, email, ))
cursor.execute(remove_datedel, (empty, email, ))
conn.commit()
conn.close()
return True
def check_account_otp(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
past_sql = '''SELECT datedel FROM accounts WHERE email = ? LIMIT 1'''
cursor.execute(past_sql, (email, ))
fetch_past = cursor.fetchone()
past = fetch_past[0]
if (past is None or False):
return False
present = datetime.now()
conn.close()
if (str(present) > past):
db.account_del_otp(email)
return False
else:
return True
def get_account_otp(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
getotp = '''SELECT code FROM accounts WHERE email = ?'''
cursor.execute(getotp, (email, ))
fetch_code = cursor.fetchone()
code = fetch_code[0]
if (code is None or False):
return False
else:
return code
def discord_exists(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
get_discord = '''SELECT discord FROM accounts WHERE email = ?'''
cursor.execute(get_discord, (email, ))
fetch_discord = cursor.fetchone()
if (fetch_discord == None):
return False
discord = fetch_discord[0]
if (discord == None):
return False
return discord
def add_discord(discord, email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
update_discord = '''UPDATE accounts SET discord = ? WHERE email = ?'''
cursor.execute(update_discord, (discord, email))
conn.commit()
conn.close()
return True
def add_mc(mc, email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
add = "UPDATE accounts SET mc = ? WHERE email = ?"
cursor.execute(add, (mc, email, ))
conn.commit()
conn.close()
return True
def replace_mc(new, email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
replace_name = "UPDATE accounts SET mc = ? WHERE email = ?"
cursor.execute(replace_name, (new, email, ))
conn.commit()
conn.close()
return True
def mc_email_lookup(mc):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
get_mc = '''SELECT email FROM accounts WHERE mc = ?'''
cursor.execute(get_mc, (mc, ))
fetch_mc = cursor.fetchone()
if (fetch_mc == None):
return False
email = fetch_mc[0]
return email
def mc_username_lookup(email):
conn = sqlite3.connect('accounts.db')
cursor = conn.cursor()
get_email = '''SELECT mc FROM accounts WHERE email = ?'''
cursor.execute(get_email, (email, ))
fetch_email = cursor.fetchone()
if (fetch_email == None):
return False
mc = fetch_email[0]
if (mc == None):
return False
return mc