Skip to content
Snippets Groups Projects
Commit ce6e4126 authored by Fabien Catteau's avatar Fabien Catteau :two:
Browse files

Re-organize the vrange package

parent 7d5446dc
No related branches found
No related tags found
1 merge request!25Connect to gemnasium-db repo
......@@ -2,6 +2,7 @@ FROM node:11-alpine
RUN apk add --no-cache git ruby ruby-json
COPY analyzer /
COPY vrange /vrange
ENV VRANGE_DIR="/vrange"
RUN git clone https://gitlab.com/gitlab-org/security-products/gemnasium-db.git && \
yarn --cwd /vrange/npm/yarn.lock
ENTRYPOINT []
......
......@@ -11,6 +11,7 @@ import (
"os/exec"
"path/filepath"
"runtime"
"strings"
"time"
"github.com/urfave/cli"
......@@ -38,7 +39,12 @@ const (
flagArtifactDir = "artifact-dir"
flagRemediate = "remediate"
flagRemediateTimeout = "remediate-timeout"
flagVrangeBinDir = "vrange-bin-dir"
flagVrangeDir = "vrange-dir"
flagVrangeGemCmd = "vrange-gem-cmd"
flagVrangeMavenCmd = "vrange-maven-cmd"
flagVrangeNpmCmd = "vrange-npm-cmd"
flagVrangePythonCmd = "vrange-python-cmd"
defaultTimeoutRemediate = 5 * time.Minute
)
......@@ -78,13 +84,40 @@ func runCommand() cli.Command {
Usage: "Time limit for vulnerabilities auto-remediation",
Value: defaultTimeoutRemediate,
},
// vrange CLIs
cli.StringFlag{
Name: flagVrangeDir,
Usage: "Path of the vrange directory",
EnvVar: "VRANGE_DIR",
Value: "vrange",
},
cli.StringFlag{
Name: flagVrangeGemCmd,
Usage: "vrange command for Rubygem",
EnvVar: "VRANGE_GEM_CMD",
Value: "gem/vrange.rb",
},
cli.StringFlag{
Name: flagVrangeBinDir,
Usage: "vrange/bin directory",
EnvVar: "VRANGE_BIN_DIR",
Value: "./vrange/bin",
Name: flagVrangeMavenCmd,
Usage: "vrange command for Maven",
EnvVar: "VRANGE_MAVEN_CMD",
Value: "semver/vrange-" + runtime.GOOS + " maven",
},
cli.StringFlag{
Name: flagVrangeNpmCmd,
Usage: "vrange command for npm",
EnvVar: "VRANGE_NPM_CMD",
Value: "semver/vrange-" + runtime.GOOS + " npm",
},
cli.StringFlag{
Name: flagVrangePythonCmd,
Usage: "vrange command for Python",
EnvVar: "VRANGE_PYTHON_CMD",
Value: "semver/vrange-" + runtime.GOOS + " python",
},
}
flags = append(flags, search.NewFlags()...)
flags = append(flags, scanner.Flags()...)
flags = append(flags, pathfilter.MakeFlags("DS_")...)
......@@ -102,7 +135,7 @@ func runCommand() cli.Command {
}
// register version range resolvers
if err := registerResolvers(c.String(flagVrangeBinDir)); err != nil {
if err := registerResolvers(c); err != nil {
return err
}
......@@ -170,12 +203,18 @@ func runCommand() cli.Command {
}
}
func registerResolvers(binDir string) error {
if err := vrange.RegisterCmd("gem", filepath.Join(binDir, "vrange.rb")); err != nil {
return err
func registerResolvers(c *cli.Context) error {
syntaxToFlag := map[string]string{
"gem": flagVrangeGemCmd,
"maven": flagVrangeMavenCmd,
"npm": flagVrangeNpmCmd,
"python": flagVrangePythonCmd,
}
for _, syntax := range []string{"npm", "maven", "python"} {
if err := vrange.RegisterCmd(syntax, filepath.Join(binDir, "vrange-"+runtime.GOOS), syntax); err != nil {
for syntax, flag := range syntaxToFlag {
cmd := strings.SplitN(c.String(flag), " ", 2)
path := filepath.Join(c.String(flagVrangeDir), cmd[0])
args := cmd[1:]
if err := vrange.RegisterCmd(syntax, path, args...); err != nil {
return err
}
}
......
......@@ -21,7 +21,7 @@ func TestScanner_ScanDir(t *testing.T) {
// register version range resolvers
for _, syntax := range []string{"npm", "gem"} {
if err := vrange.RegisterCmd(syntax, "../vrange/bin/vrange-"+runtime.GOOS, "npm"); err != nil {
if err := vrange.RegisterCmd(syntax, "../vrange/semver/vrange-"+runtime.GOOS, "npm"); err != nil {
t.Fatal(err)
}
}
......
File moved
File moved
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment