This website requires JavaScript.
lab
.savsis
Explore
Help
Register
Sign in
savsisbtw
/
mbs-panel
Watch
1
Star
0
Fork
You've already forked mbs-panel
0
Code
Issues
Pull requests
Projects
Releases
Packages
Wiki
Activity
Actions
1
3bd38103c3
mbs-panel
/
requirements.txt
6 lines
100 B
Text
Raw
Normal View
History
Unescape
Escape
core: env-driven config, sqlite schema, xray/node management, subscription links Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 17:45:36 +05:00
aiogram==3.15.0
fastapi==0.115.6
uvicorn[standard]==0.32.1
paramiko==3.5.0
feat: backup & restore built into the admin panel Neither Remnawave nor Marzban has this natively (community tools only, per docs.rw's own comparison table) — one-click download of a tar.gz with a consistent SQLite snapshot (via sqlite3's backup API, safe even under WAL) plus .env, and upload-to-restore from the same file. Restore validates the archive is real (gzip + tar structure), that mbs.db is an actual sqlite database with the expected tables (not just any file named mbs.db), and rejects oversized uploads — before touching anything live. Takes a timestamped safety copy of the current db/.env before overwriting, clears stale -wal/-shm siblings so the restored file doesn't get replayed against the wrong WAL, and restarts mbs-bot automatically when .env was part of the restore (api.py isn't restarted from within its own request handler for the obvious reason). Verified with a full round-trip test: backup -> mutate state -> restore -> confirm the mutation is reverted, plus three negative cases (garbage data, oversized upload, a fake non-sqlite mbs.db) all correctly rejected with no side effects. Needs python-multipart for FastAPI's UploadFile — added to requirements.txt, picked up by the next 'mbs update'. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 10:23:38 +05:00
python-multipart==0.0.20
Reference in a new issue
Copy permalink