refactor: don't use global Config in private func (#1197)
* refactor: cve_client.go * refactor: don't use global Config in private func * remove import alias for config * refactor: dbclient * refactor: resultDir * refactor: resultsDir * refactor * refactor: gost * refactor: db client * refactor: cveDB * refactor: cvedb * refactor: exploitDB * refactor: remove detector/dbclient.go * refactor: writer * refactor: syslog writer * refactor: ips * refactor: ensureResultDir * refactor: proxy * fix(db): call CloseDB * add integration test * feat(report): sort array in json * sort func for json diff * add build-int to makefile * add int-rds-redis to makefile * fix: test case, makefile * fix makefile * show cve count after diff * make diff * diff -c * sort exploits in json for diff * sort metasploit, exploit
This commit is contained in:
@@ -357,17 +357,15 @@ func (l *base) detectDeepSecurity() (string, error) {
|
||||
return "", xerrors.Errorf("Failed to detect deepsecurity %s", l.ServerInfo.ServerName)
|
||||
}
|
||||
|
||||
func (l *base) detectIPS() {
|
||||
if !config.Conf.DetectIPS {
|
||||
return
|
||||
}
|
||||
const deepSecurity string = "deepsecurity"
|
||||
|
||||
func (l *base) detectIPS() {
|
||||
ips := map[string]string{}
|
||||
fingerprint, err := l.detectDeepSecurity()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ips[config.DeepSecurity] = fingerprint
|
||||
ips[deepSecurity] = fingerprint
|
||||
l.ServerInfo.IPSIdentifiers = ips
|
||||
}
|
||||
|
||||
|
||||
@@ -11,14 +11,14 @@ import (
|
||||
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
conf "github.com/future-architect/vuls/config"
|
||||
"github.com/future-architect/vuls/config"
|
||||
"github.com/future-architect/vuls/logging"
|
||||
homedir "github.com/mitchellh/go-homedir"
|
||||
)
|
||||
|
||||
type execResult struct {
|
||||
Servername string
|
||||
Container conf.Container
|
||||
Container config.Container
|
||||
Host string
|
||||
Port string
|
||||
Cmd string
|
||||
@@ -131,7 +131,7 @@ func parallelExec(fn func(osTypeInterface) error, timeoutSec ...int) {
|
||||
return
|
||||
}
|
||||
|
||||
func exec(c conf.ServerInfo, cmd string, sudo bool, log ...logging.Logger) (result execResult) {
|
||||
func exec(c config.ServerInfo, cmd string, sudo bool, log ...logging.Logger) (result execResult) {
|
||||
logger := getSSHLogger(log...)
|
||||
logger.Debugf("Executing... %s", strings.Replace(cmd, "\n", "", -1))
|
||||
|
||||
@@ -149,7 +149,7 @@ func isLocalExec(port, host string) bool {
|
||||
return port == "local" && (host == "127.0.0.1" || host == "localhost")
|
||||
}
|
||||
|
||||
func localExec(c conf.ServerInfo, cmdstr string, sudo bool) (result execResult) {
|
||||
func localExec(c config.ServerInfo, cmdstr string, sudo bool) (result execResult) {
|
||||
cmdstr = decorateCmd(c, cmdstr, sudo)
|
||||
var cmd *ex.Cmd
|
||||
switch c.Distro.Family {
|
||||
@@ -180,7 +180,7 @@ func localExec(c conf.ServerInfo, cmdstr string, sudo bool) (result execResult)
|
||||
return
|
||||
}
|
||||
|
||||
func sshExecExternal(c conf.ServerInfo, cmd string, sudo bool) (result execResult) {
|
||||
func sshExecExternal(c config.ServerInfo, cmd string, sudo bool) (result execResult) {
|
||||
sshBinaryPath, err := ex.LookPath("ssh")
|
||||
if err != nil {
|
||||
return execResult{Error: err}
|
||||
@@ -211,7 +211,7 @@ func sshExecExternal(c conf.ServerInfo, cmd string, sudo bool) (result execResul
|
||||
)
|
||||
}
|
||||
|
||||
if conf.Conf.Vvv {
|
||||
if config.Conf.Vvv {
|
||||
defaultSSHArgs = append(defaultSSHArgs, "-vvv")
|
||||
}
|
||||
|
||||
@@ -276,7 +276,7 @@ func dockerShell(family string) string {
|
||||
}
|
||||
}
|
||||
|
||||
func decorateCmd(c conf.ServerInfo, cmd string, sudo bool) string {
|
||||
func decorateCmd(c config.ServerInfo, cmd string, sudo bool) string {
|
||||
if sudo && c.User != "root" && !c.IsContainer() {
|
||||
cmd = fmt.Sprintf("sudo -S %s", cmd)
|
||||
}
|
||||
|
||||
@@ -66,12 +66,14 @@ type osTypeInterface interface {
|
||||
|
||||
// Scanner has functions for scan
|
||||
type Scanner struct {
|
||||
ResultsDir string
|
||||
TimeoutSec int
|
||||
ScanTimeoutSec int
|
||||
CacheDBPath string
|
||||
Debug bool
|
||||
LogDir string
|
||||
Quiet bool
|
||||
DetectIPS bool
|
||||
|
||||
Targets map[string]config.ServerInfo
|
||||
}
|
||||
@@ -91,8 +93,10 @@ func (s Scanner) Scan() error {
|
||||
logging.Log.Info("Detecting Platforms... ")
|
||||
s.detectPlatform()
|
||||
|
||||
logging.Log.Info("Detecting IPS identifiers... ")
|
||||
s.detectIPS()
|
||||
if s.DetectIPS {
|
||||
logging.Log.Info("Detecting IPS identifiers... ")
|
||||
s.detectIPS()
|
||||
}
|
||||
|
||||
if err := s.execScan(); err != nil {
|
||||
return xerrors.Errorf("Failed to scan. err: %w", err)
|
||||
@@ -593,7 +597,7 @@ func (s Scanner) execScan() error {
|
||||
}()
|
||||
|
||||
scannedAt := time.Now()
|
||||
dir, err := EnsureResultDir(scannedAt)
|
||||
dir, err := EnsureResultDir(s.ResultsDir, scannedAt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/future-architect/vuls/config"
|
||||
"github.com/future-architect/vuls/constant"
|
||||
"github.com/future-architect/vuls/logging"
|
||||
"github.com/future-architect/vuls/models"
|
||||
@@ -42,11 +41,9 @@ func isRunningKernel(pack models.Package, family string, kernel models.Kernel) (
|
||||
}
|
||||
|
||||
// EnsureResultDir ensures the directory for scan results
|
||||
func EnsureResultDir(scannedAt time.Time) (currentDir string, err error) {
|
||||
func EnsureResultDir(resultsDir string, scannedAt time.Time) (currentDir string, err error) {
|
||||
jsonDirName := scannedAt.Format(time.RFC3339)
|
||||
|
||||
resultsDir := config.Conf.ResultsDir
|
||||
if len(resultsDir) == 0 {
|
||||
if resultsDir == "" {
|
||||
wd, _ := os.Getwd()
|
||||
resultsDir = filepath.Join(wd, "results")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user