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

Commit 06016e9

Browse files
author
dpatanin
committed
add persistence provider to Integrations page
1 parent 1e74ecc commit 06016e9

5 files changed

Lines changed: 83 additions & 12 deletions

File tree

gatsby-node.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ exports.createPages = ({ graphql, actions }) => {
3838
}
3939
}
4040
scanner: allMarkdownRemark(
41-
filter: {fileAbsolutePath: { regex: "/gatsby-source-git/"} }
41+
filter: { fileAbsolutePath: { regex: "/gatsby-source-git/" } }
4242
) {
4343
edges {
4444
node {
@@ -52,6 +52,20 @@ exports.createPages = ({ graphql, actions }) => {
5252
}
5353
}
5454
}
55+
persistenceProvider: allMarkdownRemark(
56+
filter: { fileAbsolutePath: { regex: "/integrations/persistence-provider/" } }
57+
) {
58+
edges {
59+
node {
60+
frontmatter {
61+
title
62+
path
63+
category
64+
}
65+
id
66+
}
67+
}
68+
}
5569
}
5670
`).then(result => {
5771
result.data.getStarted.edges.forEach(({ node }) => {
@@ -84,6 +98,16 @@ exports.createPages = ({ graphql, actions }) => {
8498
}
8599
});
86100
});
101+
result.data.persistenceProvider.edges.forEach(({ node }) => {
102+
const component = path.resolve("src/templates/integration.js");
103+
createPage({
104+
path: node.frontmatter.path,
105+
component,
106+
context: {
107+
id: node.id
108+
}
109+
});
110+
});
87111
resolve();
88112
})
89113
);

src/pages/contact/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class ContactPage extends React.Component {
122122

123123
<div class="form-group">
124124
<label for="mce-MESSAGE" className="col-form-label">
125-
Interessted in &hellip;
125+
Interested in &hellip;
126126
</label>
127127
<input
128128
type="text"

src/pages/integrations/index.js

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import SEO from "../../components/SEO";
44
import Layout from "../../components/Layout";
55

66
const Integrations = props => {
7-
const scanner = props.data.allMarkdownRemark.edges;
7+
const scanner = props.data.scanner.edges;
8+
const persistenceProvider = props.data.persistenceProvider.edges;
89

910
return (
1011
<Layout bodyClass="page-integrations">
@@ -28,9 +29,7 @@ const Integrations = props => {
2829
<div className="container pb-2 pb-md-3">
2930
<div className="row justify-content-center">
3031
<div className="col-12">
31-
<h2 className="title-3 text-dark mb-2">
32-
Scanner
33-
</h2>
32+
<h2 className="title-3 text-dark mb-2">Scanner</h2>
3433
</div>
3534
{scanner.map(edge => (
3635
<div
@@ -66,13 +65,48 @@ const Integrations = props => {
6665
))}
6766
</div>
6867
</div>
68+
<div className="container pb-2 pb-md-3">
69+
<div className="row justify-content-center">
70+
<div className="col-12">
71+
<h2 className="title-3 text-dark mb-2">Persistence provider</h2>
72+
</div>
73+
{persistenceProvider.map(edge => (
74+
<div
75+
key={edge.node.id}
76+
className="col-12 col-md-6 col-lg-6 col-sm-12 mb-2 no-highlight"
77+
>
78+
<Link to={edge.node.frontmatter.path}>
79+
<div className="feature hoverable">
80+
<div className="feature-scanner-icon">
81+
{/* <img
82+
className="scanner-icon"
83+
src={withPrefix(
84+
"/scannerIcons/" + edge.node.frontmatter.title + ".svg"
85+
)}
86+
alt="scanner icon"
87+
></img> */}
88+
89+
</div>
90+
<h2 className="feature-title">
91+
{edge.node.frontmatter.title}
92+
</h2>
93+
<div className="feature-content">
94+
<p>{edge.node.frontmatter.usecase}</p>
95+
</div>
96+
<div className="feature-scanner-icon-right-gap"></div>
97+
</div>
98+
</Link>
99+
</div>
100+
))}
101+
</div>
102+
</div>
69103
</Layout>
70104
);
71105
};
72106

73107
export const query = graphql`
74-
query ScannerQuery {
75-
allMarkdownRemark(
108+
query {
109+
scanner: allMarkdownRemark(
76110
filter: { frontmatter: { category: { eq: "scanner" } } }
77111
sort: { fields: [frontmatter___title], order: ASC }
78112
) {
@@ -89,6 +123,23 @@ export const query = graphql`
89123
}
90124
}
91125
}
126+
persistenceProvider: allMarkdownRemark(
127+
filter: {
128+
fileAbsolutePath: { regex: "/integrations/persistence-provider/" }
129+
}
130+
) {
131+
edges {
132+
node {
133+
frontmatter {
134+
title
135+
path
136+
category
137+
}
138+
id
139+
html
140+
}
141+
}
142+
}
92143
}
93144
`;
94145

src/pages/integrations/persistence-provider/defectDojo.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ category: "presistence provider"
55

66
---
77

8-
# Defect Dojo
9-
108
## About
119

1210
DefectDojo is a OpenSource Tools for importing and managing findings of security scanners. The DefectDojo Persistence Provider can be used to create new Engagment for SecurityTest run via the secureCodeBox and import all findings which were identified.

src/pages/integrations/persistence-provider/elasticsearch.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ path: "persistence-provider/elasticsearch"
44
category: "persistence provider"
55
---
66

7-
# Elasticsearch
8-
97
## About
108

119
The ElasticSearch PersistenceProvider saves all findings and reports into the configured ElasticSearch index. This allows for some easy searching and visualisation of the findings. To learn more about Elasticsearch visit [elastic.io].

0 commit comments

Comments
 (0)