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
This commit is contained in:
1 parent
e62c50c616
commit
0f15b7958f
31 files changed
+1363
-215
No files matched your search
@@ -124,15 +124,17 @@
|
||||
|
||||
{% block scripts %}
|
||||
{% if file_ext == 'epub' %}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/epubjs@0.3.93/dist/epub.min.js"></script>
|
||||
<script src="{{ url_for('static', filename='vendor/purify.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='vendor/jszip.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='vendor/epub.min.js') }}"></script>
|
||||
{% elif file_ext == 'pdf' %}
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js"></script>
|
||||
<script src="{{ url_for('static', filename='vendor/pdf.min.js') }}"></script>
|
||||
{% endif %}
|
||||
<script>
|
||||
const BOOKISH_FILE = {{ filename | tojson | safe if filename else 'null' }};
|
||||
const BOOKISH_EXT = {{ file_ext | tojson | safe if file_ext else 'null' }};
|
||||
const BOOKISH_HASH = {{ content_hash | tojson | safe if content_hash else 'null' }};
|
||||
const BOOKISH_PDF_WORKER = {{ pdf_worker_url | tojson | safe }};
|
||||
</script>
|
||||
<script src="{{ url_for('static', filename='js/reader.js') }}"></script>
|
||||
{% endblock %}
|
||||
Reference in new issue
Block a user