2020-04-19 21:35:51 +00:00
|
|
|
import json
|
2020-04-11 14:20:25 +00:00
|
|
|
from pathlib import Path
|
|
|
|
from flask import Flask, send_from_directory, render_template
|
2020-06-16 19:07:47 +00:00
|
|
|
from jellyfin_accounts import config, app, g, css, data_store
|
|
|
|
from jellyfin_accounts import web_log as log
|
2020-05-12 19:29:50 +00:00
|
|
|
from jellyfin_accounts.web_api import checkInvite, validator
|
2020-04-11 14:20:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.errorhandler(404)
|
|
|
|
def page_not_found(e):
|
|
|
|
return render_template('404.html',
|
2020-05-17 14:22:50 +00:00
|
|
|
css_href=css['href'],
|
|
|
|
css_integrity=css['integrity'],
|
|
|
|
css_crossorigin=css['crossorigin'],
|
2020-04-11 14:20:25 +00:00
|
|
|
contactMessage=config['ui']['contact_message']), 404
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/', methods=['GET', 'POST'])
|
|
|
|
def admin():
|
|
|
|
# return app.send_static_file('admin.html')
|
|
|
|
return render_template('admin.html',
|
2020-05-17 14:22:50 +00:00
|
|
|
css_href=css['href'],
|
|
|
|
css_integrity=css['integrity'],
|
|
|
|
css_crossorigin=css['crossorigin'],
|
2020-05-12 19:44:04 +00:00
|
|
|
contactMessage='',
|
|
|
|
email_enabled=config.getboolean(
|
|
|
|
'invite_emails', 'enabled'))
|
2020-04-11 14:20:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
@app.route('/<path:path>')
|
|
|
|
def static_proxy(path):
|
2020-05-02 17:32:58 +00:00
|
|
|
if 'html' not in path:
|
2020-04-11 14:20:25 +00:00
|
|
|
return app.send_static_file(path)
|
|
|
|
return render_template('404.html',
|
2020-05-17 14:22:50 +00:00
|
|
|
css_href=css['href'],
|
|
|
|
css_integrity=css['integrity'],
|
|
|
|
css_crossorigin=css['crossorigin'],
|
2020-04-11 14:20:25 +00:00
|
|
|
contactMessage=config['ui']['contact_message']), 404
|
|
|
|
|
|
|
|
|
|
|
|
@app.route('/invite/<path:path>')
|
|
|
|
def inviteProxy(path):
|
|
|
|
if checkInvite(path):
|
2020-04-12 20:25:27 +00:00
|
|
|
log.info(f'Invite {path} used to request form')
|
2020-04-19 21:35:51 +00:00
|
|
|
try:
|
2020-06-14 16:58:18 +00:00
|
|
|
email = data_store.invites[path]['email']
|
|
|
|
except KeyError:
|
|
|
|
email = ''
|
2020-04-11 14:20:25 +00:00
|
|
|
return render_template('form.html',
|
2020-05-17 14:22:50 +00:00
|
|
|
css_href=css['href'],
|
|
|
|
css_integrity=css['integrity'],
|
|
|
|
css_crossorigin=css['crossorigin'],
|
2020-04-11 14:20:25 +00:00
|
|
|
contactMessage=config['ui']['contact_message'],
|
|
|
|
helpMessage=config['ui']['help_message'],
|
|
|
|
successMessage=config['ui']['success_message'],
|
2020-06-03 11:17:29 +00:00
|
|
|
jfLink=config['jellyfin']['public_server'],
|
2020-05-12 19:44:04 +00:00
|
|
|
validate=config.getboolean(
|
|
|
|
'password_validation',
|
|
|
|
'enabled'),
|
2020-05-12 19:29:50 +00:00
|
|
|
requirements=validator.getCriteria(),
|
2020-04-19 21:35:51 +00:00
|
|
|
email=email)
|
2020-04-11 14:20:25 +00:00
|
|
|
elif 'admin.html' not in path and 'admin.html' not in path:
|
|
|
|
return app.send_static_file(path)
|
|
|
|
else:
|
2020-04-12 20:25:27 +00:00
|
|
|
log.debug('Attempted use of invalid invite')
|
2020-04-11 14:20:25 +00:00
|
|
|
return render_template('invalidCode.html',
|
2020-05-17 14:22:50 +00:00
|
|
|
css_href=css['href'],
|
|
|
|
css_integrity=css['integrity'],
|
|
|
|
css_crossorigin=css['crossorigin'],
|
2020-04-11 14:20:25 +00:00
|
|
|
contactMessage=config['ui']['contact_message'])
|