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

Commit 4416397

Browse files
author
dpatanin
committed
Merge branch 'gh-source' into rework/images
2 parents 07e5063 + b977f6c commit 4416397

11 files changed

Lines changed: 227 additions & 74 deletions

File tree

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"lodash": "^4.17.20",
3535
"react": "^16.13.1",
3636
"react-burger-menu": "^2.7.0",
37+
"react-collapsible": "^2.8.0",
3738
"react-dom": "^16.13.1",
3839
"react-helmet": "^6.1.0",
3940
"react-icons": "^3.11.0",

src/components/Collapsible.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React, { Fragment } from "react";
2+
import Collapsible from "react-collapsible";
3+
import { IoIosArrowDown, IoIosArrowForward } from "react-icons/io";
4+
5+
export default function CollapsibleWrapper({ trigger, children, ...props }) {
6+
const triggerComponent = (
7+
<Fragment>
8+
{trigger}
9+
<IoIosArrowDown className="arrow-down" />
10+
<IoIosArrowForward className="arrow-up" />
11+
</Fragment>
12+
);
13+
return (
14+
<Collapsible trigger={triggerComponent} {...props}>
15+
{children}
16+
</Collapsible>
17+
);
18+
}

src/components/ScannerExamples.js

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,50 @@
11
import React from "react";
2-
import { Tab, Tabs, TabList, TabPanel } from "react-tabs";
2+
import { Tab, TabList, TabPanel, Tabs } from "react-tabs";
33
import "react-tabs/style/react-tabs.css";
4+
import Collapsible from "./Collapsible";
45

