mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-10-20 15:21:30 +02:00
Repo-wide sweep of every user-facing string: frontend components, routes, config and stores; API details and route docs; shared definitions and models; stage config help; report prose; MCP, toolbox, interest and connector text; notification and worker messages. Descriptions that explained, reassured, justified or restated their title are deleted. Confirm dialogs name what is removed and stop. Failed actions read "<Noun> not <verbed>", successes "<Noun> <verbed>". No reader address, no product-as-subject, no em-dashes or parentheticals in prose. Mirrors updated on both sides: EPSS band help, compare refusal reasons, interest labels. Four tests asserting on old wording follow the new text. The rules are condensed into CLAUDE.md under Writing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SK5o8xR96cbSnAfjYSTPSe
48 lines
2.5 KiB
HTML
48 lines
2.5 KiB
HTML
{% import 'macros.html' as m with context %}
|
|
<p class="block muted small">{{ ctx.data.service_rows|length|num }} services answered on {{ addresses|num }} addresses. {{ web|num }} of them answer HTTP.{% if sensitive %} {{ sensitive|num }} {{ 'is' if sensitive == 1 else 'are' }} administrative or data.{% endif %}</p>
|
|
|
|
{% if classes %}
|
|
<div class="sub">
|
|
<div class="label block">Composition</div>
|
|
{% set items = [] %}
|
|
{% for row in classes %}{% set _ = items.append(Slice(row.label, row.count, ctx.hue(loop.index0))) %}{% endfor %}
|
|
{{ stack_bar(items)|safe }}
|
|
<div class="chips" style="margin-top:1.6mm">
|
|
{% for row in classes %}<span class="chip"><span style="display:inline-block;width:6px;height:6px;border-radius:2px;background:{{ ctx.hue(loop.index0) }}"></span> {{ row.label }} {{ row.count|num }}</span>{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if policies %}
|
|
<div class="sub">
|
|
<div class="label block">Scan coverage</div>
|
|
<table class="table">
|
|
<tbody>
|
|
{% for key, count in policies.items() %}
|
|
<tr><td style="width:44mm">{{ {'full':'Scanned in full','web':'Web ports only, CDN edge','skip':'Not scanned'}.get(key, key) }}</td><td class="num">{{ count|num }} addresses</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="sub">
|
|
<div class="label block">Services</div>
|
|
<table class="table table--fixed">
|
|
<thead><tr><th style="width:32mm">Address</th><th class="num" style="width:14mm">Port</th><th style="width:26mm">Service</th><th style="width:20mm">Class</th>{% if show_banner %}<th>Software</th>{% endif %}<th style="width:38mm">Hostnames</th></tr></thead>
|
|
<tbody>
|
|
{% for row in rows %}
|
|
<tr>
|
|
<td class="micro mono-break">{{ row.ip }}</td>
|
|
<td class="num micro">{{ row.port }}{% if row.tls %} <span class="faint">tls</span>{% endif %}</td>
|
|
<td class="micro">{{ row.service_name or '—' }}{% if row.sensitive %} <span class="badge badge--high">sensitive</span>{% endif %}</td>
|
|
<td class="micro muted">{{ row.service_class|svc }}</td>
|
|
{% if show_banner %}<td class="micro muted wrap">{{ ((row.product ~ ' ' ~ (row.version or '')) if row.product else (row.banner or ''))|clip(48) or '—' }}</td>{% endif %}
|
|
<td class="micro mono-break wrap">{{ row.hosts[:2]|join(', ')|clip(46) or '—' }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% if hidden %}<p class="micro faint" style="margin-top:1.4mm">{{ hidden|num }} further services are not listed.</p>{% endif %}
|
|
</div>
|