- engine: add analyse_text() to extract visible page text and evaluate
category="text" rules; collect matched phrases and expose as
`content_snippet` (deduped, length-capped via settings.ui.snippet_preview_len).
- engine: removed unused code
- browser: removed double call for enrichment
- engine: improve regex compilation — honor per-rule flags (string or list)
and default IGNORECASE when category=="text".
- engine: add dispatch logging "[engine] applying categories: …" gated by
settings.app.print_rule_dispatch.
- ui(templates): add `templates/partials/result_text.html` mirroring the forms
table; renders page-level records and their matched rules.
- ui(controller): wire `analyse_text()` into scan path and expose
`payload["suspicious_text"]`.
- rules(text): add `identity_verification_prompt`, `gated_document_access`,
`email_collection_prompt`; broaden `credential_reset`.
fix: text indicators were not displayed due to missing analyzer and mismatched result shape.
Result shape:
suspicious_text: [
{
"type": "page",
"content_snippet": "...matched phrases…",
"rules": [
{"name": "...", "description": "...", "severity": "medium", "tags": ["..."]}
]
}
]
28 lines
452 B
YAML
28 lines
452 B
YAML
app:
|
|
name: SneakyScope
|
|
version_major: 0
|
|
version_minor: 1
|
|
|
|
# logs when rules are loaded
|
|
log_rule_loads: False
|
|
|
|
# logs each category of rule ran
|
|
log_rule_dispatch: False
|
|
|
|
# logs rule pass/fail per rule
|
|
log_rule_debug: False
|
|
|
|
cache:
|
|
recent_runs_count: 10
|
|
whois_cache_days: 7
|
|
geoip_cache_days: 7
|
|
|
|
external_script_fetch:
|
|
enabled: True
|
|
max_total_mb: 5
|
|
max_time_ms: 3000
|
|
max_redirects: 3
|
|
|
|
ui:
|
|
snippet_preview_len: 300
|