5-
import groupBy from "lodash/groupBy";
6-
import mapValues from "lodash/mapValues";
7-
8-
export default function ScannerExamples({ examples: allExamples }) {
9-
const exampleGroups = mapValues(
10-
groupBy(allExamples, ({ scanTarget }) => scanTarget),
11-
(examples) => {
12-
/* We are reversing to ensure that the right text ist displayed for the right file */
13-
return examples.reverse();
14-
}
15-
);
16-
6+
export default function ScannerExamples({ examples }) {
177
return (
188
<div className="container-fluid">
199
<h2 className="title">Examples</h2>
2010

21-
{Object.entries(exampleGroups).map(([targetName, examples]) => {
11+
{examples.map(({ name, description, scan, findings }) => {
2212
return (
23-
<Tabs key={targetName}>
24-
<h3>{targetName}</h3>
25-
<TabList>
26-
{examples.map(({ fileName }) => (
27-
<Tab key={fileName}>{fileName.split(".")[0]}</Tab>
28-
))}
29-
</TabList>
30-
31-
{examples.map(({ fileName, content }) => (
32-
<TabPanel key={fileName}>
33-
<deckgo-highlight-code theme="cobalt">
34-
<code slot="code">{content}</code>
35-
</deckgo-highlight-code>
36-
</TabPanel>
37-
))}
13+
<Tabs key={name}>
14+
<Collapsible
15+
overflowWhenOpen="visible"
16+
lazyRender={true}
17+
transitionTime={150}
18+
transitionCloseTime={50}
19+
trigger={name}
20+
triggerTagName="h3"
21+
>
22+
{description && (
23+
<div
24+
dangerouslySetInnerHTML={{
25+
__html: description,
26+
}}
27+
></div>
28+
)}
29+
<TabList>
30+
{scan && <Tab key={"scan"}>Scan</Tab>}
31+
{findings && <Tab key={"findings"}>Findings</Tab>}
32+
</TabList>
33+
{scan && (
34+
<TabPanel key={"scan"}>
35+
<deckgo-highlight-code theme="cobalt">
36+
<code slot="code">{scan}</code>
37+
</deckgo-highlight-code>
38+
</TabPanel>
39+
)}
40+
{findings && (
41+
<TabPanel key={"findings"}>
42+
<deckgo-highlight-code theme="cobalt">
43+
<code slot="code">{findings}</code>
44+
</deckgo-highlight-code>
45+
</TabPanel>
46+
)}
47+
</Collapsible>
3848
</Tabs>
3949
);
4050
})}

src/components/Sidebar.js

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { Fragment, useState } from 'react';
22
import { Link } from 'gatsby';
3-
import { IoIosArrowDown, IoIosArrowForward } from 'react-icons/io';
3+
import Collapsible from './Collapsible';
44

55
/**
66
* Interactive Sidebar with toggleable categories.
@@ -23,50 +23,45 @@ const Sidebar = ({ categories = [], currentPathname }) => {
2323
<nav className="sidebar">
2424
{categories.map(({ categoryName, entries }) => (
2525
<Fragment key={categoryName}>
26-
<button
27-
onClick={() =>
26+
<Collapsible
27+
className="sidebar-category"
28+
openedClassName="sidebar-category"
29+
transitionTime={150}
30+
transitionCloseTime={50}
31+
trigger={categoryName}
32+
triggerTagName="div"
33+
open={selectedCategory === categoryName}
34+
onTriggerOpening={() =>
35+
selectCategory(
36+
selectedCategory === categoryName ? null : categoryName
37+
)
38+
}
39+
onTriggerClosing={() =>
2840
selectCategory(
2941
selectedCategory === categoryName ? null : categoryName
3042
)
3143
}
32-
className="sidebar-category"
33-
>
34-
{categoryName}
35-
<IoIosArrowDown
36-
className="arrow"
37-
style={{
38-
display: selectedCategory === categoryName ? 'block' : 'none',
39-
}}
40-
/>
41-
<IoIosArrowForward
42-
className="arrow"
43-
style={{
44-
display: selectedCategory === categoryName ? 'none' : 'block',
45-
}}
46-
/>
47-
</button>
48-
<ul
49-
id={categoryName}
50-
name="Category"
51-
className="list-unstyled components show"
52-
style={{
53-
display: selectedCategory === categoryName ? 'block' : 'none',
54-
}}
5544
>
56-
{entries.map((element) => (
57-
<li
58-
key={element.node.frontmatter.title}
59-
className="sidebar-element"
60-
>
61-
<Link
62-
to={`/integrations/${element.node.frontmatter.path}`}
63-
activeClassName="active-Link"
45+
<ul
46+
id={categoryName}
47+
name="Category"
48+
className="list-unstyled components show"
49+
>
50+
{entries.map((element) => (
51+
<li
52+
key={element.node.frontmatter.title}
53+
className="sidebar-element"
6454
>
65-
{element.node.frontmatter.title}
66-
</Link>
67-
</li>
68-
))}
69-
</ul>
55+
<Link
56+
to={`/integrations/${element.node.frontmatter.path}`}
57+
activeClassName="active-Link"
58+
>
59+
{element.node.frontmatter.title}
60+
</Link>
61+
</li>
62+
))}
63+
</ul>
64+
</Collapsible>
7065
</Fragment>
7166
))}
7267
</nav>

src/pages/telemetry/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React from "react";
2+
import { graphql } from "gatsby";
3+
import SEO from "../../components/SEO";
4+
import Layout from "../../components/Layout";
5+
6+
const TelemetryPage = (props) => {
7+
const html = props.data.markdownRemark.html;
8+
return (
9+
<Layout bodyClass="page-telemetry">
10+
<SEO title="Telemetry" />
11+
<div id="content">
12+
<div className="container" id="integration-doc">
13+
<div className="content" dangerouslySetInnerHTML={{ __html: html }} />
14+
</div>
15+
</div>
16+
</Layout>
17+
);
18+
};
19+
20+
export const query = graphql`
21+
query Telemetry {
22+
markdownRemark(
23+
fileAbsolutePath: { regex: "/src/pages/telemetry/telemetry/" }
24+
) {
25+
html
26+
}
27+
}
28+
`;
29+
30+
export default TelemetryPage;

src/pages/telemetry/telemetry.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: "telemetry"
3+
path: "/telemetry"
4+
date: 2020-08-27 14:00:00
5+
---
6+
7+
# secureCodeBox Telemetry Data
8+
9+
The secureCodeBox Operator collects and submits anonymized data to give the development team a vague overview on how much the secureCodeBox is actually used.
10+
11+
## Datapoints Collected:
12+
13+
The total number of datapoints collected is extremely small, and they are individually evaluated to ensure that the submitted data is as anonymous as possible.
14+
15+
- Installed version of the secureCodeBox Operator (e.g. `v2.0.0`)
16+
- List of installed ScanTypes across all kubernetes Namespaces: (e.g. `['nmap', 'zap-baseline']`). Unofficial ScanTypes are reported as `other`, to avoid submission of confidential data.
17+
18+
## Collection Interval
19+
20+
The data is submitted every 24 hours. When the Operator starts, the first data-point is submitted one hour after the start, to give users the opportunity to disable the telemetry data submission before the first datapoints are send.
21+
22+
## Disabling Telemetry Data Submission
23+
24+
The collection of telemetry data can be completely disabled by setting the `telemetryEnabled` to `false`, e.g:
25+
26+
```bash
27+
helm install securecodebox-operator secureCodeBox/operator --set="telemetryEnabled=false"
28+
```
29+
30+
## Telemetry Code
31+
32+
The entire code for both the telemetry backend and frontend is open-source and linked below.
33+
34+
- Telemetry Client used in secureCodeBox Operator: [telemetry client](https://github.com/secureCodeBox/secureCodeBox-v2/blob/master/operator/internal/telemetry/telemetry.go)
35+
- Telemetry Backend: [telemetry backend](https://github.com/secureCodeBox/telemetry)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
.Collapsible .Collapsible__trigger {
2+
display: flex;
3+
justify-content: space-between;
4+
align-items: center;
5+
cursor: pointer !important;
6+
}
7+
8+
.Collapsible__trigger.is-open {
9+
.arrow-down {
10+
display: none;
11+
}
12+
.arrow-up {
13+
display: block;
14+
}
15+
}
16+
17+
.Collapsible__trigger.is-closed {
18+
.arrow-down {
19+
display: block;
20+
}
21+
.arrow-up {
22+
display: none;
23+
}
24+
}

src/scss/components/_sidebar.scss

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ a {
6262
}
6363
}
6464
ul {
65-
display: none;
65+
margin-top: 20px;
6666
li {
6767
a {
6868
text-align: left;
@@ -89,13 +89,12 @@ a {
8989
text-align: left;
9090
}
9191
.sidebar-category:hover {
92-
cursor: pointer;
9392
box-shadow: 0 1px 18px rgba(0, 0, 0, 0.2);
9493
}
9594
.sidebar-element {
9695
font-size: 1rem;
9796
a {
98-
text-indent: 30px;
97+
text-indent: 16px;
9998
}
10099
}
101100
}
@@ -123,4 +122,4 @@ button {
123122

124123
*:focus {
125124
outline: 0 !important;
126-
}
125+
}

src/scss/style.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
@import 'libraries/hamburgers/hamburgers';
4444

4545
// Components
46+
@import 'components/collapsible';
4647
@import 'components/page';
4748
@import 'components/header';
4849
@import 'components/footer';

0 commit comments

Comments
 (0)