Frontend created and rewritten a few times, with some backend fixes #1
|
@ -98,6 +98,7 @@ def _main():
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _confdir(args):
|
def _confdir(args):
|
||||||
if args["-c"]:
|
if args["-c"]:
|
||||||
# Custom config directory
|
# Custom config directory
|
||||||
|
|
|
@ -82,6 +82,7 @@ async def control(req, ws):
|
||||||
await asend(ws, StatusMsg(status="ack", req=cmd))
|
await asend(ws, StatusMsg(status="ack", req=cmd))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@bp.websocket("watch")
|
@bp.websocket("watch")
|
||||||
@websocket_wrapper
|
@websocket_wrapper
|
||||||
async def watch(req, ws):
|
async def watch(req, ws):
|
||||||
|
|
|
@ -39,12 +39,14 @@ async def main_start(app, loop):
|
||||||
app.ctx.threadexec = ThreadPoolExecutor(max_workers=8)
|
app.ctx.threadexec = ThreadPoolExecutor(max_workers=8)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.after_server_stop
|
@app.after_server_stop
|
||||||
async def main_stop(app, loop):
|
async def main_stop(app, loop):
|
||||||
await watching.stop(app, loop)
|
await watching.stop(app, loop)
|
||||||
app.ctx.threadexec.shutdown()
|
app.ctx.threadexec.shutdown()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_request
|
@app.on_request
|
||||||
async def use_session(req):
|
async def use_session(req):
|
||||||
req.ctx.session = session.get(req)
|
req.ctx.session = session.get(req)
|
||||||
|
|
|
@ -74,6 +74,7 @@ def verify(request, *, privileged=False):
|
||||||
raise Unauthorized("Login required", "cookie")
|
raise Unauthorized("Login required", "cookie")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bp = Blueprint("auth")
|
bp = Blueprint("auth")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ class User(msgspec.Struct, omit_defaults=True):
|
||||||
lastSeen: int = 0 # noqa: N815
|
lastSeen: int = 0 # noqa: N815
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Link(msgspec.Struct, omit_defaults=True):
|
class Link(msgspec.Struct, omit_defaults=True):
|
||||||
location: str
|
location: str
|
||||||
creator: str = ""
|
creator: str = ""
|
||||||
|
|
|
@ -25,6 +25,7 @@ class MkDir(ControlBase):
|
||||||
path.mkdir(parents=True, exist_ok=False)
|
path.mkdir(parents=True, exist_ok=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Rename(ControlBase):
|
class Rename(ControlBase):
|
||||||
path: str
|
path: str
|
||||||
to: str
|
to: str
|
||||||
|
@ -50,6 +51,7 @@ class Rm(ControlBase):
|
||||||
p.unlink()
|
p.unlink()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Mv(ControlBase):
|
class Mv(ControlBase):
|
||||||
sel: list[str]
|
sel: list[str]
|
||||||
dst: str
|
dst: str
|
||||||
|
|
|
@ -36,6 +36,7 @@ def run(*, dev=False):
|
||||||
Sanic.serve_single()
|
Sanic.serve_single()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def check_cert(certdir, domain):
|
def check_cert(certdir, domain):
|
||||||
if (certdir / "privkey.pem").exist() and (certdir / "fullchain.pem").exists():
|
if (certdir / "privkey.pem").exist() and (certdir / "fullchain.pem").exists():
|
||||||
return
|
return
|
||||||
|
|
|
@ -221,6 +221,7 @@ async def broadcast(msg):
|
||||||
logging.exception("Broadcast error")
|
logging.exception("Broadcast error")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def start(app, loop):
|
async def start(app, loop):
|
||||||
config.load_config()
|
config.load_config()
|
||||||
app.ctx.watcher = threading.Thread(
|
app.ctx.watcher = threading.Thread(
|
||||||
|
|
|
@ -27,6 +27,7 @@ dependencies = [
|
||||||
"stream-zip",
|
"stream-zip",
|
||||||
"tomli_w",
|
"tomli_w",
|
||||||
]
|
]
|
||||||
|
requires-python = ">=3.10"
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Homepage = ""
|
Homepage = ""
|
||||||
|
|
|
@ -2,7 +2,6 @@ import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from cista import config
|
from cista import config
|
||||||
from cista.protocol import Cp, MkDir, Mv, Rename, Rm
|
from cista.protocol import Cp, MkDir, Mv, Rename, Rm
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user