index.astro (3941B)
1 --- 2 import Base from '../../layouts/Base.astro'; 3 import SectionBanner from '../../components/SectionBanner.astro'; 4 import RecordRow from '../../components/RecordRow.astro'; 5 import Icon from '../../components/Icon.astro'; 6 import { internalBySection, internalRootPages, internalHref } from '../../lib/internal'; 7 import { url } from '../../lib/url'; 8 9 const groups = await internalBySection(); 10 const rootPages = await internalRootPages(); 11 const totalPages = groups.reduce((n, g) => n + g.count, 0) + rootPages.length; 12 const sha = groups[0]?.index?.data.sha ?? groups[0]?.items[0]?.data.sha ?? ''; 13 /* Same rotation as the payloads index, started on this section's own hue so 14 the two mirrors never open on the same colour. */ 15 const ACCENTS = ['pine', 'foam', 'iris', 'gold', 'rose', 'love']; 16 --- 17 <Base 18 title="Internal — InternalAllTheThings mirror — DÆMON//SEC" 19 description="A full, searchable mirror of InternalAllTheThings — Active Directory, cloud, container and red team internals. Credit: swisskyrepo." 20 > 21 <SectionBanner 22 n="03" 23 label="Full mirror · credit upstream" 24 title="InternalAllTheThings" 25 blurb="A complete on-site mirror of swisskyrepo's internal-network reference — Active Directory, cloud, containers and red team tradecraft, searchable offline." 26 accent="pine" 27 stats={[ 28 { label: 'Sections', value: String(groups.length).padStart(2, '0'), accent: true }, 29 { label: 'Pages', value: totalPages }, 30 { label: 'Rev', value: sha.slice(0, 7) }, 31 ]} 32 /> 33 34 <div class="wrap"> 35 <nav class="breadcrumb" style="margin-top:1.6rem;"> 36 <a href={url('')}>~</a><span class="sep">/</span><span class="muted">internal</span> 37 </nav> 38 39 <aside class="patt-credit corners" style="margin-top:1.4rem;"> 40 <span class="patt-badge">mirror</span> 41 <span class="patt-credit__text"> 42 Mirrored verbatim from <a href="https://github.com/swisskyrepo/InternalAllTheThings" target="_blank" rel="noopener">swisskyrepo/InternalAllTheThings</a>. 43 Images and raw files load from GitHub; see each page's <em>source</em> link. 44 <span class="patt-lic">No upstream licence file · mirrored with credit to the author · <a href={url('credits')}>credits</a>{sha && <> · <code>{sha.slice(0,7)}</code></>}</span> 45 </span> 46 <a class="patt-src" href="https://github.com/swisskyrepo/InternalAllTheThings" target="_blank" rel="noopener"> 47 <Icon name="github" /> upstream 48 </a> 49 </aside> 50 51 <div class="index" style="margin-bottom:3rem;"> 52 {groups.map((g, i) => ( 53 <RecordRow 54 href={url(`internal/${g.slug}`)} 55 n={String(i + 1).padStart(2, '0')} 56 title={g.title} 57 kind="internal" 58 kindIcon="layers" 59 accent={ACCENTS[i % ACCENTS.length]} 60 meta={`${g.count} ${g.count === 1 ? 'page' : 'pages'}`} 61 /> 62 ))} 63 {rootPages.map((p, i) => ( 64 <RecordRow 65 href={url(internalHref(p))} 66 n={String(groups.length + i + 1).padStart(2, '0')} 67 title={p.data.title} 68 kind="notice" 69 kindIcon="doc" 70 accent={ACCENTS[(groups.length + i) % ACCENTS.length]} 71 meta="upstream" 72 /> 73 ))} 74 </div> 75 </div> 76 </Base> 77 78 <style> 79 /* The attribution block is keyed to iris in global.css; this mirror runs 80 on pine, and a stray iris rule reads as a link to the payloads side. */ 81 .patt-credit { border-left-color: var(--pine); --bracket: var(--pine); } 82 .patt-badge { color: var(--pine); border-color: color-mix(in oklab, var(--pine) 50%, transparent); } 83 .patt-credit__text a { color: var(--pine); border-bottom-color: color-mix(in oklab, var(--pine) 40%, transparent); } 84 .patt-credit__text a:hover { border-bottom-color: var(--pine); } 85 .patt-src:hover { color: var(--pine); border-color: color-mix(in oklab, var(--pine) 50%, transparent); } 86 .patt-src svg { width: 14px; height: 14px; } 87 </style>