Files
bookish-fork-dokerized/app.py
T
truetype 0f15b7958f feat: self-hosted frontend JS (offline) + docker hardening
- Vendored epub.js/pdf.js+worker/JSZip/DOMPurify in static/vendor/
- reader.html/reader.js servono i JS da /static (niente CDN, offline-ready)
- CSP: rimosse allowlist CDN, aggiunto worker-src 'self' blob:
- Test CSP aggiornati; tutti 16 verdi; verificato smoke test offline in container
2026-08-29 22:32:10 +02:00

30 lines
893 B
Python

#!/usr/bin/env python3
import os
import socket
from bookish import create_app
app = create_app()
def find_free_port(preferred=5000):
"""Trova una porta libera partendo da preferred."""
for port in range(preferred, preferred + 100):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
if s.connect_ex(("127.0.0.1", port)) != 0:
return port
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(("", 0))
return s.getsockname()[1]
if __name__ == "__main__":
import sys
from config import DEBUG
preferred = int(os.environ.get("PORT", "5000"))
if len(sys.argv) > 1 and sys.argv[1].isdigit():
preferred = int(sys.argv[1])
port = find_free_port(preferred)
print(f"Bookish avviato su http://0.0.0.0:{port} (debug={DEBUG})")
app.run(host="0.0.0.0", port=port, debug=DEBUG)