diff --git a/.gitignore b/.gitignore index b2d6de3..5396656 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.idea/* diff --git a/README.md b/README.md index 92b4a6c..ea0b3e4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This website is built using [Docusaurus](https://docusaurus.io/), a modern stati ## Installation ```bash -yarn +yarn install ``` ## Local Development diff --git a/docs/explanation/pipelines.md b/docs/explanation/pipelines.md index cfabb7b..4d94406 100644 --- a/docs/explanation/pipelines.md +++ b/docs/explanation/pipelines.md @@ -1,3 +1 @@ -# Pipelines - -TODO +todo \ No newline at end of file diff --git a/docs/how-tos/components/advanced.md b/docs/how-tos/components/advanced.md index ae6f423..3b7ea06 100644 --- a/docs/how-tos/components/advanced.md +++ b/docs/how-tos/components/advanced.md @@ -8,11 +8,11 @@ sidebar_position: 4 All `.go` components get built using a default Docker image. If you want to use your own image, for example, because your component has custom dependencies, you can do that too. -One good example of such a component is the [producers/ossf-scorecard component](https://github.com/ocurity/dracon/tree/main/components/producers/ossf-scorecard). Let's take a closer look at it. +One good example of such a component is the [producers/ossf-scorecard component](https://github.com/smithy-security/smithy/tree/main/components/producers/ossf-scorecard). Let's take a closer look at it. -In the below `Dockerfile` we using a custom base image and then are further configuring that. +In the below `Dockerfile` we're using a custom base image and then are further configuring that. -```docker title="dracon/components/producers/ossf-scorecard/Dockerfile" +```docker title="smithy/components/producers/ossf-scorecard/Dockerfile" ARG OSSF_SCORECARD_SAFETY_BASE_IMAGE FROM gcr.io/openssf/scorecard:stable @@ -25,23 +25,23 @@ ENTRYPOINT ["/scorecard"] In addition, a `Makefile` is placed inside the component folder, to advice Smithy on how to build the component image. -```makefile title="dracon/components/producers/ossf-scorecard/Makefile" +```makefile title="smithy/components/producers/ossf-scorecard/Makefile" .PHONY: component publish CONTAINER_REPO= -DRACON_VERSION= +SMITHY_VERSION= OSSF_SCORECARD_SAFETY_BASE_IMAGE=$(shell test -e .custom_image && cat .custom_image || echo "alpine:latest") DOCKER=docker component: - $(DOCKER) build --tag $(CONTAINER_REPO)/components/producers/ossf-scorecard:$(DRACON_VERSION) \ + $(DOCKER) build --tag $(CONTAINER_REPO)/components/producers/ossf-scorecard:$(SMITHY_VERSION) \ --file Dockerfile \ $$([ "${SOURCE_CODE_REPO}" != "" ] && echo "--label=org.opencontainers.image.source=${SOURCE_CODE_REPO}" ) \ --build-arg OSSF_SCORECARD_SAFETY_BASE_IMAGE=$(OSSF_SCORECARD_SAFETY_BASE_IMAGE) ../../.. 1>&2 publish: - $(DOCKER) push $(CONTAINER_REPO)/components/producers/ossf-scorecard:$(DRACON_VERSION) 1>&2 + $(DOCKER) push $(CONTAINER_REPO)/components/producers/ossf-scorecard:$(SMITHY_VERSION) 1>&2 ``` And that's it! Simply by adding these two files Smithy will now be able to build your component. diff --git a/docs/how-tos/components/example-producer/main.go b/docs/how-tos/components/example-producer/main.go index e359eb7..a4ef909 100644 --- a/docs/how-tos/components/example-producer/main.go +++ b/docs/how-tos/components/example-producer/main.go @@ -5,9 +5,9 @@ import ( "fmt" "log" - v1 "github.com/ocurity/dracon/api/proto/v1" + v1 "github.com/smithy-security/smithy/api/proto/v1" - "github.com/ocurity/dracon/components/producers" + "github.com/smithy-security/smithy/components/producers" ) func main() { @@ -27,7 +27,7 @@ func main() { issues := parseIssues(&results) - if err := producers.WriteDraconOut( + if err := producers.WriteSmithyOut( "example-tool", issues, ); err != nil { diff --git a/docs/how-tos/components/example-producer/main_test.go b/docs/how-tos/components/example-producer/main_test.go index fa4c8f3..7029332 100644 --- a/docs/how-tos/components/example-producer/main_test.go +++ b/docs/how-tos/components/example-producer/main_test.go @@ -4,7 +4,7 @@ import ( "encoding/json" "testing" - v1 "github.com/ocurity/dracon/api/proto/v1" + v1 "github.com/smithy-security/smithy/api/proto/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/docs/how-tos/components/example-producer/task.yaml b/docs/how-tos/components/example-producer/task.yaml index fafe851..8ffe953 100644 --- a/docs/how-tos/components/example-producer/task.yaml +++ b/docs/how-tos/components/example-producer/task.yaml @@ -4,7 +4,7 @@ kind: Task metadata: name: producer-example-tool labels: - v1.dracon.ocurity.com/component: producer + v1.smithy.smithy-security.com/component: producer spec: params: - name: producer-golang-example-tool @@ -36,11 +36,11 @@ spec: - name: produce-issues imagePullPolicy: IfNotPresent - image: ghcr.io/ocurity/dracon/components/producers/example-tool/image:latest + image: ghcr.io/smithy-security/smithy/components/producers/example-tool/image:latest command: ["/app/components/producers/example-tool/example-tool-parser"] args: - "-in=/scratch/out.json" - - "-out=$(workspaces.output.path)/.dracon/producers/example-tool.pb" + - "-out=$(workspaces.output.path)/.smithy/producers/example-tool.pb" volumeMounts: - mountPath: /scratch name: scratch diff --git a/docs/how-tos/components/writing-consumers.md b/docs/how-tos/components/writing-consumers.md index 66b74d9..984bf66 100644 --- a/docs/how-tos/components/writing-consumers.md +++ b/docs/how-tos/components/writing-consumers.md @@ -4,8 +4,8 @@ sidebar_position: 3 # Consumers -A consumer is a program that parses the Dracon compatible outputs and pushes -them into arbitrary destinations. The Dracon compatible outputs from from +A consumer is a program that parses the compatible outputs and pushes +them into arbitrary destinations. The compatible outputs from *producers* and *enrichers*. *** @@ -14,12 +14,12 @@ Consumers can be written in any language that supports protobufs. We currently have examples in Golang and Python. They are all structured in the same way: 1. Parse program arguments: - 1. `in`: the dracon compatible outputs location. - 2. `raw`: whether or not to use enriched results. -2. Parse all dracon compatible output files the `in` location. + 1. `in`: the smithy-compatible outputs location. + 2. `raw`: whether to use enriched results. +2. Parse all output files the `in` location. 3. Do arbitrary logic with issues. 4. Create a Tekton Task `task.yaml` with - `.metadata.labels["v1.dracon.ocurity.com/component"] = consumer`. + `.metadata.labels["v1.smithy.smithy-security.com/component"] = consumer`. ## Consumer API diff --git a/docs/how-tos/components/writing-producers.md b/docs/how-tos/components/writing-producers.md index 36744fc..2e40fc3 100644 --- a/docs/how-tos/components/writing-producers.md +++ b/docs/how-tos/components/writing-producers.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Producers A producer is a program that parses the output of a tool and converts it into -Dracon compatible output that can be used by *enrichers* and *consumers*. +Smithy compatible output that can be used by *enrichers* and *consumers*. *** @@ -14,12 +14,12 @@ have examples in Golang and Python. They are all structured in the same way: 1. Parse program arguments: 1. `in`: the raw tool results file location. - 2. `out`: where to place the Dracon compatible output file location. + 2. `out`: where to place the Smithy compatible output file location. 2. Parse the `in` file into Protobufs (`LaunchToolResponse`). 3. Add metadata to Protobufs (e.g. git/source-code information). 4. Write the protobuf bytes to the `out` file. 5. Create a Tekton Task `task.yaml` with - `.metadata.labels["v1.dracon.ocurity.com/component"] = producer`. + `.metadata.labels["v1.smithy.smithy-security.com/component"] = producer`. ## Producer API diff --git a/docs/how-tos/deploying-custom-components.md b/docs/how-tos/deploying-custom-components.md index 24c751b..b095163 100644 --- a/docs/how-tos/deploying-custom-components.md +++ b/docs/how-tos/deploying-custom-components.md @@ -1,18 +1,18 @@ -# Deploying your Custom Dracon Components +# Deploying your Custom Smithy Components The first step is to build all the containers and push them to a registry that your cluster has access to. We use `make` to package our containers. For each component our Make will automatically generate a phony target with the path `components/{component type}/{component name}/docker`. We have a top-level target that creates all the component containers along with a couple of extra -containers our system uses, such as draconctl. +containers our system uses, such as smithyctl. The following examples are using the local container registry used by the KiND cluster, but make sure that you replace the URL with the registry URL that you are using, if you are using something else: ```bash -make publish-component-containers CONTAINER_REPO=localhost:5000/ocurity/dracon +make publish-component-containers CONTAINER_REPO=localhost:5000/smithy-security/smithy ``` \* Notice that the repo we are using is slightly different than the @@ -23,48 +23,48 @@ KiND cluster, that's not the case. Instead the registry's host is deploy the pipelines and their image repositories will also have to be set to this value. -\*\*Make sure that you use the draconctl image that you pushed in the repository +\*\*Make sure that you use the smithyctl image that you pushed in the repository You can package your components into a Helm package by running the following command: ```bash -export CUSTOM_DRACON_VERSION=$(make print-DRACON_VERSION) +export CUSTOM_SMITHY_VERSION=$(make print-SMITHY_VERSION) export CUSTOM_HELM_COMPONENT_PACKAGE_NAME= -make cmd/draconctl/bin -bin/cmd/draconctl components package \ - --version ${CUSTOM_DRACON_VERSION} \ - --chart-version ${CUSTOM_DRACON_VERSION} \ +make cmd/smithyctl/bin +bin/cmd/smithyctl components package \ + --version ${CUSTOM_SMITHY_VERSION} \ + --chart-version ${CUSTOM_SMITHY_VERSION} \ --name ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ ./components -helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ +helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon + --namespace smithy ``` If your custom components are local, you need to override the component registry you can do so with the following slightly modified helm command ```bash -helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ +helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon\ - --set container_registry=kind-registry:5000/ocurity/dracon + --namespace smithy\ + --set container_registry=kind-registry:5000/smithy-security/smithy ``` After changes to your components you need to redeploy, you can do so as such: ```bash -export CUSTOM_DRACON_VERSION=$(make print-DRACON_VERSION) -make publish-component-containers CONTAINER_REPO=localhost:5000/ocurity/dracon -bin/cmd/draconctl components package --version ${CUSTOM_DRACON_VERSION} \ - --chart-version ${CUSTOM_DRACON_VERSION} \ +export CUSTOM_SMITHY_VERSION=$(make print-SMITHY_VERSION) +make publish-component-containers CONTAINER_REPO=localhost:5000/smithy-security/smithy +bin/cmd/smithyctl components package --version ${CUSTOM_SMITHY_VERSION} \ + --chart-version ${CUSTOM_SMITHY_VERSION} \ --name ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ ./components helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ - ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ + ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon \ - --set container_registry=kind-registry:5000/ocurity/dracon + --namespace smithy \ + --set container_registry=kind-registry:5000/smithy-security/smithy ``` diff --git a/docs/how-tos/elasticsearch.md b/docs/how-tos/elasticsearch.md index 7a64a28..e42e282 100644 --- a/docs/how-tos/elasticsearch.md +++ b/docs/how-tos/elasticsearch.md @@ -1,11 +1,11 @@ # Accessing the Kibana Dashboard -Dracon ships with an instance of Elastic Search to store results in. We can use Kibana to explore it through a UI. +Smithy ships with an instance of Elastic Search to store results in. We can use Kibana to explore it through a UI. ## Port-Forward the Kibana Pod ```bash -kubectl -n dracon port-forward svc/dracon-kb-http 5601:5601 +kubectl -n smithy port-forward svc/smithy-kb-http 5601:5601 ``` ## Get the Credentials @@ -13,7 +13,7 @@ kubectl -n dracon port-forward svc/dracon-kb-http 5601:5601 To log in to Kibana you need credentials. The username is `elastic`. You can retrieve the password by running: ```bash -kubectl -n dracon get secret dracon-es-elastic-user \ +kubectl -n smithy get secret smithy-es-elastic-user \ -o=jsonpath='{.data.elastic}' | \ base64 -d &&\ echo @@ -23,7 +23,7 @@ kubectl -n dracon get secret dracon-es-elastic-user \ And that's it! Now we can explore the Kibana Dashboard by navigating to http://localhost:5601/ in our browser and logging in with the credentials from above. -To see any data that was created by Dracon we can use the `Discover` feature in Kibana. Click on `Analytics > Discover` on the homepage or [follow this link](http://localhost:5601/app/discover#). +To see any data that was created by Smithy we can use the `Discover` feature in Kibana. Click on `Analytics > Discover` on the homepage or [follow this link](http://localhost:5601/app/discover#). ### Add a New Data View @@ -31,7 +31,7 @@ Then, we need to create a new data view. We only need to do this once. 1. Click on the data dropdown, by default it will say something like `kibana_sample_data_...` 2. Click on `Create a data view` - 1. Name it `dracon` + 1. Name it `smithy` 2. Under `timestamp field` select `scan_start_time` 3. Click `Create data view` diff --git a/docs/reference/components/_category_.json b/docs/reference/components/_category_.json new file mode 100644 index 0000000..96701a0 --- /dev/null +++ b/docs/reference/components/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "Components", + "position": 4, + "link": { + "type": "generated-index", + "description": "Read about each component" + + } +} diff --git a/docs/reference/components/consumers/_category_.json b/docs/reference/components/consumers/_category_.json new file mode 100644 index 0000000..fa26c05 --- /dev/null +++ b/docs/reference/components/consumers/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Consumers", + "position": 4, + "link": { + "type": "generated-index", + "description": "Components that consume and display your security alerts.\n\n" + } +} diff --git a/docs/reference/components/consumers/golang-gosec.md b/docs/reference/components/consumers/golang-gosec.md new file mode 100644 index 0000000..95bb195 --- /dev/null +++ b/docs/reference/components/consumers/golang-gosec.md @@ -0,0 +1 @@ +gosec \ No newline at end of file diff --git a/docs/reference/components/enrichers/_category_.json b/docs/reference/components/enrichers/_category_.json new file mode 100644 index 0000000..3695c1c --- /dev/null +++ b/docs/reference/components/enrichers/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Enrichers", + "position": 3, + "link": { + "type": "generated-index", + "description": "Components that enrich your security alerts with more details and turn them into actionable events." + } +} diff --git a/docs/reference/components/enrichers/deduplication.md b/docs/reference/components/enrichers/deduplication.md new file mode 100644 index 0000000..aa75d34 --- /dev/null +++ b/docs/reference/components/enrichers/deduplication.md @@ -0,0 +1 @@ +deduplication \ No newline at end of file diff --git a/docs/reference/components/producers/_category_.json b/docs/reference/components/producers/_category_.json new file mode 100644 index 0000000..996e44a --- /dev/null +++ b/docs/reference/components/producers/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Producers", + "position": 2, + "link": { + "type": "generated-index", + "description": "Components that scan your resources and produce security alerts." + } +} diff --git a/docs/reference/components/producers/golang-gosec.md b/docs/reference/components/producers/golang-gosec.md new file mode 100644 index 0000000..95bb195 --- /dev/null +++ b/docs/reference/components/producers/golang-gosec.md @@ -0,0 +1 @@ +gosec \ No newline at end of file diff --git a/docs/reference/components/sources/_category_.json b/docs/reference/components/sources/_category_.json new file mode 100644 index 0000000..d9aa10b --- /dev/null +++ b/docs/reference/components/sources/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Sources", + "position": 1, + "link": { + "type": "generated-index", + "description": "Components that fetch the resources which you need to scan." + } +} diff --git a/docs/reference/components/sources/github.md b/docs/reference/components/sources/github.md new file mode 100644 index 0000000..cc33257 --- /dev/null +++ b/docs/reference/components/sources/github.md @@ -0,0 +1,48 @@ +--- +sidebar_custom_props: + icon: "/img/components/git.svg" +--- +# Git Clone Source Component + +This component lets Smithy clone a repository from GitHub. + +## How to use + +1. In the Smithy UI, open the page to create a new workflow. +2. Find the Git Clone in the Sources dropdown. +3. Set the URL of your repository on the right. if your repository is private, read below. + +All other settings are optional. + +### Cloning a private repository + +If you are cloning a private repo, the URL should include your PAT token: + +`https://@github.com//.git` + +You can generate a PAT token on GitHub via your account settings. Read the precise +instructions [here](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens +). + +## Available Options + +You can configure the GitHub Source component with the following options: + +| Option Name | Description | Default | Type | +|-----------------------------|----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|---------| +| URL | Repository URL to clone | | String | +| Revision | Revision to checkout. (a branch, tag, sha, ref, etc...) | | String | +| Refspec | Refspec to fetch before checking out revision. | | String | +| Submodules | Initialize and fetch git submodules. | "true" | Boolean | +| Clone Depth | Perform a shallow clone, fetching only the most recent N commits. | "1" | Number | +| SSL Verify | Set the `http.sslVerify` global git config. Setting this to `false` is not advised unless you are sure that you trust your git remote. | "true" | Boolean | +| CRT File Name | File name of mounted CRT using ssl-ca-directory workspace. | "ca-bundle.crt" | String | +| Sub-directory | Subdirectory inside the `output` Workspace to clone the repo into. | "source-code" | String | +| Sparse Checkout Directories | Define the directory patterns to match or exclude when performing a sparse checkout. | | String | +| Delete Existing | Clean out the contents of the destination directory if it already exists before cloning. | "true" | Boolean | +| http Proxy | HTTP proxy server for non-SSL requests. | | String | +| https Proxy | HTTPS proxy server for SSL requests. | | String | +| no Proxy | Opt out of proxying HTTP/HTTPS requests. | | String | +| Verbose | Log the commands that are executed during `git-clone`'s operation. | "true" | Boolean | +| git Init Image | The image providing the git-init binary that this Task runs. | "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.40.2" | String | +| User Home | Absolute path to the user's home directory. | "/home/git" | String | \ No newline at end of file diff --git a/docs/reference/todo.md b/docs/reference/todo.md deleted file mode 100644 index 0db68d7..0000000 --- a/docs/reference/todo.md +++ /dev/null @@ -1 +0,0 @@ -Todo diff --git a/docs/tutorials/development.md b/docs/tutorials/development.md index c74106a..301d7f0 100644 --- a/docs/tutorials/development.md +++ b/docs/tutorials/development.md @@ -4,7 +4,7 @@ description: 'Going Beyond the Basics' sidebar_position: 2 --- -### Deploy Dracon Components +### Deploy Smithy Components The components that are used to build our pipelines are comprised out of two pieces: @@ -19,27 +19,27 @@ as follows: ```bash helm upgrade \ --install \ - --namespace dracon \ + --namespace smithy \ --version 0.8.0 \ - dracon-oss-components \ - oci://ghcr.io/ocurity/dracon/charts/dracon-oss-components + smithy-oss-components \ + oci://ghcr.io/smithy-security/smithy/charts/smithy-oss-components ``` -### Deploying a custom version of Dracon components +### Deploying a custom version of Smithy components The first step is to build all the containers and push them to a registry that your cluster has access to. We use `make` to package our containers. For each component our Make will automatically generate a phony target with the path `components/{component type}/{component name}/docker`. We have a top-level target that creates all the component containers along with a couple of extra -containers our system uses, such as draconctl. +containers our system uses, such as smithyctl. The following examples are using the local container registry used by the KiND cluster, but make sure that you replace the URL with the registry URL that you are using, if you are using something else: ```bash -make publish-component-containers CONTAINER_REPO=localhost:5000/ocurity/dracon +make publish-component-containers CONTAINER_REPO=localhost:5000/smithy-security/smithy ``` > [!NOTE] @@ -52,7 +52,7 @@ make publish-component-containers CONTAINER_REPO=localhost:5000/ocurity/dracon > this value. > [!TIP] -> Make sure to use the `draconctl` image that you pushed in the repository +> Make sure to use the `smithyctl` image that you pushed in the repository #### Using a different base image for your images @@ -67,47 +67,47 @@ these components have their own Makefiles. In those cases you can place a `.custom_image` file in the directory with the base image you wish to use and that will be picked up by the Makefile and build the container. -#### Deploying your custom Dracon components Helm package +#### Deploying your custom Smithy components Helm package You can package your components into a Helm package by running the following command: ```bash -export CUSTOM_DRACON_VERSION=$(make print-DRACON_VERSION) +export CUSTOM_SMITHY_VERSION=$(make print-SMITHY_VERSION) export CUSTOM_HELM_COMPONENT_PACKAGE_NAME= -make cmd/draconctl/bin -bin/cmd/draconctl components package \ - --version ${CUSTOM_DRACON_VERSION} \ - --chart-version ${CUSTOM_DRACON_VERSION} \ +make cmd/smithyctl/bin +bin/cmd/smithyctl components package \ + --version ${CUSTOM_SMITHY_VERSION} \ + --chart-version ${CUSTOM_SMITHY_VERSION} \ --name ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ ./components -helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ +helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon + --namespace smithy ``` If your custom components are local, you need to override the component registry you can do so with the following slightly modified helm command ```bash -helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ +helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon\ - --set container_registry=kind-registry:5000/ocurity/dracon + --namespace smithy\ + --set container_registry=kind-registry:5000/smithy-security/smithy ``` After changes to your components you need to redeploy, you can do so as such: ```bash -export CUSTOM_DRACON_VERSION=$(make print-DRACON_VERSION) -make publish-component-containers CONTAINER_REPO=localhost:5000/ocurity/dracon -bin/cmd/draconctl components package --version ${CUSTOM_DRACON_VERSION} \ - --chart-version ${CUSTOM_DRACON_VERSION} \ +export CUSTOM_SMITHY_VERSION=$(make print-SMITHY_VERSION) +make publish-component-containers CONTAINER_REPO=localhost:5000/smithy-security/smithy +bin/cmd/smithyctl components package --version ${CUSTOM_SMITHY_VERSION} \ + --chart-version ${CUSTOM_SMITHY_VERSION} \ --name ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ ./components helm upgrade ${CUSTOM_HELM_COMPONENT_PACKAGE_NAME} \ - ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_DRACON_VERSION}.tgz \ + ./${CUSTOM_HELM_COMPONENT_PACKAGE_NAME}-${CUSTOM_SMITHY_VERSION}.tgz \ --install \ - --namespace dracon \ - --set container_registry=kind-registry:5000/ocurity/dracon + --namespace smithy \ + --set container_registry=kind-registry:5000/smithy-security/smithy ``` \ No newline at end of file diff --git a/docs/tutorials/quickstart.md b/docs/tutorials/quickstart.md index 4c746a5..5fefe6e 100644 --- a/docs/tutorials/quickstart.md +++ b/docs/tutorials/quickstart.md @@ -4,7 +4,7 @@ description: "From zero to pipeline in under five minutes." sidebar_position: 1 --- -In this tutorial we will set up Dracon locally and run a pipeline to scan Golang repositories for vulnerabilities. Along the way we will encounter [Kubernetes](https://kubernetes.io/), [Tekton](https://tekton.dev/) and Dracon components. +In this tutorial we will set up Smithy locally and run a pipeline to scan Golang repositories for vulnerabilities. Along the way we will encounter [Kubernetes](https://kubernetes.io/), [Tekton](https://tekton.dev/) and Smithy components. ## Requirements @@ -17,7 +17,7 @@ You will need to have the following tools installed in your system: ## Installation -There are two main ways to run Dracon: Either you install the latest release, or you build it from the source. +There are two main ways to run Smithy: Either you install the latest release, or you build it from the source. For both options you'll just need to run a single command. ### Option 1: Install Latest Release @@ -32,18 +32,18 @@ make install make dev-deploy ``` -And that's it! Dracon is now up and running on your cluster and you can start using it. +And that's it! Smithy is now up and running on your cluster and you can start using it. ## Running a Pipeline -Now that Dracon is installed we can run a pipeline. Luckily, Dracon comes with a few example pipelines. Let's choose the Go pipeline: It takes a `.git` repository as an input, and then runs both [Go Nancy](https://github.com/sonatype-nexus-community/nancy) for SCA and [Gosec](https://github.com/securego/gosec) for SAST on the repository. You can deploy the pipeline as follows: +Now that Smithy is installed we can run a pipeline. Luckily, Smithy comes with a few example pipelines. Let's choose the Go pipeline: It takes a `.git` repository as an input, and then runs both [Go Nancy](https://github.com/sonatype-nexus-community/nancy) for SCA and [Gosec](https://github.com/securego/gosec) for SAST on the repository. You can deploy the pipeline as follows: ```bash -make cmd/draconctl/bin -bin/cmd/draconctl pipelines deploy ./examples/pipelines/golang-project +make cmd/smithyctl/bin +bin/cmd/smithyctl pipelines deploy ./examples/pipelines/golang-project ``` -This deploys the pipeline to Dracon. You can see that the pipeline was created +This deploys the pipeline to Smithy. You can see that the pipeline was created by taking a look at the Tekton dashboard. You can access the dashboard by running: ```bash @@ -52,18 +52,18 @@ kubectl -n tekton-pipelines port-forward svc/tekton-dashboard 9097:9097 ``` You should see the pipeline in the dashboard: -![Screenshot of the Tekton Dashboard showing the Dracon Go Pipeline](/img/quickstart-pipeline.png) +![Screenshot of the Tekton Dashboard showing the Smithy Go Pipeline](/img/quickstart-pipeline.png) Then you can run an instance of the pipeline as follows: ```bash kubectl create \ - -n dracon \ + -n smithy \ -f ./examples/pipelines/golang-project/pipelinerun.yaml ``` -And that's it! You've just run your first pipeline with Dracon. 🎉 -To see the pipeline running, head to `PipelineRuns` in the Tekton dashboard. You can also [take a look at the Elastic Search dashboard that comes with Dracon to check out the vulnerabilities](/docs/how-tos/elasticsearch) that Dracon found. +And that's it! You've just run your first pipeline with Smithy. 🎉 +To see the pipeline running, head to `PipelineRuns` in the Tekton dashboard. You can also [take a look at the Elastic Search dashboard that comes with Smithy to check out the vulnerabilities](/docs/how-tos/elasticsearch) that Smithy found. To learn more, check out these resources: diff --git a/docs/tutorials/writing-pipelines.md b/docs/tutorials/writing-pipelines.md index 3446a17..28a74a3 100644 --- a/docs/tutorials/writing-pipelines.md +++ b/docs/tutorials/writing-pipelines.md @@ -7,7 +7,7 @@ sidebar_position: 3 Composing pipelines is easy, it just takes four steps: 1. Write a `kustomization.yaml` file pointing to the components you want to use. -2. Run `draconctl pipelines build ` and redirect the +2. Run `smithyctl pipelines build ` and redirect the output to a yaml file. This automatically collects all the component yamls to a single templated file. 3. Write a helm `Chart.yaml` for your pipeline @@ -22,7 +22,7 @@ We can compose this pipeline by writing the following `kustomization.yaml` In the following file: -* we tell `draconctl` that we want the pipeline pods to have the suffix +* we tell `smithyctl` that we want the pipeline pods to have the suffix `*-golang-project` * it should base everything to the official `task.yaml` and `pipeline.yaml` * it should start by running a `git clone` to bring the code in for scanning @@ -30,7 +30,7 @@ In the following file: * it should aggregate the scanning results * enrich the results by applying policy and deduplicating * it should aggregate the enriched results -* finally `draconctl` should push results to `mongodb` and `elasticsearch` +* finally `smithyctl` should push results to `mongodb` and `elasticsearch` ```yaml --- @@ -54,15 +54,15 @@ components: ``` -Then executing `draconctl pipelines build ./go-pipeline/kustomization.yaml > ./go-pipeline/templates/all.yaml` +Then executing `smithyctl pipelines build ./go-pipeline/kustomization.yaml > ./go-pipeline/templates/all.yaml` generates a Helm template. To make the template into a chart we create the following `Chart.yaml` ```yaml # file: ./go-pipeline/Chart.yaml apiVersion: v2 -name: "dracon-golang-project" -description: "A Helm chart for deploying a Dracon pipeline for a Golang project." +name: "smithy-golang-project" +description: "A Helm chart for deploying a Smithy pipeline for a Golang project." type: "application" version: 0.0.1 appVersion: "0.0.1" @@ -72,8 +72,8 @@ We can manage this chart as any other Helm chart and install it with: ```bash helm upgrade go-pipeline ./go-pipeline --install \ - --set "container_registry=kind-registry:5000/ocurity/dracon" \ - --set "dracon_os_component_version=$(make print-DRACON_VERSION)" + --set "container_registry=kind-registry:5000/smithy-security/smithy" \ + --set "smithy_os_component_version=$(make print-SMITHY_VERSION)" ``` and that's it! diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 6932073..e0f4685 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -5,14 +5,14 @@ import type * as OpenApiPlugin from "docusaurus-plugin-openapi-docs"; const config: Config = { title: "Smithy Docs", - tagline: "Focus on the important stuff.", + tagline: "Documentation for the Smithy Security platform.", favicon: "img/favicon.png", url: "https://docs.smithy.security", baseUrl: "/", // GitHub pages deployment config. - organizationName: "ocurity", + organizationName: "smithy-security", projectName: "docs", trailingSlash: false, @@ -30,7 +30,7 @@ const config: Config = { { docs: { sidebarPath: "./sidebars.ts", - editUrl: "https://github.com/ocurity/docs/tree/main/", + editUrl: "https://github.com/smithy-security/docs/tree/main/", docItemComponent: "@theme/ApiItem", // Derived from docusaurus-theme-openapi }, theme: { @@ -70,7 +70,7 @@ const config: Config = { to: "/docs/category/reference", }, { - href: "https://github.com/ocurity/docs", + href: "https://github.com/smithy-security/docs", label: "GitHub", position: "right", }, @@ -113,7 +113,7 @@ const config: Config = { items: [ { label: "GitHub", - href: "https://github.com/ocurity/docs", + href: "https://github.com/smithy-security/docs", }, ], }, diff --git a/package.json b/package.json index a590456..fa61906 100644 --- a/package.json +++ b/package.json @@ -46,4 +46,4 @@ "engines": { "node": ">=18.0" } -} +} \ No newline at end of file diff --git a/src/css/custom.css b/src/css/custom.css index 261563d..19880fe 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -6,23 +6,31 @@ /* You can override the default Infima variables here. */ :root { - --ifm-color-primary: #fc5b00; + --ifm-background-color: #ffffff; + --ifm-background-surface-color: #f1ede4; + --ifm-code-font-size: 95%; + --ifm-color-primary: #f65f1e; --ifm-color-primary-dark: #e35200; --ifm-color-primary-darker: #d64d00; --ifm-color-primary-darkest: #b04000; --ifm-color-primary-light: #ff6a16; --ifm-color-primary-lighter: #ff7223; --ifm-color-primary-lightest: #ff8a49; - --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + --ifm-font-color-base: #2b2722; --ifm-footer-background-color: #2b2722; --ifm-footer-color: var(--ifm-footer-link-color); --ifm-footer-link-color: var(--ifm-color-secondary); --ifm-footer-title-color: var(--ifm-color-white); + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + --ifm-hover-overlay: #fbf7f1; } /* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme='dark'] { +html[data-theme='dark'] { + --ifm-background-color: #3a352b; + --ifm-background-surface-color: #3a352b; + --ifm-color-emphasis-200: #1f1c19; + --ifm-color-emphasis-300: #1f1c19; --ifm-color-primary: #fc5b00; --ifm-color-primary-dark: #e35200; --ifm-color-primary-darker: #d64d00; @@ -30,5 +38,143 @@ --ifm-color-primary-light: #ff6a16; --ifm-color-primary-lighter: #ff7223; --ifm-color-primary-lightest: #ff8a49; + --ifm-font-color-base: #fbf7f1; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); + --ifm-toc-border-color: #1f1c19; +} + +/* Global fonts */ +@font-face { + font-family: "Schibsted Grotesk"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/static/fonts/SchibstedGrotesk/SchibstedGrotesk-VariableFont_wght.ttf) + format("truetype"); +} +@font-face { + font-family: "Schibsted Grotesk"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(/static/fonts/SchibstedGrotesk/SchibstedGrotesk-VariableFont_wght.ttf) + format("truetype"); +} + +/* Header font */ +@font-face { + font-family: "MD Nichrome"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(/static/fonts/MDNichrome/MDNichrome-Bold.woff2) format("woff"); } + +/* Monospace font */ +@font-face { + font-family: "JetBrains Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/static/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2) format("woff"); +} + +/* Global Typography */ +html { + font-family: "Schibsted Grotesk", sans-serif; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.navbar__title, +.footer__title { + font-family: "MD Nichrome", sans-serif; +} + + +button, +.button, +pre, +.navbar__link, +.footer__item { + font-family: "JetBrains Mono", monospace; +} + +.footer__item, +.navbar__link { + font-size: 0.6rem; +} + +button, +.button, +.navbar__link { + text-transform: uppercase; +} + +.menu__link { + font-size: 0.8rem; +} + +/* header styles*/ +.navbar__brand { + display: flex; +} +.navbar__logo { + flex-shrink: 1; +} +.navbar__title { + color: var(--ifm-color-primary); + width: 50px; +} +.navbar__link { + display: flex; + height: 13px; + justify-content: center; + padding-bottom: 0; + padding-top: 0; +} + +/* footer styles*/ +.footer__link-item { + align-items: center; + display: flex; +} +.footer__copyright { + font-size: 0.5rem; + margin-top: 50px; +} + +/**card styles*/ +.card > h2 { + font-size: 1rem; + overflow: initial !important; + text-overflow: unset !important; + white-space: wrap !important; +} +.card-header { + align-items: center; + display: flex; + gap: 12px; +} +.card-icon { + max-height: 24px; + max-width: 24px; +} +.card-description { + &:hover { + text-decoration: none; + } +} + +/*Dark mode component adjustments*/ +html[data-theme='dark'] { + .card { + .black-img { + filter: invert(); + } + } +} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 846018c..e334ff0 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -7,84 +7,83 @@ import Heading from "@theme/Heading"; import styles from "./index.module.css"; function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); - return ( -
-
- - {siteConfig.title} - -

{siteConfig.tagline}

-
- - Quickstart - 5min ⏱️ - -
-
-
- ); + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+ + {siteConfig.title} + +

