bl2tools/bl2tools/server.py
2022-04-21 13:27:51 -04:00

66 lines
1.6 KiB
Python

from bl2_save_edit import Bl2Save
from izzylib import Path, Url
from izzylib_http_async import Application
from izzylib_http_async.server.error import Forbidden
from . import views, tpl_path
from .functions import get_save_path
class Server(Application):
def __init__(self, listen='0.0.0.0', port=8080, save_path=None, access_log=False):
Application.__init__(self,
appname = 'bl2tools',
name = 'BL2 Tools',
title = 'BL2 Tools',
version = '0.1.0',
git_repo = 'https://git.barkshark.xyz/izaliamae/bl2tools',
listen = listen,
port = port,
tpl_search = [Path(__file__).resolve().parent.join('frontend')],
access_log = access_log
)
self.saves = []
self.save_path = save_path or get_save_path()
## Frontend paths
self.add_view(views.Home)
self.add_view(views.Style)
self.add_view(views.Javascript)
## Api paths
self.add_view(views.ApiList)
self.add_view(views.ApiSave)
self.add_view(views.ApiSaveToggle)
self.add_view(views.ApiSaveHtml)
self.add_middleware(check_address_type)
self.read_saves()
def get_save_by_id(self, saveid):
for save in self.saves:
if save.id == saveid:
return save
raise KeyError(f'Cannot find save with id: {saveid}')
def read_saves(self):
for path in self.save_path.listdir(False):
if not path.endswith('sav'):
continue
save = Bl2Save(path)
if int(save.path.permissions()) not in [644, 444]:
save.path.chmod(644)
self.saves.append(save)
async def check_address_type(request):
if not Url.new(request.remote).is_address_type('private'):
raise Forbidden('Only private access allowed')