feat: implement WebDAV protocol support with WsgiDAV + account management API
All checks were successful
Test / test (push) Successful in 2m14s
All checks were successful
Test / test (push) Successful in 2m14s
Add complete WebDAV support: management REST API (CRUD accounts at /api/v1/webdav/accounts) and DAV protocol endpoint (/dav) using WsgiDAV + a2wsgi bridge for client access via HTTP Basic Auth. Includes Redis+TTLCache auth caching and integration tests (24 cases). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
8
main.py
8
main.py
@@ -5,6 +5,8 @@ from fastapi import FastAPI, Request
|
||||
from loguru import logger as l
|
||||
|
||||
from routers import router
|
||||
from routers.dav import dav_app
|
||||
from routers.dav.provider import EventLoopRef
|
||||
from service.redis import RedisManager
|
||||
from sqlmodels.database_connection import DatabaseManager
|
||||
from sqlmodels.migration import migration
|
||||
@@ -40,6 +42,9 @@ async def _init_db() -> None:
|
||||
"""初始化数据库连接引擎"""
|
||||
await DatabaseManager.init(appmeta.database_url, debug=appmeta.debug)
|
||||
|
||||
# 捕获事件循环引用(供 WSGI 线程桥接使用)
|
||||
lifespan.add_startup(EventLoopRef.capture)
|
||||
|
||||
# 添加初始化数据库启动项
|
||||
lifespan.add_startup(_init_db)
|
||||
lifespan.add_startup(migration)
|
||||
@@ -88,6 +93,9 @@ async def handle_unexpected_exceptions(
|
||||
# 挂载路由
|
||||
app.include_router(router)
|
||||
|
||||
# 挂载 WebDAV 协议端点(优先于 SPA catch-all)
|
||||
app.mount("/dav", dav_app)
|
||||
|
||||
# 挂载前端静态文件(仅当 statics/ 目录存在时,即 Docker 部署环境)
|
||||
if STATICS_DIR.is_dir():
|
||||
from starlette.staticfiles import StaticFiles
|
||||
|
||||
Reference in New Issue
Block a user