{siteConfig.tagline}

+
+ + Quickstart + +
+
+
+ ); } -function DocsGroup({ title, description, href }) { - return ( - - ); +function DocsGroup({title, description, href, icon}) { + return ( + + ); } export default function Home(): JSX.Element { - const { siteConfig } = useDocusaurusContext(); - return ( - - -
-
- - - - -
-
-
- ); + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+
+ + + + +
+
+
+ ); } diff --git a/src/theme/DocCard/index.tsx b/src/theme/DocCard/index.tsx new file mode 100644 index 0000000..0341882 --- /dev/null +++ b/src/theme/DocCard/index.tsx @@ -0,0 +1,131 @@ +import React, {type ReactNode} from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import { + findFirstSidebarItemLink, + useDocById, +} from '@docusaurus/theme-common/internal'; +import {usePluralForm} from '@docusaurus/theme-common'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import {translate} from '@docusaurus/Translate'; + +import type {Props} from '@theme/DocCard'; +import Heading from '@theme/Heading'; +import type { + PropSidebarItemCategory, + PropSidebarItemLink, +} from '@docusaurus/plugin-content-docs'; + +import styles from './styles.module.css'; + +function useCategoryItemsPlural() { + const {selectMessage} = usePluralForm(); + return (count: number) => + selectMessage( + count, + translate( + { + message: '1 item|{count} items', + id: 'theme.docs.DocCard.categoryDescription.plurals', + description: + 'The default description for a category card in the generated index about how many items this category includes', + }, + {count}, + ), + ); +} + +function CardContainer({ + href, + children, +}: { + href: string; + children: ReactNode; +}): JSX.Element { + return ( + + {children} + + ); +} + +function CardLayout({ + href, + icon, + title, + description, +}: { + href: string; + icon: ReactNode; + title: string; + description?: string; +}): JSX.Element { + // @ts-ignore + return ( + + + + {title} + + {description && ( +

+ {description} +

+ )} +
+ ); +} + +function CardCategory({ + item, +}: { + item: PropSidebarItemCategory; +}): JSX.Element | null { + const href = findFirstSidebarItemLink(item); + const categoryItemsPlural = useCategoryItemsPlural(); + + // Unexpected: categories that don't have a link have been filtered upfront + if (!href) { + return null; + } + + return ( + + ); +} +//https://github.com/facebook/docusaurus/discussions/10476#discussioncomment-10545432 +function CardLink({item}: {item: PropSidebarItemLink}): JSX.Element { + const doc = useDocById(item.docId ?? undefined); + // @ts-ignore + return ( + + ); +} + +export default function DocCard({item}: Props): JSX.Element { + switch (item.type) { + case 'link': + return ; + case 'category': + return ; + default: + throw new Error(`unknown item type ${JSON.stringify(item)}`); + } +} diff --git a/src/theme/DocCard/styles.module.css b/src/theme/DocCard/styles.module.css new file mode 100644 index 0000000..4f7ad27 --- /dev/null +++ b/src/theme/DocCard/styles.module.css @@ -0,0 +1,27 @@ +.cardContainer { + --ifm-link-color: var(--ifm-color-emphasis-800); + --ifm-link-hover-color: var(--ifm-color-emphasis-700); + --ifm-link-hover-decoration: none; + + box-shadow: 0 1.5px 3px 0 rgb(0 0 0 / 15%); + border: 1px solid var(--ifm-color-emphasis-200); + transition: all var(--ifm-transition-fast) ease; + transition-property: border, box-shadow; +} + +.cardContainer:hover { + border-color: var(--ifm-color-primary); + box-shadow: 0 3px 6px 0 rgb(0 0 0 / 20%); +} + +.cardContainer *:last-child { + margin-bottom: 0; +} + +.cardTitle { + font-size: 1.2rem; +} + +.cardDescription { + font-size: 0.8rem; +} diff --git a/static/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 b/static/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 new file mode 100644 index 0000000..40da427 Binary files /dev/null and b/static/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2 differ diff --git a/static/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 b/static/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 new file mode 100644 index 0000000..5ead7b0 Binary files /dev/null and b/static/fonts/JetBrainsMono/JetBrainsMono-SemiBold.woff2 differ diff --git a/static/fonts/MDNichrome/MDNichrome-Black.woff2 b/static/fonts/MDNichrome/MDNichrome-Black.woff2 new file mode 100644 index 0000000..da86eb1 Binary files /dev/null and b/static/fonts/MDNichrome/MDNichrome-Black.woff2 differ diff --git a/static/fonts/MDNichrome/MDNichrome-Bold.woff2 b/static/fonts/MDNichrome/MDNichrome-Bold.woff2 new file mode 100644 index 0000000..26adbd1 Binary files /dev/null and b/static/fonts/MDNichrome/MDNichrome-Bold.woff2 differ diff --git a/static/fonts/SchibstedGrotesk/SchibstedGrotesk-VariableFont_wght.ttf b/static/fonts/SchibstedGrotesk/SchibstedGrotesk-VariableFont_wght.ttf new file mode 100644 index 0000000..271a1c4 Binary files /dev/null and b/static/fonts/SchibstedGrotesk/SchibstedGrotesk-VariableFont_wght.ttf differ diff --git a/static/img/components/arangodb.svg b/static/img/components/arangodb.svg new file mode 100644 index 0000000..02d77d6 --- /dev/null +++ b/static/img/components/arangodb.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/components/aws-s3.svg b/static/img/components/aws-s3.svg new file mode 100644 index 0000000..f477e4a --- /dev/null +++ b/static/img/components/aws-s3.svg @@ -0,0 +1,202 @@ + + + + diff --git a/static/img/components/bigquery.svg b/static/img/components/bigquery.svg new file mode 100644 index 0000000..4ee5458 --- /dev/null +++ b/static/img/components/bigquery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/components/blackduck.svg b/static/img/components/blackduck.svg new file mode 100644 index 0000000..f82210e --- /dev/null +++ b/static/img/components/blackduck.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/img/components/brakeman.svg b/static/img/components/brakeman.svg new file mode 100644 index 0000000..fb6597d --- /dev/null +++ b/static/img/components/brakeman.svg @@ -0,0 +1,794 @@ + + + + diff --git a/static/img/components/cdxgen.svg b/static/img/components/cdxgen.svg new file mode 100644 index 0000000..efc4de6 --- /dev/null +++ b/static/img/components/cdxgen.svg @@ -0,0 +1,48 @@ + + + + diff --git a/static/img/components/checkmarx.svg b/static/img/components/checkmarx.svg new file mode 100644 index 0000000..7c5b4d9 --- /dev/null +++ b/static/img/components/checkmarx.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/img/components/checkov.svg b/static/img/components/checkov.svg new file mode 100644 index 0000000..939330c --- /dev/null +++ b/static/img/components/checkov.svg @@ -0,0 +1,378 @@ + + + + + + + + + + diff --git a/static/img/components/defectdojo.svg b/static/img/components/defectdojo.svg new file mode 100644 index 0000000..87195df --- /dev/null +++ b/static/img/components/defectdojo.svg @@ -0,0 +1,69 @@ + + + + + + + + + + diff --git a/static/img/components/dependency-check.svg b/static/img/components/dependency-check.svg new file mode 100644 index 0000000..9a2edce --- /dev/null +++ b/static/img/components/dependency-check.svg @@ -0,0 +1,157 @@ + + + + diff --git a/static/img/components/dependency-track.svg b/static/img/components/dependency-track.svg new file mode 100644 index 0000000..9516f6b --- /dev/null +++ b/static/img/components/dependency-track.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/img/components/dependency.svg b/static/img/components/dependency.svg new file mode 100644 index 0000000..72f1657 --- /dev/null +++ b/static/img/components/dependency.svg @@ -0,0 +1,76 @@ + + + + diff --git a/static/img/components/depsdev.svg b/static/img/components/depsdev.svg new file mode 100644 index 0000000..56c2829 --- /dev/null +++ b/static/img/components/depsdev.svg @@ -0,0 +1,164 @@ + + + + + + + + + + diff --git a/static/img/components/docker-trivy.svg b/static/img/components/docker-trivy.svg new file mode 100644 index 0000000..42c9555 --- /dev/null +++ b/static/img/components/docker-trivy.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/img/components/elasticsearch.svg b/static/img/components/elasticsearch.svg new file mode 100644 index 0000000..a9568e1 --- /dev/null +++ b/static/img/components/elasticsearch.svg @@ -0,0 +1,252 @@ + + + + diff --git a/static/img/components/filebeat.svg b/static/img/components/filebeat.svg new file mode 100644 index 0000000..b43e947 --- /dev/null +++ b/static/img/components/filebeat.svg @@ -0,0 +1,14 @@ + + + + icon-filebeat-32-color + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/static/img/components/git.svg b/static/img/components/git.svg new file mode 100644 index 0000000..3107455 --- /dev/null +++ b/static/img/components/git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/components/golang-gosec.png b/static/img/components/golang-gosec.png new file mode 100644 index 0000000..ff61162 Binary files /dev/null and b/static/img/components/golang-gosec.png differ diff --git a/static/img/components/java-findsecbugs.svg b/static/img/components/java-findsecbugs.svg new file mode 100644 index 0000000..68e9fa7 --- /dev/null +++ b/static/img/components/java-findsecbugs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/components/java-spotbugs.svg b/static/img/components/java-spotbugs.svg new file mode 100644 index 0000000..d30a176 --- /dev/null +++ b/static/img/components/java-spotbugs.svg @@ -0,0 +1,432 @@ + + + + + + + + + + diff --git a/static/img/components/jira.svg b/static/img/components/jira.svg new file mode 100644 index 0000000..f15524a --- /dev/null +++ b/static/img/components/jira.svg @@ -0,0 +1,70 @@ + + + + diff --git a/static/img/components/kics.svg b/static/img/components/kics.svg new file mode 100644 index 0000000..b3188f0 --- /dev/null +++ b/static/img/components/kics.svg @@ -0,0 +1,477 @@ + + + + diff --git a/static/img/components/mobsf.svg b/static/img/components/mobsf.svg new file mode 100644 index 0000000..8d9e51c --- /dev/null +++ b/static/img/components/mobsf.svg @@ -0,0 +1,588 @@ + + + + + + + + + + diff --git a/static/img/components/mongodb.svg b/static/img/components/mongodb.svg new file mode 100644 index 0000000..1e9d41a --- /dev/null +++ b/static/img/components/mongodb.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/components/nancy.svg b/static/img/components/nancy.svg new file mode 100644 index 0000000..a3db4a6 --- /dev/null +++ b/static/img/components/nancy.svg @@ -0,0 +1,1194 @@ + + + + + + + + + + diff --git a/static/img/components/ossf-scorecard.svg b/static/img/components/ossf-scorecard.svg new file mode 100644 index 0000000..38b125c --- /dev/null +++ b/static/img/components/ossf-scorecard.svg @@ -0,0 +1,2275 @@ + + + + + + + + + + diff --git a/static/img/components/pdf.svg b/static/img/components/pdf.svg new file mode 100644 index 0000000..2583483 --- /dev/null +++ b/static/img/components/pdf.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + diff --git a/static/img/components/python-bandit.png b/static/img/components/python-bandit.png new file mode 100644 index 0000000..b725b33 Binary files /dev/null and b/static/img/components/python-bandit.png differ diff --git a/static/img/components/python-pip-safety.svg b/static/img/components/python-pip-safety.svg new file mode 100644 index 0000000..5f2554b --- /dev/null +++ b/static/img/components/python-pip-safety.svg @@ -0,0 +1,783 @@ + + + + diff --git a/static/img/components/semgrep.svg b/static/img/components/semgrep.svg new file mode 100644 index 0000000..404f5d8 --- /dev/null +++ b/static/img/components/semgrep.svg @@ -0,0 +1,220 @@ + + + + diff --git a/static/img/components/slack.svg b/static/img/components/slack.svg new file mode 100644 index 0000000..21fd8e7 --- /dev/null +++ b/static/img/components/slack.svg @@ -0,0 +1,5016 @@ + + + + + + + + + + diff --git a/static/img/components/smithy.svg b/static/img/components/smithy.svg new file mode 100644 index 0000000..d291e05 --- /dev/null +++ b/static/img/components/smithy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/components/snyk.png b/static/img/components/snyk.png new file mode 100644 index 0000000..fe2f2b6 Binary files /dev/null and b/static/img/components/snyk.png differ diff --git a/static/img/components/stdout-json.svg b/static/img/components/stdout-json.svg new file mode 100644 index 0000000..2fd2eb7 --- /dev/null +++ b/static/img/components/stdout-json.svg @@ -0,0 +1,57 @@ + + + + + + + + + + diff --git a/static/img/components/terraform.svg b/static/img/components/terraform.svg new file mode 100644 index 0000000..81d902b --- /dev/null +++ b/static/img/components/terraform.svg @@ -0,0 +1,379 @@ + + + + diff --git a/static/img/components/testsslsh.svg b/static/img/components/testsslsh.svg new file mode 100644 index 0000000..11c405c --- /dev/null +++ b/static/img/components/testsslsh.svg @@ -0,0 +1,408 @@ + + + + + + + + + + diff --git a/static/img/components/threatsoft.svg b/static/img/components/threatsoft.svg new file mode 100644 index 0000000..b258579 --- /dev/null +++ b/static/img/components/threatsoft.svg @@ -0,0 +1,404 @@ + + + + diff --git a/static/img/components/trufflehog.svg b/static/img/components/trufflehog.svg new file mode 100644 index 0000000..7f488bf --- /dev/null +++ b/static/img/components/trufflehog.svg @@ -0,0 +1,798 @@ + + + + + + + + + + diff --git a/static/img/components/tseslint.svg b/static/img/components/tseslint.svg new file mode 100644 index 0000000..6ba9cf0 --- /dev/null +++ b/static/img/components/tseslint.svg @@ -0,0 +1,161 @@ + + + + + + + + + + diff --git a/static/img/components/wget.svg b/static/img/components/wget.svg new file mode 100644 index 0000000..243eefc --- /dev/null +++ b/static/img/components/wget.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/components/yarn-audit.png b/static/img/components/yarn-audit.png new file mode 100644 index 0000000..fee4af6 Binary files /dev/null and b/static/img/components/yarn-audit.png differ diff --git a/static/img/components/yarn-audit.svg b/static/img/components/yarn-audit.svg new file mode 100644 index 0000000..f8a28f8 --- /dev/null +++ b/static/img/components/yarn-audit.svg @@ -0,0 +1,3069 @@ + + + + diff --git a/static/img/components/zap.svg b/static/img/components/zap.svg new file mode 100644 index 0000000..8d3e01e --- /dev/null +++ b/static/img/components/zap.svg @@ -0,0 +1,1380 @@ + + + + + + + + + + diff --git a/static/img/icons/category.svg b/static/img/icons/category.svg new file mode 100644 index 0000000..d291e05 --- /dev/null +++ b/static/img/icons/category.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/icons/doc.svg b/static/img/icons/doc.svg new file mode 100644 index 0000000..d291e05 --- /dev/null +++ b/static/img/icons/doc.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/icons/explanation.png b/static/img/icons/explanation.png new file mode 100644 index 0000000..ca13d5a Binary files /dev/null and b/static/img/icons/explanation.png differ diff --git a/static/img/icons/how-to.png b/static/img/icons/how-to.png new file mode 100644 index 0000000..aea3920 Binary files /dev/null and b/static/img/icons/how-to.png differ diff --git a/static/img/icons/reference.png b/static/img/icons/reference.png new file mode 100644 index 0000000..23e7426 Binary files /dev/null and b/static/img/icons/reference.png differ diff --git a/static/img/icons/tutorials.png b/static/img/icons/tutorials.png new file mode 100644 index 0000000..da2f8eb Binary files /dev/null and b/static/img/icons/tutorials.png differ diff --git a/static/img/logo.svg b/static/img/logo.svg old mode 100755 new mode 100644 index 5636b61..af83b23 --- a/static/img/logo.svg +++ b/static/img/logo.svg @@ -1,53 +1,3 @@ - - - - - - - - - - - - - + + diff --git a/yarn.lock b/yarn.lock index 5d71611..6d10dd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10495,4 +10495,4 @@ yocto-queue@^1.0.0: zwitch@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== \ No newline at end of file