Add ModuleSet object (#247)
Eventually this can be used to replace AddCommand, allowing the use of a non-global config object. https://github.com/zmap/zgrab2/pull/247
This commit is contained in:
parent
f5b169cbd4
commit
320f7aa144
|
@ -0,0 +1,65 @@
|
||||||
|
package bin
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/zmap/zgrab2"
|
||||||
|
"github.com/zmap/zgrab2/modules"
|
||||||
|
"github.com/zmap/zgrab2/modules/bacnet"
|
||||||
|
"github.com/zmap/zgrab2/modules/banner"
|
||||||
|
"github.com/zmap/zgrab2/modules/dnp3"
|
||||||
|
"github.com/zmap/zgrab2/modules/fox"
|
||||||
|
"github.com/zmap/zgrab2/modules/ftp"
|
||||||
|
"github.com/zmap/zgrab2/modules/http"
|
||||||
|
"github.com/zmap/zgrab2/modules/imap"
|
||||||
|
"github.com/zmap/zgrab2/modules/ipp"
|
||||||
|
"github.com/zmap/zgrab2/modules/modbus"
|
||||||
|
"github.com/zmap/zgrab2/modules/mongodb"
|
||||||
|
"github.com/zmap/zgrab2/modules/mssql"
|
||||||
|
"github.com/zmap/zgrab2/modules/mysql"
|
||||||
|
"github.com/zmap/zgrab2/modules/ntp"
|
||||||
|
"github.com/zmap/zgrab2/modules/oracle"
|
||||||
|
"github.com/zmap/zgrab2/modules/pop3"
|
||||||
|
"github.com/zmap/zgrab2/modules/postgres"
|
||||||
|
"github.com/zmap/zgrab2/modules/redis"
|
||||||
|
"github.com/zmap/zgrab2/modules/siemens"
|
||||||
|
"github.com/zmap/zgrab2/modules/smb"
|
||||||
|
"github.com/zmap/zgrab2/modules/smtp"
|
||||||
|
"github.com/zmap/zgrab2/modules/telnet"
|
||||||
|
)
|
||||||
|
|
||||||
|
var defaultModules zgrab2.ModuleSet
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
defaultModules = map[string]zgrab2.ScanModule{
|
||||||
|
"bacnet": &bacnet.Module{},
|
||||||
|
"banner": &banner.Module{},
|
||||||
|
"dnp3": &dnp3.Module{},
|
||||||
|
"fox": &fox.Module{},
|
||||||
|
"ftp": &ftp.Module{},
|
||||||
|
"http": &http.Module{},
|
||||||
|
"imap": &imap.Module{},
|
||||||
|
"ipp": &ipp.Module{},
|
||||||
|
"modbus": &modbus.Module{},
|
||||||
|
"mongodb": &mongodb.Module{},
|
||||||
|
"mssql": &mssql.Module{},
|
||||||
|
"mysql": &mysql.Module{},
|
||||||
|
"ntp": &ntp.Module{},
|
||||||
|
"oracle": &oracle.Module{},
|
||||||
|
"pop3": &pop3.Module{},
|
||||||
|
"postgres": &postgres.Module{},
|
||||||
|
"redis": &redis.Module{},
|
||||||
|
"siemens": &siemens.Module{},
|
||||||
|
"smb": &smb.Module{},
|
||||||
|
"smtp": &smtp.Module{},
|
||||||
|
"ssh": &modules.SSHModule{},
|
||||||
|
"telnet": &telnet.Module{},
|
||||||
|
"tls": &modules.TLSModule{},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewModuleSetWithDefaults returns a newly allocated ModuleSet containing all
|
||||||
|
// ScanModules implemented by the ZGrab2 framework.
|
||||||
|
func NewModuleSetWithDefaults() zgrab2.ModuleSet {
|
||||||
|
out := zgrab2.ModuleSet{}
|
||||||
|
defaultModules.CopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
// Package bin contains functions useful for creating a binary version of
|
||||||
|
// ZGrab2.
|
||||||
|
//
|
||||||
|
// This package can import "github.com/zmap/zgrab2", and should be imported by
|
||||||
|
// targets within "github.com/zmap/zgrab2/cmd"
|
||||||
|
package bin
|
|
@ -0,0 +1,30 @@
|
||||||
|
package zgrab2
|
||||||
|
|
||||||
|
// ModuleSet is a container holding named scan modules. It is a wrapper around a
|
||||||
|
// map.
|
||||||
|
type ModuleSet map[string]ScanModule
|
||||||
|
|
||||||
|
// AddModule adds m to the ModuleSet, accessible via the given name. If the name
|
||||||
|
// is already in the ModuleSet, it is overwritten.
|
||||||
|
func (s ModuleSet) AddModule(name string, m ScanModule) {
|
||||||
|
s[name] = m
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveModule removes the module at the specified name. If the name is not in
|
||||||
|
// the module set, nothing happens.
|
||||||
|
func (s ModuleSet) RemoveModule(name string) {
|
||||||
|
delete(s, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CopyInto copies the modules in s to destination. The sets will be unique, but
|
||||||
|
// the underlying ScanModule instances will be the same.
|
||||||
|
func (s ModuleSet) CopyInto(destination ModuleSet) {
|
||||||
|
for name, m := range s {
|
||||||
|
destination[name] = m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewModuleSet returns an empty ModuleSet.
|
||||||
|
func NewModuleSet() ModuleSet {
|
||||||
|
return make(ModuleSet)
|
||||||
|
}
|
Loading…
Reference in New Issue