{% extends "base.html" %}
{% set htmx = true %}{# panels self-load and star buttons post #}
{% block title %}{{ raw }} · casefile{% if demo %} demo{% endif %}{% endblock %}
{% block content %}
{% if not sections %}
Nothing recognised
casefile could not read {{ raw }} as any identifier it knows.
casefile matches on shape, so it needs something with a recognisable one. Try a
domain, an IP, an email address, a username, a phone number in international form, a file hash,
a CVE id, a bitcoin address or a transaction hash.
{% else %}
{% set sourced = sections | selectattr("panels") | list %}
casefile results for {{ raw }}
{{ sections | length }} reading{{ "s" if sections | length != 1 }}
· {{ sections | map(attribute="links") | map("length") | sum }} links{% if not demo %}
· saved cases{% endif %}
{% if not demo %}
{% with section = sections | first %}{% include "save_control.html" %}{% endwith %}
{% endif %}
Results
{% if not sourced %}
casefile has no source it can query for
{{ sections | map(attribute="type") | unique | join(" or ") }} yet, so everything for this
one is in Links below.
{% for p in section.panels %}
{% set panel_url = '/panel/' ~ p.id ~ '?v=' ~ (section.value | urlencode) ~ '&t=' ~ section.type %}
{% set prerendered = section.results.get(p.id) %}
{% if p.contacts_target %}{# in the visit block below, behind its one button #}
{% elif prerendered %}
{# rendered exactly as a live swap would be; the demo passes no target, so no stars and no refresh #}
{% with result = prerendered, t = (none if demo else section.type), v = (none if demo else section.value),
starred_keys = section.starred %}
{% include "panel.html" %}{% endwith %}
{% elif demo %}
{{ source_name(p.id) }}
not in this demo
Run casefile locally to query this source.
{% elif p.on_demand and p.id not in section.running %}
{{ source_name(p.id) }}
on demand
running, this can take a while…
{% if p.cost_note %}
{{ p.cost_note }}
{% endif %}
{% else %}
{{ source_name(p.id) }}
loading…
{% endif %}
{% endfor %}
{% set visits = section.panels | selectattr("contacts_target") | list %}
{% if visits %}
{# the only panels that contact the target: one click loads all three, nothing else ever does #}
{% if not demo %}
{{ "about 5 requests" if visits | length > 1 else "one request" }} to {{ section.visit_host }} from your IP; the
site will see them
{% if visits | rejectattr("id", "in", section.results) | rejectattr("id", "in", section.running) | list %}
{% endif %}
{% endif %}
{% for p in visits %}
{% set panel_url = '/panel/' ~ p.id ~ '?v=' ~ (section.value | urlencode) ~ '&t=' ~ section.type %}
{% set prerendered = section.results.get(p.id) %}
{% if demo %}
{{ source_name(p.id) }}
not in this demo
Run casefile locally to visit the site.
{% elif prerendered %}
{% with result = prerendered, t = section.type, v = section.value, starred_keys = section.starred %}
{% include "panel.html" %}{% endwith %}
{% else %}
{# in flight from before a reload: load to join it; otherwise wait for the button's event #}
{{ source_name(p.id) }}
{{ 'loading…' if p.id in section.running else 'not visited' }}
visiting…
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
Links
Nothing here has been fetched. These are the places worth
looking, picked by what the input could be.
{% for section in sections %}
{% if section.speculative %}
{# folded, not dropped: any string is a plausible name, so guesses would crowd out the real reading #}
{{ section.type }}
{{ section.value }} · {{ section.links | length }} links, a guess from the shape
of the input
{% else %}