Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Commit 58f2c23

Browse files
committed
[WIP] Add Scanner Example Component
1 parent b743f94 commit 58f2c23

2 files changed

Lines changed: 78 additions & 0 deletions

File tree

src/components/ScannerExamples.js

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import React from "react"
2+
import { useStaticQuery, graphql } from "gatsby"
3+
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
4+
import 'react-tabs/style/react-tabs.css';
5+
6+
export default function ScannerExamples(props) {
7+
8+
const scanner = 'nmap';
9+
const query = graphql`
10+
query {
11+
examples: allFile(filter: {base: {regex: "/^(findings|scan).yaml/"}, extension: {eq: "yaml"}}) {
12+
edges {
13+
node {
14+
base
15+
relativeDirectory
16+
}
17+
}
18+
nodes {
19+
fields {
20+
content
21+
fileName
22+
scanTarget
23+
}
24+
}
25+
}
26+
}`;
27+
const data = useStaticQuery(query);
28+
console.log("Results for query");
29+
console.log(data);
30+
const targets = [];
31+
const examples = [];
32+
33+
const length = data.examples.edges.length
34+
let i;
35+
for (i = 0; i < length; i++) {
36+
const edge = data.examples.edges[i];
37+
const node = data.examples.nodes[i];
38+
console.log(edge.node.relativeDirectory)
39+
if (edge.node.relativeDirectory.includes(scanner)) {
40+
const target = data.examples.nodes[i].fields.scanTarget
41+
if (!targets.includes(target)) {
42+
targets.push(target);
43+
examples.push(node);
44+
}
45+
}
46+
}
47+
48+
console.log(targets);
49+
console.log(examples);
50+
51+
return (
52+
<div className="container-fluid">
53+
<h2 className="title">Examples</h2>
54+
55+
<Tabs>
56+
<TabList>
57+
{targets.map(target => (<Tab key={target}>{target}</Tab>))}
58+
</TabList>
59+
{targets.map(target => (<TabPanel key={target}>
60+
<Tabs> <TabList>
61+
{examples.reverse().filter(example => example.fields.scanTarget === target).map((example, index) => (
62+
<Tab key={index}>{example.fields.fileName}</Tab>
63+
))}
64+
</TabList>
65+
66+
{examples.filter(example => example.fields.scanTarget === target).map((example, index) => (
67+
<TabPanel key={index}>
68+
<pre><code>{example.fields.content}</code></pre>
69+
</TabPanel>
70+
))}
71+
</Tabs>
72+
</TabPanel>))}
73+
</Tabs>
74+
</div>
75+
);
76+
}

src/templates/integration.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from "react";
22
import { graphql, Link } from "gatsby";
33
import Layout from "../components/Layout";
4+
import ScannerExamples from "../components/ScannerExamples.js";
45

56
const Integration = props => {
67
const { title } = props.data.markdownRemark.frontmatter;
@@ -47,6 +48,7 @@ const Integration = props => {
4748
className="content"
4849
dangerouslySetInnerHTML={{ __html: html }}
4950
/>
51+
<ScannerExamples scanner={props.path} />
5052
</div>
5153
</div>
5254
</div>

0 commit comments

Comments
 (0)