daemon-sec-cheatsheet

The cheatsheet vault for operators: AD, enumeration, exploitation, priv-esc, web, DFIR
git clone https://git.daemon-sec.xyz/daemon-sec-cheatsheet.git
Log | Files | Refs | README | LICENSE

[...slug].astro (3235B)


      1 ---
      2 import FuzzField from '../../components/FuzzField.astro';
      3 import { render } from 'astro:content';
      4 import Base from '../../layouts/Base.astro';
      5 import PayloadCredit from '../../components/PayloadCredit.astro';
      6 import { payloadsByTopic, topicOrder, prevNext, payloadHref, type Payload } from '../../lib/payloads';
      7 import { url } from '../../lib/url';
      8 
      9 export async function getStaticPaths() {
     10   const groups = await payloadsByTopic();
     11   const paths: any[] = [];
     12   for (const g of groups) {
     13     const order = topicOrder(g);
     14     for (const entry of order) {
     15       const { prev, next } = prevNext(order, entry);
     16       const slug = payloadHref(entry).replace(/^payloads\//, '');
     17       paths.push({ params: { slug }, props: { entry, prev, next, topicSlug: g.slug, topicTitle: g.title } });
     18     }
     19   }
     20   return paths;
     21 }
     22 
     23 interface Props { entry: Payload; prev?: Payload; next?: Payload; topicSlug: string; topicTitle: string }
     24 const { entry, prev, next, topicTitle } = Astro.props;
     25 const d = entry.data;
     26 const { Content, headings } = await render(entry);
     27 const toc = headings.filter((h) => h.depth === 2 || h.depth === 3);
     28 const leaf = entry.id.split('/').pop()!.replace(/^index$/, d.topic);
     29 ---
     30 <Base title={`${d.title} — Payloads — DÆMON//SEC`} description={`${d.topic} — payloads & techniques, mirrored from PayloadsAllTheThings.`}>
     31   <div class="wrap">
     32     <nav class="breadcrumb" style="margin-top:1.5rem;">
     33       <a href={url('')}>~</a><span class="sep">/</span>
     34       <a href={url('payloads')} style="color: var(--iris)">payloads</a><span class="sep">/</span>
     35       {d.isReadme
     36         ? <span class="muted">{d.topicSlug}</span>
     37         : <><a href={url(`payloads/${d.topicSlug}`)} style="color: var(--iris)">{d.topicSlug}</a><span class="sep">/</span><span class="muted">{leaf}</span></>}
     38     </nav>
     39 
     40     <header class="sheet-head plate signal-hero" data-pagefind-meta="category:Payloads">
     41       <FuzzField />
     42       <span class="grain grain--local" aria-hidden="true"></span>
     43       <span class="scanlines" aria-hidden="true"></span>
     44       <p class="eyebrow" style="color: var(--iris)">// Payloads · {topicTitle}</p>
     45       <h1 class="sheet-title" data-pagefind-meta="title">{d.title}</h1>
     46     </header>
     47 
     48     <PayloadCredit topic={d.topic} sourceUrl={d.sourceUrl} sha={d.sha} />
     49 
     50     <div class="sheet-layout">
     51       <article class="prose" data-pagefind-body>
     52         <Content />
     53       </article>
     54 
     55       {toc.length > 1 && (
     56         <aside class="toc plate-dawn corners" aria-label="On this page">
     57           <h4>On this page</h4>
     58           <nav>
     59             {toc.map((h) => (
     60               <a href={`#${h.slug}`} class={h.depth === 3 ? 'lvl-3' : ''}>{h.text}</a>
     61             ))}
     62           </nav>
     63         </aside>
     64       )}
     65     </div>
     66 
     67     <nav class="prevnext" aria-label="Pagination">
     68       {prev ? (
     69         <a href={url(payloadHref(prev))} style="--acc: var(--iris)">
     70           <span class="dir">← Prev</span><strong>{prev.data.title}</strong>
     71         </a>
     72       ) : <span></span>}
     73       {next ? (
     74         <a class="nx" href={url(payloadHref(next))} style="--acc: var(--iris)">
     75           <span class="dir">Next →</span><strong>{next.data.title}</strong>
     76         </a>
     77       ) : <span></span>}
     78     </nav>
     79   </div>
     80 </Base>