66 lines
1.6 KiB
Python
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')
|