General PEP 8 tidying of server

This commit is contained in:
Spotlight 2024-09-23 02:55:22 -05:00
parent 51a6e108fb
commit 9514740fc9
No known key found for this signature in database
GPG Key ID: 874AA355B3209BDC

View File

@ -97,25 +97,27 @@ def cacheTitles():
)) ))
print('[Saved database to file]') print('[Saved database to file]')
# Create entry in database with friendCode # Create entry in database with friendCode
def createUser(friendCode:int, network:NetworkType, addNewInstance:bool = False): def create_user(friend_code: int, network: NetworkType, add_new_instance: bool):
if int(friendCode) == int(pretendoBotFC): # Make sure the user isn't trying to create any registered bot friend code.
if int(friend_code) == int(pretendoBotFC):
raise Exception('invalid FC') raise Exception('invalid FC')
if int(friendCode) == int(nintendoBotFC): if int(friend_code) == int(nintendoBotFC):
raise Exception('invalid FC') raise Exception('invalid FC')
try: try:
friend_code_to_principal_id(friendCode) if not add_new_instance:
if not addNewInstance:
raise Exception('UNIQUE constraint failed: friends.friendCode') raise Exception('UNIQUE constraint failed: friends.friendCode')
already_added_check = db.session.scalar( already_added_check = db.session.scalar(
select(Friend) select(Friend)
.where(Friend.friend_code == str(friendCode).zfill(12)) .where(Friend.friend_code == str(friend_code).zfill(12))
.where(Friend.network == network) .where(Friend.network == network)
) )
if already_added_check != None: if already_added_check:
raise Exception('UNIQUE constraint failed: friends.friendCode') raise Exception('UNIQUE constraint failed: friends.friendCode')
db.session.add(Friend( db.session.add(Friend(
friend_code=str(friendCode).zfill(12), friend_code=str(friend_code).zfill(12),
network=network, network=network,
online=False, online=False,
title_id='0', title_id='0',
@ -130,12 +132,13 @@ def createUser(friendCode:int, network:NetworkType, addNewInstance:bool = False)
if 'UNIQUE constraint failed: friends.friendCode' in str(e): if 'UNIQUE constraint failed: friends.friendCode' in str(e):
db.session.execute( db.session.execute(
update(Friend) update(Friend)
.where(Friend.friend_code == str(friendCode).zfill(12)) .where(Friend.friend_code == str(friend_code).zfill(12))
.where(Friend.network == network) .where(Friend.network == network)
.values(last_accessed=time.time()) .values(last_accessed=time.time())
) )
db.session.commit() db.session.commit()
def fetchBearerToken(code:str): def fetchBearerToken(code:str):
data = { data = {
'client_id': '%s' % CLIENT_ID, 'client_id': '%s' % CLIENT_ID,
@ -151,6 +154,7 @@ def fetchBearerToken(code:str):
r.raise_for_status() r.raise_for_status()
return r.json() return r.json()
def refreshBearer(token:str): def refreshBearer(token:str):
user = userFromToken(token) user = userFromToken(token)
data = { data = {
@ -167,11 +171,13 @@ def refreshBearer(token:str):
token, user, pfp = createDiscordUser('', r.json()) token, user, pfp = createDiscordUser('', r.json())
return token, user, pfp return token, user, pfp
def tokenFromID(ID:int) -> str: def tokenFromID(ID:int) -> str:
stmt = select(Discord).where(Discord.id == ID) stmt = select(Discord).where(Discord.id == ID)
result = db.session.scalar(stmt) result = db.session.scalar(stmt)
return result.site_session_token return result.site_session_token
def userFromToken(token: str) -> Discord: def userFromToken(token: str) -> Discord:
stmt = select(Discord).where(Discord.site_session_token == token) stmt = select(Discord).where(Discord.site_session_token == token)
result = db.session.scalar(stmt) result = db.session.scalar(stmt)
@ -179,6 +185,7 @@ def userFromToken(token: str) -> Discord:
raise Exception('invalid token!') raise Exception('invalid token!')
return result return result
def createDiscordUser(code:str, response:dict = None): def createDiscordUser(code:str, response:dict = None):
if not response: if not response:
response = fetchBearerToken(code) response = fetchBearerToken(code)
@ -218,11 +225,13 @@ def createDiscordUser(code:str, response:dict = None):
db.session.commit() db.session.commit()
return token, user['username'], ('https://cdn.discordapp.com/avatars/%s/%s.%s' % (user['id'], user['avatar'], 'gif' if user['avatar'].startswith('a_') else 'png') if user['avatar'] else '') return token, user['username'], ('https://cdn.discordapp.com/avatars/%s/%s.%s' % (user['id'], user['avatar'], 'gif' if user['avatar'].startswith('a_') else 'png') if user['avatar'] else '')
def deleteDiscordUser(ID:int): def deleteDiscordUser(ID:int):
db.session.delete(db.session.get(Discord, ID)) db.session.delete(db.session.get(Discord, ID))
db.session.delete(db.session.get(DiscordFriends, ID)) db.session.delete(db.session.get(DiscordFriends, ID))
db.session.commit() db.session.commit()
def getConnectedConsoles(ID:int): def getConnectedConsoles(ID:int):
stmt = select(DiscordFriends).where(DiscordFriends.id == ID) stmt = select(DiscordFriends).where(DiscordFriends.id == ID)
result = db.session.scalars(stmt).all() result = db.session.scalars(stmt).all()
@ -281,14 +290,13 @@ def get_presence(friend_code: int, network: NetworkType, is_api: bool):
# Create a user for this friend code, or update its last access date. # Create a user for this friend code, or update its last access date.
# TODO(spotlightishere): This should be restructured! # TODO(spotlightishere): This should be restructured!
createUser(friend_code, network, False) create_user(friend_code, network, False)
network_start_time = db.session.get(Config, network).backend_uptime network_start_time = db.session.get(Config, network).backend_uptime
if network_start_time is None and not disableBackendWarnings: if network_start_time is None and not disableBackendWarnings:
raise Exception('Backend currently offline. please try again later') raise Exception('Backend currently offline. please try again later')
principal_id = friend_code_to_principal_id(friend_code) principal_id = friend_code_to_principal_id(friend_code)
stmt = ( stmt = (
select(Friend) select(Friend)
.where(Friend.friend_code == friend_code) .where(Friend.friend_code == friend_code)
@ -384,16 +392,19 @@ def index():
response = make_response(render_template('dist/index.html', data = data)) response = make_response(render_template('dist/index.html', data = data))
return response return response
# Index page # Index page
@app.route('/index.html') @app.route('/index.html')
def indexHTML(): def indexHTML():
return index() return index()
# Favicon # Favicon
@app.route('/favicon.ico') @app.route('/favicon.ico')
def favicon(): def favicon():
return send_file('static/assets/img/favicon.ico') return send_file('static/assets/img/favicon.ico')
# Settings page # Settings page
@app.route('/settings') @app.route('/settings')
def settings(): def settings():
@ -421,10 +432,12 @@ def settings():
response = make_response(render_template('dist/settings.html', data = data)) response = make_response(render_template('dist/settings.html', data = data))
return response return response
@app.route('/settings.html') @app.route('/settings.html')
def settingsRedirect(): def settingsRedirect():
return redirect('/settings') return redirect('/settings')
# Roster page # Roster page
@app.route('/roster') @app.route('/roster')
def roster(): def roster():
@ -618,7 +631,7 @@ def newUser(friendCode:int, network:int=-1, userCheck:bool = True):
network = nameToNetworkType(request_arg) network = nameToNetworkType(request_arg)
except: except:
pass pass
createUser(friendCode, network, True) create_user(friendCode, network, True)
return { return {
'Exception': False, 'Exception': False,
} }
@ -705,6 +718,7 @@ def toggler(friendCode:int):
db.session.commit() db.session.commit()
return 'success!' return 'success!'
# Delete # Delete
@app.route('/api/delete/<int:friendCode>/', methods=['POST']) @app.route('/api/delete/<int:friendCode>/', methods=['POST'])
@limiter.limit(togglerLimit) @limiter.limit(togglerLimit)
@ -738,6 +752,7 @@ def deleter(friendCode:int):
db.session.commit() db.session.commit()
return 'success!' return 'success!'
# Toggle one # Toggle one
@app.route('/api/settings/<string:which>/', methods=['POST']) @app.route('/api/settings/<string:which>/', methods=['POST'])
@limiter.limit(togglerLimit) @limiter.limit(togglerLimit)
@ -761,6 +776,7 @@ def settingsToggler(which:str):
return 'failure!' return 'failure!'
return 'success!' return 'success!'
# Make Nintendo's cert a 'secure' cert # Make Nintendo's cert a 'secure' cert
@app.route('/cdn/i/<string:file>/', methods=['GET']) @app.route('/cdn/i/<string:file>/', methods=['GET'])
@limiter.limit(cdnLimit) @limiter.limit(cdnLimit)
@ -769,6 +785,7 @@ def cdnImage(file:str):
response.headers['Content-Type'] = 'image/jpeg' response.headers['Content-Type'] = 'image/jpeg'
return response return response
# Local image cache # Local image cache
@app.route('/cdn/l/<string:file>/', methods=['GET']) @app.route('/cdn/l/<string:file>/', methods=['GET'])
@limiter.limit(cdnLimit) @limiter.limit(cdnLimit)
@ -776,6 +793,7 @@ def localImageCdn(file:str):
file = hex(int(file, 16)).replace('0x', '').zfill(16).upper() file = hex(int(file, 16)).replace('0x', '').zfill(16).upper()
return send_file('cache/' + file + '.png') return send_file('cache/' + file + '.png')
# Login route # Login route
@app.route('/login', methods=['POST']) @app.route('/login', methods=['POST'])
@limiter.limit(newUserLimit) @limiter.limit(newUserLimit)
@ -791,6 +809,7 @@ def login():
return redirect('/failure.html') return redirect('/failure.html')
return redirect(f'/success.html?fc={fc}&network={network.lower_name()}') return redirect(f'/success.html?fc={fc}&network={network.lower_name()}')
# Discord route # Discord route
@app.route('/authorize') @app.route('/authorize')
@limiter.limit(newUserLimit) @limiter.limit(newUserLimit)
@ -804,6 +823,7 @@ def authorize():
response.set_cookie('pfp', pfp, expires = datetime.datetime.now() + datetime.timedelta(days = 30)) response.set_cookie('pfp', pfp, expires = datetime.datetime.now() + datetime.timedelta(days = 30))
return response return response
@app.route('/refresh') @app.route('/refresh')
def refresh(): def refresh():
if local: if local:
@ -818,6 +838,7 @@ def refresh():
deleteDiscordUser(userFromToken(request.cookies['token']).id) deleteDiscordUser(userFromToken(request.cookies['token']).id)
return redirect('/404.html') return redirect('/404.html')
if __name__ == '__main__': if __name__ == '__main__':
cacheTitles() cacheTitles()
if local: if local: