html preview improvements

pull/129/head
msramalho 2024-02-15 13:05:35 +00:00
rodzic 6d41c3d4e8
commit c31c14bf80
2 zmienionych plików z 15 dodań i 3 usunięć

Wyświetl plik

@ -4,7 +4,8 @@ import mimetypes, os, pathlib
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from urllib.parse import quote from urllib.parse import quote
from loguru import logger from loguru import logger
import minify_html import minify_html, json
import base64
from ..version import __version__ from ..version import __version__
from ..core import Metadata, Media, ArchivingContext from ..core import Metadata, Media, ArchivingContext
@ -92,3 +93,8 @@ class JinjaHelpers:
@staticmethod @staticmethod
def quote(s: str) -> str: def quote(s: str) -> str:
return quote(s) return quote(s)
@staticmethod
def json_dump_b64(d: dict) -> str:
j = json.dumps(d, indent=4, default=str)
return base64.b64encode(j.encode()).decode()

Wyświetl plik

@ -180,13 +180,16 @@
<tr> <tr>
<td>{{ key }}</td> <td>{{ key }}</td>
<td> <td>
{% if metadata[key] is mapping %}
<div class="center copy" copy-value64='{{metadata[key] | json_dump_b64}}'>Copy as JSON</div>
{% endif %}
{{ macros.copy_urlize(metadata[key]) }} {{ macros.copy_urlize(metadata[key]) }}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>
<p style="text-align:center;">Made with <a <p class="center">Made with <a
href="https://github.com/bellingcat/auto-archiver">bellingcat/auto-archiver</a> v{{ version }}</p> href="https://github.com/bellingcat/auto-archiver">bellingcat/auto-archiver</a> v{{ version }}</p>
</body> </body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/forge/0.10.0/forge.min.js" defer></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/forge/0.10.0/forge.min.js" defer></script>
@ -194,7 +197,7 @@
// partial decode of SSL certificates // partial decode of SSL certificates
function decodeCertificate(sslCert) { function decodeCertificate(sslCert) {
var cert = forge.pki.certificateFromPem(sslCert); var cert = forge.pki.certificateFromPem(sslCert);
return `PREVIEW:<br/><ul> return `SSL CERTIFICATE PREVIEW:<br/><ul>
<li><b>Subject:</b> <span class="copy">${cert.subject.attributes.map(attr => `${attr.shortName}: ${attr.value}`).join(", ")}</span></li> <li><b>Subject:</b> <span class="copy">${cert.subject.attributes.map(attr => `${attr.shortName}: ${attr.value}`).join(", ")}</span></li>
<li><b>Issuer:</b> <span class="copy">${cert.issuer.attributes.map(attr => `${attr.shortName}: ${attr.value}`).join(", ")}</span></li> <li><b>Issuer:</b> <span class="copy">${cert.issuer.attributes.map(attr => `${attr.shortName}: ${attr.value}`).join(", ")}</span></li>
<li><b>Valid From:</b> <span class="copy">${cert.validity.notBefore}</span></li> <li><b>Valid From:</b> <span class="copy">${cert.validity.notBefore}</span></li>
@ -252,6 +255,9 @@
if (e.clipboardData) { if (e.clipboardData) {
if (el.hasAttribute("copy-value")) { if (el.hasAttribute("copy-value")) {
e.clipboardData.setData("text/plain", el.getAttribute("copy-value")); e.clipboardData.setData("text/plain", el.getAttribute("copy-value"));
} else if (el.hasAttribute("copy-value64")) {
// TODO: figure out how to decode unicode chars into utf-8
e.clipboardData.setData("text/plain", new String(atob(el.getAttribute("copy-value64"))));
} else { } else {
e.clipboardData.setData("text/plain", el.textContent); e.clipboardData.setData("text/plain", el.textContent);
} }