From a33cff8f137c50529fa1df423d4f6d324261c51a Mon Sep 17 00:00:00 2001 From: Kota Kanbe Date: Sat, 26 Dec 2020 08:24:17 +0900 Subject: [PATCH] fix(reprot): use SQLite3 in current dir if not specified (#1103) --- config/config.go | 108 +++++++++++-------------------------------- config/tomlloader.go | 6 +++ report/http.go | 2 +- subcmds/report.go | 2 +- 4 files changed, 34 insertions(+), 84 deletions(-) diff --git a/config/config.go b/config/config.go index ba92aa75..c46508fe 100644 --- a/config/config.go +++ b/config/config.go @@ -760,16 +760,15 @@ func (c *HTTPConf) Validate() (errs []error) { const httpKey = "VULS_HTTP_URL" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (c *HTTPConf) Overwrite(cmdOpt HTTPConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (c *HTTPConf) Init(toml HTTPConf) { if os.Getenv(httpKey) != "" { c.URL = os.Getenv(httpKey) } - if cmdOpt.URL != "" { - c.URL = cmdOpt.URL + if toml.URL != "" { + c.URL = toml.URL } } @@ -799,11 +798,10 @@ const cveDBType = "CVEDB_TYPE" const cveDBURL = "CVEDB_URL" const cveDBPATH = "CVEDB_SQLITE3_PATH" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (cnf *GoCveDictConf) Overwrite(cmdOpt GoCveDictConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (cnf *GoCveDictConf) Init() { if os.Getenv(cveDBType) != "" { cnf.Type = os.Getenv(cveDBType) } @@ -813,16 +811,6 @@ func (cnf *GoCveDictConf) Overwrite(cmdOpt GoCveDictConf) { if os.Getenv(cveDBPATH) != "" { cnf.SQLite3Path = os.Getenv(cveDBPATH) } - - if cmdOpt.Type != "" { - cnf.Type = cmdOpt.Type - } - if cmdOpt.URL != "" { - cnf.URL = cmdOpt.URL - } - if cmdOpt.SQLite3Path != "" { - cnf.SQLite3Path = cmdOpt.SQLite3Path - } cnf.setDefault() } @@ -858,11 +846,10 @@ const govalType = "OVALDB_TYPE" const govalURL = "OVALDB_URL" const govalPATH = "OVALDB_SQLITE3_PATH" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (cnf *GovalDictConf) Overwrite(cmdOpt GovalDictConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (cnf *GovalDictConf) Init() { if os.Getenv(govalType) != "" { cnf.Type = os.Getenv(govalType) } @@ -872,16 +859,6 @@ func (cnf *GovalDictConf) Overwrite(cmdOpt GovalDictConf) { if os.Getenv(govalPATH) != "" { cnf.SQLite3Path = os.Getenv(govalPATH) } - - if cmdOpt.Type != "" { - cnf.Type = cmdOpt.Type - } - if cmdOpt.URL != "" { - cnf.URL = cmdOpt.URL - } - if cmdOpt.SQLite3Path != "" { - cnf.SQLite3Path = cmdOpt.SQLite3Path - } cnf.setDefault() } @@ -916,11 +893,10 @@ const gostDBType = "GOSTDB_TYPE" const gostDBURL = "GOSTDB_URL" const gostDBPATH = "GOSTDB_SQLITE3_PATH" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (cnf *GostConf) Overwrite(cmdOpt GostConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (cnf *GostConf) Init() { if os.Getenv(gostDBType) != "" { cnf.Type = os.Getenv(gostDBType) } @@ -930,16 +906,6 @@ func (cnf *GostConf) Overwrite(cmdOpt GostConf) { if os.Getenv(gostDBPATH) != "" { cnf.SQLite3Path = os.Getenv(gostDBPATH) } - - if cmdOpt.Type != "" { - cnf.Type = cmdOpt.Type - } - if cmdOpt.URL != "" { - cnf.URL = cmdOpt.URL - } - if cmdOpt.SQLite3Path != "" { - cnf.SQLite3Path = cmdOpt.SQLite3Path - } cnf.setDefault() } @@ -974,11 +940,10 @@ const exploitDBType = "EXPLOITDB_TYPE" const exploitDBURL = "EXPLOITDB_URL" const exploitDBPATH = "EXPLOITDB_SQLITE3_PATH" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (cnf *ExploitConf) Overwrite(cmdOpt ExploitConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (cnf *ExploitConf) Init() { if os.Getenv(exploitDBType) != "" { cnf.Type = os.Getenv(exploitDBType) } @@ -988,16 +953,6 @@ func (cnf *ExploitConf) Overwrite(cmdOpt ExploitConf) { if os.Getenv(exploitDBPATH) != "" { cnf.SQLite3Path = os.Getenv(exploitDBPATH) } - - if cmdOpt.Type != "" { - cnf.Type = cmdOpt.Type - } - if cmdOpt.URL != "" { - cnf.URL = cmdOpt.URL - } - if cmdOpt.SQLite3Path != "" { - cnf.SQLite3Path = cmdOpt.SQLite3Path - } cnf.setDefault() } @@ -1032,11 +987,10 @@ const metasploitDBType = "METASPLOITDB_TYPE" const metasploitDBURL = "METASPLOITDB_URL" const metasploitDBPATH = "METASPLOITDB_SQLITE3_PATH" -// Overwrite set options with the following priority. -// 1. Command line option -// 2. Environment variable -// 3. config.toml -func (cnf *MetasploitConf) Overwrite(cmdOpt MetasploitConf) { +// Init set options with the following priority. +// 1. Environment variable +// 2. config.toml +func (cnf *MetasploitConf) Init() { if os.Getenv(metasploitDBType) != "" { cnf.Type = os.Getenv(metasploitDBType) } @@ -1046,16 +1000,6 @@ func (cnf *MetasploitConf) Overwrite(cmdOpt MetasploitConf) { if os.Getenv(metasploitDBPATH) != "" { cnf.SQLite3Path = os.Getenv(metasploitDBPATH) } - - if cmdOpt.Type != "" { - cnf.Type = cmdOpt.Type - } - if cmdOpt.URL != "" { - cnf.URL = cmdOpt.URL - } - if cmdOpt.SQLite3Path != "" { - cnf.SQLite3Path = cmdOpt.SQLite3Path - } cnf.setDefault() } diff --git a/config/tomlloader.go b/config/tomlloader.go index 3fb4c633..d760be2b 100644 --- a/config/tomlloader.go +++ b/config/tomlloader.go @@ -275,6 +275,12 @@ func (c TOMLLoader) Load(pathToToml, keyPass string) error { servers[serverName] = s } Conf.Servers = servers + + Conf.CveDict.Init() + Conf.OvalDict.Init() + Conf.Gost.Init() + Conf.Exploit.Init() + Conf.Metasploit.Init() return nil } diff --git a/report/http.go b/report/http.go index cda8315e..3a8774ca 100644 --- a/report/http.go +++ b/report/http.go @@ -37,7 +37,7 @@ type HTTPResponseWriter struct { func (w HTTPResponseWriter) Write(rs ...models.ScanResult) (err error) { res, err := json.Marshal(rs) if err != nil { - return xerrors.Errorf("Failed to marshal scah results: %w", err) + return xerrors.Errorf("Failed to marshal scan results: %w", err) } w.Writer.Header().Set("Content-Type", "application/json") _, err = w.Writer.Write(res) diff --git a/subcmds/report.go b/subcmds/report.go index f036d29d..793bfd0b 100644 --- a/subcmds/report.go +++ b/subcmds/report.go @@ -163,7 +163,7 @@ func (p *ReportCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{} util.Log.Errorf("Error loading %s, %+v", p.configPath, err) return subcommands.ExitUsageError } - c.Conf.HTTP.Overwrite(p.httpConf) + c.Conf.HTTP.Init(p.httpConf) var dir string var err error