tem/tenant/dirsearch.sql

              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/tenant/dirsearch.sql/index.sql') as contents;
    ;

--- Breadcrumb setup
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 Tenant' AS title,
        sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/attack_surface_mapping_tenant.sql' AS link;
    SELECT tenant_name AS title,
        sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/tenant/attack_surface_mapping_inner.sql?tenant_id=' || $tenant_id AS link
    FROM tem_tenant WHERE tenant_id = $tenant_id;
    SELECT 'Findings' AS title,
        sqlpage.environment_variable('SQLPAGE_SITE_PREFIX') || '/tem/tenant/finding.sql?tenant_id=' || $tenant_id AS link;
    SELECT 'Dirsearch Web Path Enumeration Results' AS title,
        '#' AS link;

--- Page title
SELECT 'title' AS component,
    'Dirsearch Web Path Enumeration Results' AS contents;

--- Page description
SELECT 'text' AS component,
    'This page displays parsed results from the Dirsearch tool, which scans web applications to enumerate hidden files and directories. 
    Each entry shows the discovered URL, HTTP status code, content type, response length, and any redirect information.
    These insights help identify sensitive endpoints, misconfigurations, or exposed resources within a tenant’s web application footprint.' AS contents;

--- Table setup
SELECT 'table' AS component,
    TRUE AS sort,
    TRUE AS search;

SET total_rows = (SELECT COUNT(*) FROM tem_dirsearch WHERE tenant_id = $tenant_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
    observed_at AS "Observed At",
    discovered_url   AS "Discovered URL",
    status_code      AS "Status Code",
    content_type     AS "Content Type",
    content_length   AS "Content Length",
    redirect_url     AS "Redirect"
FROM tem_dirsearch
WHERE tenant_id = $tenant_id;

SELECT 'text' AS component,
    (SELECT CASE WHEN CAST($current_page AS INTEGER) > 1 THEN '[Previous](?limit=' || $limit || '&offset=' || ($offset - $limit) || COALESCE('&tenant_id=' || replace($tenant_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('&tenant_id=' || replace($tenant_id, ' ', '%20'), '') || ')' ELSE '' END)
    AS contents_md
;
        ;