SELECT 'dynamic' AS component, sqlpage.run_sql('shell/shell.sql') AS properties;
-- not including breadcrumbs from sqlpage_aide_navigation
-- not including page title from sqlpage_aide_navigation
SELECT 'title' AS component, (SELECT COALESCE(title, caption)
FROM sqlpage_aide_navigation
WHERE namespace = 'prime' AND path = 'tem/session/katana.sql/index.sql') as contents;
;
--- Breadcrumb
SELECT 'breadcrumb' AS component;
SELECT 'Home' AS title,
sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/' AS link;
SELECT 'Threat Exposure Management' AS title,
sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/index.sql' AS link;
SELECT 'Attack Surface Mapping By Session' AS title,
sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/attack_surface_mapping_session.sql' AS link;
SELECT 'Findings' AS title,
sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/session/finding.sql?session_id=' || $session_id AS link;
SELECT 'Katana Scan Results' AS title,
'#' AS link;
--- Page Title
SELECT 'title' AS component,
'Katana Scan Results' AS contents;
--- Page Description
SELECT 'text' AS component,
'This page displays parsed Katana scan results extracted from JSONL stored in uniform_resource.content.
It includes request and response details such as method, endpoint, status code, and observed timestamps
to assist in analyzing web application surface mapping.' AS contents;
--- Table Config
SELECT 'table' AS component,
TRUE AS sort,
TRUE AS search;
SET total_rows = (SELECT COUNT(*) FROM tem_katana WHERE ur_ingest_session_id = $session_id);
SET limit = COALESCE($limit, 50);
SET offset = COALESCE($offset, 0);
SET total_pages = ($total_rows + $limit - 1) / $limit;
SET current_page = ($offset / $limit) + 1;
SELECT
tenant_name AS "Tenant",
strftime('%m-%d-%Y %H:%M:%S', timestamp) AS "Observed At",
method AS "Method",
endpoint AS "Endpoint",
COALESCE(status_code, 'N/A') AS "Status Code"
FROM tem_katana
WHERE ur_ingest_session_id = $session_id;
SELECT 'text' AS component,
(SELECT CASE WHEN CAST($current_page AS INTEGER) > 1 THEN '[Previous](?limit=' || $limit || '&offset=' || ($offset - $limit) || COALESCE('&session_id=' || replace($session_id, ' ', '%20'), '') || ')' ELSE '' END)
|| ' '
|| '(Page ' || $current_page || ' of ' || $total_pages || ") "
|| (SELECT CASE WHEN CAST($current_page AS INTEGER) < CAST($total_pages AS INTEGER) THEN '[Next](?limit=' || $limit || '&offset=' || ($offset + $limit) || COALESCE('&session_id=' || replace($session_id, ' ', '%20'), '') || ')' ELSE '' END)
AS contents_md
;
;