diff --git a/modules/any_proxy/any_proxy.go b/modules/any_proxy/any_proxy.go index 427c0499..a8977d27 100644 --- a/modules/any_proxy/any_proxy.go +++ b/modules/any_proxy/any_proxy.go @@ -80,7 +80,7 @@ func (mod *AnyProxy) Configure() error { var dstAddress string if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, iface = mod.StringParam("any.proxy.iface"); err != nil { return err } else if err, protocol = mod.StringParam("any.proxy.protocol"); err != nil { diff --git a/modules/api_rest/api_rest.go b/modules/api_rest/api_rest.go index 406cb7fa..6f7fc11d 100644 --- a/modules/api_rest/api_rest.go +++ b/modules/api_rest/api_rest.go @@ -126,7 +126,7 @@ func (mod *RestAPI) Configure() error { var port int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, ip = mod.StringParam("api.rest.address"); err != nil { return err } else if err, port = mod.IntParam("api.rest.port"); err != nil { diff --git a/modules/ble/ble_recon.go b/modules/ble/ble_recon.go index b44c7746..ef54a5be 100644 --- a/modules/ble/ble_recon.go +++ b/modules/ble/ble_recon.go @@ -140,7 +140,7 @@ func (w dummyWriter) Write(p []byte) (n int, err error) { func (mod *BLERecon) Configure() (err error) { if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if mod.gattDevice == nil { mod.Debug("initializing device ...") @@ -239,7 +239,7 @@ func (mod *BLERecon) enumAllTheThings(mac string) error { } mod.setCurrentDevice(dev) - if err := mod.Configure(); err != nil && err != session.ErrAlreadyStarted { + if err := mod.Configure(); err != nil && err != session.ErrAlreadyStarted(mod.Name()) { return err } diff --git a/modules/dhcp6_spoof/dhcp6_spoof.go b/modules/dhcp6_spoof/dhcp6_spoof.go index f7a7a325..2b0f729b 100644 --- a/modules/dhcp6_spoof/dhcp6_spoof.go +++ b/modules/dhcp6_spoof/dhcp6_spoof.go @@ -78,7 +78,7 @@ func (mod *DHCP6Spoofer) Configure() error { var err error if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } if mod.Handle, err = pcap.OpenLive(mod.Session.Interface.Name(), 65536, true, pcap.BlockForever); err != nil { diff --git a/modules/dns_spoof/dns_spoof.go b/modules/dns_spoof/dns_spoof.go index 6905ff75..2f6bf5f4 100644 --- a/modules/dns_spoof/dns_spoof.go +++ b/modules/dns_spoof/dns_spoof.go @@ -87,7 +87,7 @@ func (mod *DNSSpoofer) Configure() error { var address net.IP if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if mod.Handle, err = pcap.OpenLive(mod.Session.Interface.Name(), 65536, true, pcap.BlockForever); err != nil { return err } else if err = mod.Handle.SetBPFFilter("udp"); err != nil { diff --git a/modules/gps/gps.go b/modules/gps/gps.go index 65c92596..8e46e331 100644 --- a/modules/gps/gps.go +++ b/modules/gps/gps.go @@ -72,7 +72,7 @@ func (mod *GPS) Author() string { func (mod *GPS) Configure() (err error) { if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, mod.serialPort = mod.StringParam("gps.device"); err != nil { return err } else if err, mod.baudRate = mod.IntParam("gps.baudrate"); err != nil { diff --git a/modules/hid/hid.go b/modules/hid/hid.go index 134f8cb2..424267f2 100644 --- a/modules/hid/hid.go +++ b/modules/hid/hid.go @@ -163,7 +163,7 @@ func (mod *HIDRecon) Configure() error { var n int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } if err, mod.useLNA = mod.BoolParam("hid.lna"); err != nil { diff --git a/modules/http_proxy/http_proxy.go b/modules/http_proxy/http_proxy.go index 7519a411..9cec358d 100644 --- a/modules/http_proxy/http_proxy.go +++ b/modules/http_proxy/http_proxy.go @@ -89,7 +89,7 @@ func (mod *HttpProxy) Configure() error { var whitelist string if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, address = mod.StringParam("http.proxy.address"); err != nil { return err } else if err, proxyPort = mod.IntParam("http.proxy.port"); err != nil { diff --git a/modules/http_server/http_server.go b/modules/http_server/http_server.go index 4b434429..d5ad1845 100644 --- a/modules/http_server/http_server.go +++ b/modules/http_server/http_server.go @@ -71,7 +71,7 @@ func (mod *HttpServer) Configure() error { var port int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } if err, path = mod.StringParam("http.server.path"); err != nil { diff --git a/modules/https_proxy/https_proxy.go b/modules/https_proxy/https_proxy.go index 27a26cf1..10bfaca1 100644 --- a/modules/https_proxy/https_proxy.go +++ b/modules/https_proxy/https_proxy.go @@ -106,7 +106,7 @@ func (mod *HttpsProxy) Configure() error { var blacklist string if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, address = mod.StringParam("https.proxy.address"); err != nil { return err } else if err, proxyPort = mod.IntParam("https.proxy.port"); err != nil { diff --git a/modules/https_server/https_server.go b/modules/https_server/https_server.go index 60f998f1..6d4a4813 100644 --- a/modules/https_server/https_server.go +++ b/modules/https_server/https_server.go @@ -89,7 +89,7 @@ func (mod *HttpsServer) Configure() error { var keyFile string if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } if err, path = mod.StringParam("https.server.path"); err != nil { diff --git a/modules/mac_changer/mac_changer.go b/modules/mac_changer/mac_changer.go index b0a80acf..a991cfb1 100644 --- a/modules/mac_changer/mac_changer.go +++ b/modules/mac_changer/mac_changer.go @@ -103,7 +103,7 @@ func (mod *MacChanger) setMac(mac net.HardwareAddr) error { func (mod *MacChanger) Start() error { if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err := mod.Configure(); err != nil { return err } else if err := mod.setMac(mod.fakeMac); err != nil { diff --git a/modules/mysql_server/mysql_server.go b/modules/mysql_server/mysql_server.go index eb145c9b..3ddb1d97 100644 --- a/modules/mysql_server/mysql_server.go +++ b/modules/mysql_server/mysql_server.go @@ -79,7 +79,7 @@ func (mod *MySQLServer) Configure() error { var port int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, mod.infile = mod.StringParam("mysql.server.infile"); err != nil { return err } else if err, mod.outfile = mod.StringParam("mysql.server.outfile"); err != nil { diff --git a/modules/net_sniff/net_sniff.go b/modules/net_sniff/net_sniff.go index 97dc6082..d97780c2 100644 --- a/modules/net_sniff/net_sniff.go +++ b/modules/net_sniff/net_sniff.go @@ -146,7 +146,7 @@ func (mod *Sniffer) Configure() error { var err error if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, mod.Ctx = mod.GetContext(); err != nil { if mod.Ctx != nil { mod.Ctx.Close() diff --git a/modules/packet_proxy/packet_proxy_linux_amd64.go b/modules/packet_proxy/packet_proxy_linux_amd64.go index f934c13b..0f4f7243 100644 --- a/modules/packet_proxy/packet_proxy_linux_amd64.go +++ b/modules/packet_proxy/packet_proxy_linux_amd64.go @@ -190,7 +190,7 @@ func dummyCallback(payload *nfqueue.Payload) int { func (mod *PacketProxy) Start() error { if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err := mod.Configure(); err != nil { return err } diff --git a/modules/tcp_proxy/tcp_proxy.go b/modules/tcp_proxy/tcp_proxy.go index 1a13e3bb..23ac6041 100644 --- a/modules/tcp_proxy/tcp_proxy.go +++ b/modules/tcp_proxy/tcp_proxy.go @@ -95,7 +95,7 @@ func (mod *TcpProxy) Configure() error { var tunnelPort int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, address = mod.StringParam("tcp.address"); err != nil { return err } else if err, proxyAddress = mod.StringParam("tcp.proxy.address"); err != nil { diff --git a/modules/ticker/ticker.go b/modules/ticker/ticker.go index 5e62139c..3edaafc3 100644 --- a/modules/ticker/ticker.go +++ b/modules/ticker/ticker.go @@ -59,7 +59,7 @@ func (mod *Ticker) Configure() error { var period int if mod.Running() { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } else if err, commands = mod.StringParam("ticker.commands"); err != nil { return err } else if err, period = mod.IntParam("ticker.period"); err != nil { diff --git a/modules/wifi/wifi_ap.go b/modules/wifi/wifi_ap.go index fcc4c29a..7a5ed0b7 100644 --- a/modules/wifi/wifi_ap.go +++ b/modules/wifi/wifi_ap.go @@ -35,7 +35,7 @@ func (mod *WiFiModule) startAp() error { if !mod.Running() { return errNoRecon } else if mod.apRunning { - return session.ErrAlreadyStarted + return session.ErrAlreadyStarted(mod.Name()) } go func() { diff --git a/session/module.go b/session/module.go index dbdf6d1b..149552d1 100644 --- a/session/module.go +++ b/session/module.go @@ -230,9 +230,9 @@ func (m *SessionModule) Running() bool { func (m *SessionModule) SetRunning(running bool, cb func()) error { if running == m.Running() { if m.Started { - return ErrAlreadyStarted + return ErrAlreadyStarted(m.Name) } else { - return ErrAlreadyStopped + return ErrAlreadyStopped(m.Name) } } diff --git a/session/session.go b/session/session.go index ba49a03d..e4661086 100644 --- a/session/session.go +++ b/session/session.go @@ -35,14 +35,20 @@ const ( var ( I = (*Session)(nil) - ErrAlreadyStarted = errors.New("module is already running") - ErrAlreadyStopped = errors.New("module is not running") - ErrNotSupported = errors.New("this component is not supported on this OS") + ErrNotSupported = errors.New("this component is not supported on this OS") reCmdSpaceCleaner = regexp.MustCompile(`^([^\s]+)\s+(.+)$`) reEnvVarCapture = regexp.MustCompile(`{env\.([^}]+)}`) ) +func ErrAlreadyStarted(name string) error { + return fmt.Errorf("module %s is already running", name) +} + +func ErrAlreadyStopped(name string) error { + return fmt.Errorf("module %s is not running", name) +} + type UnknownCommandCallback func(cmd string) bool type GPS struct {