mirror of
https://github.com/bettercap/bettercap
synced 2025-08-21 14:03:17 -07:00
more lint driven refactoring
This commit is contained in:
parent
7919cda5ec
commit
0de6f3a76e
57 changed files with 168 additions and 241 deletions
|
@ -2,7 +2,7 @@ package modules
|
|||
|
||||
import (
|
||||
"github.com/bettercap/gatt"
|
||||
"github.com/bettercap/gatt/linux/cmd"
|
||||
// "github.com/bettercap/gatt/linux/cmd"
|
||||
)
|
||||
|
||||
var defaultBLEClientOptions = []gatt.Option{
|
||||
|
@ -10,6 +10,8 @@ var defaultBLEClientOptions = []gatt.Option{
|
|||
gatt.LnxDeviceID(-1, true),
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
var defaultBLEServerOptions = []gatt.Option{
|
||||
gatt.LnxMaxConnections(255),
|
||||
gatt.LnxDeviceID(-1, true),
|
||||
|
@ -19,3 +21,5 @@ var defaultBLEServerOptions = []gatt.Option{
|
|||
AdvertisingChannelMap: 0x7,
|
||||
}),
|
||||
}
|
||||
|
||||
*/
|
||||
|
|
|
@ -157,7 +157,7 @@ func (s *EventsStream) Start() error {
|
|||
s.waitChan <- &e
|
||||
}
|
||||
|
||||
if s.ignoreList.Ignored(e) == false {
|
||||
if !s.ignoreList.Ignored(e) {
|
||||
s.View(e, true)
|
||||
} else {
|
||||
log.Debug("Skipping ignored event %v", e)
|
||||
|
|
|
@ -72,7 +72,7 @@ func (p *HttpProxy) Configure() error {
|
|||
var scriptPath string
|
||||
var stripSSL bool
|
||||
|
||||
if p.Running() == true {
|
||||
if p.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err, address = p.StringParam("http.proxy.address"); err != nil {
|
||||
return err
|
||||
|
|
|
@ -69,8 +69,8 @@ func NewHTTPProxy(s *session.Session) *HTTPProxy {
|
|||
p.Proxy.Logger.SetOutput(ioutil.Discard)
|
||||
|
||||
p.Proxy.NonproxyHandler = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
|
||||
if p.doProxy(req) == true {
|
||||
if p.isTLS == false {
|
||||
if p.doProxy(req) {
|
||||
if !p.isTLS {
|
||||
req.URL.Scheme = "http"
|
||||
}
|
||||
req.URL.Host = req.Host
|
||||
|
@ -127,7 +127,7 @@ func (p *HTTPProxy) Configure(address string, proxyPort int, httpPort int, scrip
|
|||
WriteTimeout: httpWriteTimeout,
|
||||
}
|
||||
|
||||
if p.sess.Firewall.IsForwardingEnabled() == false {
|
||||
if !p.sess.Firewall.IsForwardingEnabled() {
|
||||
log.Info("Enabling forwarding.")
|
||||
p.sess.Firewall.EnableForwarding(true)
|
||||
}
|
||||
|
@ -303,13 +303,13 @@ func (p *HTTPProxy) Start() {
|
|||
var err error
|
||||
|
||||
strip := core.Yellow("enabled")
|
||||
if p.stripper.Enabled() == false {
|
||||
if !p.stripper.Enabled() {
|
||||
strip = core.Dim("disabled")
|
||||
}
|
||||
|
||||
log.Info("%s started on %s (sslstrip %s)", core.Green(p.Name), p.Server.Addr, strip)
|
||||
|
||||
if p.isTLS == true {
|
||||
if p.isTLS {
|
||||
err = p.httpsWorker()
|
||||
} else {
|
||||
err = p.httpWorker()
|
||||
|
@ -332,7 +332,7 @@ func (p *HTTPProxy) Stop() error {
|
|||
|
||||
p.sess.UnkCmdCallback = nil
|
||||
|
||||
if p.isTLS == true {
|
||||
if p.isTLS {
|
||||
p.isRunning = false
|
||||
p.sniListener.Close()
|
||||
return nil
|
||||
|
|
|
@ -54,7 +54,7 @@ func (t *CookieTracker) IsClean(req *http.Request) bool {
|
|||
defer t.RUnlock()
|
||||
|
||||
// was it already processed?
|
||||
if _, found := t.set[t.keyOf(req)]; found == true {
|
||||
if _, found := t.set[t.keyOf(req)]; found {
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ type HostTracker struct {
|
|||
|
||||
func NewHostTracker() *HostTracker {
|
||||
return &HostTracker{
|
||||
hosts: make(map[string]*Host, 0),
|
||||
hosts: make(map[string]*Host),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ func (t *HostTracker) Track(host, stripped string) {
|
|||
func (t *HostTracker) Unstrip(stripped string) *Host {
|
||||
t.RLock()
|
||||
defer t.RUnlock()
|
||||
if host, found := t.hosts[stripped]; found == true {
|
||||
if host, found := t.hosts[stripped]; found {
|
||||
return host
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -62,7 +62,7 @@ func (s *SSLStripper) dnsReply(pkt gopacket.Packet, peth *layers.Ethernet, pudp
|
|||
redir := fmt.Sprintf("(->%s)", address)
|
||||
who := target.String()
|
||||
|
||||
if t, found := s.session.Lan.Get(target.String()); found == true {
|
||||
if t, found := s.session.Lan.Get(target.String()); found {
|
||||
who = t.String()
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ func (s *SSLStripper) onPacket(pkt gopacket.Packet) {
|
|||
func (s *SSLStripper) Enable(enabled bool) {
|
||||
s.enabled = enabled
|
||||
|
||||
if enabled == true && s.handle == nil {
|
||||
if enabled && s.handle == nil {
|
||||
var err error
|
||||
|
||||
if s.handle, err = pcap.OpenLive(s.session.Interface.Name(), 65536, true, pcap.BlockForever); err != nil {
|
||||
|
@ -181,7 +181,7 @@ func (s *SSLStripper) Enable(enabled bool) {
|
|||
src := gopacket.NewPacketSource(s.handle, s.handle.LinkType())
|
||||
s.pktSourceChan = src.Packets()
|
||||
for packet := range s.pktSourceChan {
|
||||
if s.enabled == false {
|
||||
if !s.enabled {
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -249,7 +249,7 @@ func (s *SSLStripper) processURL(url string) string {
|
|||
}
|
||||
}
|
||||
// fallback
|
||||
if found == false {
|
||||
if !found {
|
||||
url = strings.Replace(url, "://", "://wwww.", 1)
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ func (s *SSLStripper) processURL(url string) string {
|
|||
// - handling stripped domains
|
||||
// - making unknown session cookies expire
|
||||
func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redir *http.Response) {
|
||||
if s.enabled == false {
|
||||
if !s.enabled {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -284,7 +284,7 @@ func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redi
|
|||
req.Header.Set("Host", original.Hostname)
|
||||
}
|
||||
|
||||
if s.cookies.IsClean(req) == false {
|
||||
if !s.cookies.IsClean(req) {
|
||||
// check if we need to redirect the user in order
|
||||
// to make unknown session cookies expire
|
||||
log.Info("[%s] Sending expired cookies for %s to %s", core.Green("sslstrip"), core.Yellow(req.Host), req.RemoteAddr)
|
||||
|
@ -297,7 +297,7 @@ func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redi
|
|||
|
||||
func (s *SSLStripper) isMaxRedirs(hostname string) bool {
|
||||
// did we already track redirections for this host?
|
||||
if nredirs, found := s.redirs[hostname]; found == true {
|
||||
if nredirs, found := s.redirs[hostname]; found {
|
||||
// reached the threshold?
|
||||
if nredirs >= maxRedirs {
|
||||
log.Warning("[%s] Hit max redirections for %s, serving HTTPS.", core.Green("sslstrip"), hostname)
|
||||
|
@ -312,12 +312,11 @@ func (s *SSLStripper) isMaxRedirs(hostname string) bool {
|
|||
// start tracking redirections
|
||||
s.redirs[hostname] = 1
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
|
||||
if s.enabled == false {
|
||||
if !s.enabled {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -355,7 +354,7 @@ func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
|
|||
|
||||
// if we have a text or html content type, fetch the body
|
||||
// and perform sslstripping
|
||||
if s.isContentStrippable(res) == true {
|
||||
if s.isContentStrippable(res) {
|
||||
raw, err := ioutil.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
log.Error("Could not read response body: %s", err)
|
||||
|
@ -363,12 +362,12 @@ func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
|
|||
}
|
||||
|
||||
body := string(raw)
|
||||
urls := make(map[string]string, 0)
|
||||
urls := make(map[string]string)
|
||||
matches := httpsLinksParser.FindAllString(body, -1)
|
||||
for _, u := range matches {
|
||||
// make sure we only strip stuff we're able to
|
||||
// resolve and process
|
||||
if strings.ContainsRune(u, '.') == true {
|
||||
if strings.ContainsRune(u, '.') {
|
||||
urls[u] = s.processURL(u)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ func getCachedCert(domain string, port int) *tls.Certificate {
|
|||
certLock.Lock()
|
||||
defer certLock.Unlock()
|
||||
|
||||
if cert, found := certCache[key]; found == true {
|
||||
if cert, found := certCache[key]; found {
|
||||
return cert
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -77,15 +77,11 @@ func (j *JSRequest) UpdateHash() {
|
|||
|
||||
func (j *JSRequest) WasModified() bool {
|
||||
// body was read
|
||||
if j.bodyRead == true {
|
||||
if j.bodyRead {
|
||||
return true
|
||||
}
|
||||
// check if any of the fields has been changed
|
||||
newHash := j.NewHash()
|
||||
if newHash != j.refHash {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return j.NewHash() != j.refHash
|
||||
}
|
||||
|
||||
func (j *JSRequest) GetHeader(name, deflt string) string {
|
||||
|
@ -137,7 +133,7 @@ func (j *JSRequest) ParseForm() map[string]string {
|
|||
j.Body = j.ReadBody()
|
||||
}
|
||||
|
||||
form := make(map[string]string, 0)
|
||||
form := make(map[string]string)
|
||||
parts := strings.Split(j.Body, "&")
|
||||
|
||||
for _, part := range parts {
|
||||
|
@ -171,7 +167,7 @@ func (j *JSRequest) ToRequest() (req *http.Request) {
|
|||
}
|
||||
}
|
||||
|
||||
if hadType == false && j.ContentType != "" {
|
||||
if !hadType && j.ContentType != "" {
|
||||
req.Header.Set("Content-Type", j.ContentType)
|
||||
}
|
||||
|
||||
|
|
|
@ -64,20 +64,15 @@ func (j *JSResponse) UpdateHash() {
|
|||
}
|
||||
|
||||
func (j *JSResponse) WasModified() bool {
|
||||
if j.bodyRead == true {
|
||||
if j.bodyRead {
|
||||
// body was read
|
||||
return true
|
||||
} else if j.Body != "" {
|
||||
// body was not read but just set
|
||||
return true
|
||||
}
|
||||
|
||||
// check if any of the fields has been changed
|
||||
newHash := j.NewHash()
|
||||
if newHash != j.refHash {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return j.NewHash() != j.refHash
|
||||
}
|
||||
|
||||
func (j *JSResponse) GetHeader(name, deflt string) string {
|
||||
|
|
|
@ -89,7 +89,7 @@ func (httpd *HttpServer) Configure() error {
|
|||
var certFile string
|
||||
var keyFile string
|
||||
|
||||
if httpd.Running() == true {
|
||||
if httpd.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ func (httpd *HttpServer) Configure() error {
|
|||
}
|
||||
|
||||
if certFile != "" && keyFile != "" {
|
||||
if core.Exists(certFile) == false || core.Exists(keyFile) == false {
|
||||
if !core.Exists(certFile) || !core.Exists(keyFile) {
|
||||
log.Info("Generating server TLS key to %s", keyFile)
|
||||
log.Info("Generating server TLS certificate to %s", certFile)
|
||||
if err := tls.Generate(certFile, keyFile); err != nil {
|
||||
|
@ -155,7 +155,6 @@ func (httpd *HttpServer) Start() error {
|
|||
|
||||
return httpd.SetRunning(true, func() {
|
||||
var err error
|
||||
|
||||
if httpd.isTLS() {
|
||||
log.Info("HTTPS server starting on https://%s", httpd.server.Addr)
|
||||
err = httpd.server.ListenAndServeTLS(httpd.certFile, httpd.keyFile)
|
||||
|
|
|
@ -87,7 +87,7 @@ func (p *HttpsProxy) Configure() error {
|
|||
var keyFile string
|
||||
var stripSSL bool
|
||||
|
||||
if p.Running() == true {
|
||||
if p.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err, address = p.StringParam("https.proxy.address"); err != nil {
|
||||
return err
|
||||
|
@ -109,7 +109,7 @@ func (p *HttpsProxy) Configure() error {
|
|||
return err
|
||||
}
|
||||
|
||||
if core.Exists(certFile) == false || core.Exists(keyFile) == false {
|
||||
if !core.Exists(certFile) || !core.Exists(keyFile) {
|
||||
log.Info("Generating proxy certification authority TLS key to %s", keyFile)
|
||||
log.Info("Generating proxy certification authority TLS certificate to %s", certFile)
|
||||
if err := tls.Generate(certFile, keyFile); err != nil {
|
||||
|
|
|
@ -101,7 +101,7 @@ func (mc *MacChanger) setMac(mac net.HardwareAddr) error {
|
|||
}
|
||||
|
||||
func (mc *MacChanger) Start() error {
|
||||
if mc.Running() == true {
|
||||
if mc.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err := mc.Configure(); err != nil {
|
||||
return err
|
||||
|
|
|
@ -69,30 +69,19 @@ func (mysql *MySQLServer) Configure() error {
|
|||
var address string
|
||||
var port int
|
||||
|
||||
if mysql.Running() == true {
|
||||
if mysql.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
}
|
||||
|
||||
if err, mysql.infile = mysql.StringParam("mysql.server.infile"); err != nil {
|
||||
} else if err, mysql.infile = mysql.StringParam("mysql.server.infile"); err != nil {
|
||||
return err
|
||||
} else if err, address = mysql.StringParam("mysql.server.address"); err != nil {
|
||||
return err
|
||||
} else if err, port = mysql.IntParam("mysql.server.port"); err != nil {
|
||||
return err
|
||||
} else if mysql.address, err = net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%d", address, port)); err != nil {
|
||||
return err
|
||||
} else if mysql.listener, err = net.ListenTCP("tcp", mysql.address); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err, address = mysql.StringParam("mysql.server.address"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err, port = mysql.IntParam("mysql.server.port"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if mysql.address, err = net.ResolveTCPAddr("tcp", fmt.Sprintf("%s:%d", address, port)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if mysql.listener, err = net.ListenTCP("tcp", mysql.address); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -103,9 +103,9 @@ func (p *Prober) Start() error {
|
|||
|
||||
for p.Running() {
|
||||
for _, ip := range addresses {
|
||||
if p.Running() == false {
|
||||
if !p.Running() {
|
||||
return
|
||||
} else if p.Session.Skip(ip) == true {
|
||||
} else if p.Session.Skip(ip) {
|
||||
log.Debug("Skipping address %s from UDP probing.", ip)
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ func (d *Discovery) runDiff(cache network.ArpTable) {
|
|||
var rem network.ArpTable = make(network.ArpTable)
|
||||
|
||||
d.Session.Lan.EachHost(func(mac string, e *network.Endpoint) {
|
||||
if _, found := cache[mac]; found == false {
|
||||
if _, found := cache[mac]; !found {
|
||||
rem[mac] = e.IpAddress
|
||||
}
|
||||
})
|
||||
|
@ -100,7 +100,6 @@ func (d *Discovery) Start() error {
|
|||
return d.SetRunning(true, func() {
|
||||
every := time.Duration(1) * time.Second
|
||||
iface := d.Session.Interface.Name()
|
||||
|
||||
for d.Running() {
|
||||
if table, err := network.ArpUpdate(iface); err != nil {
|
||||
log.Error("%s", err)
|
||||
|
|
|
@ -31,28 +31,13 @@ func (p ProtoPairList) Len() int { return len(p) }
|
|||
func (p ProtoPairList) Less(i, j int) bool { return p[i].Hits < p[j].Hits }
|
||||
func (p ProtoPairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|
||||
|
||||
func rankByProtoHits(protos map[string]uint64) (ProtoPairList, uint64) {
|
||||
pl := make(ProtoPairList, len(protos))
|
||||
max := uint64(0)
|
||||
i := 0
|
||||
for k, v := range protos {
|
||||
pl[i] = ProtoPair{k, v}
|
||||
if v > max {
|
||||
max = v
|
||||
}
|
||||
i++
|
||||
}
|
||||
sort.Sort(sort.Reverse(pl))
|
||||
return pl, max
|
||||
}
|
||||
|
||||
func (d *Discovery) getRow(e *network.Endpoint, withMeta bool) []string {
|
||||
sinceStarted := time.Since(d.Session.StartedAt)
|
||||
sinceFirstSeen := time.Since(e.FirstSeen)
|
||||
|
||||
addr := e.IpAddress
|
||||
mac := e.HwAddress
|
||||
if d.Session.Lan.WasMissed(e.HwAddress) == true {
|
||||
if d.Session.Lan.WasMissed(e.HwAddress) {
|
||||
// if endpoint was not found in ARP at least once
|
||||
addr = core.Dim(addr)
|
||||
mac = core.Dim(mac)
|
||||
|
@ -75,7 +60,7 @@ func (d *Discovery) getRow(e *network.Endpoint, withMeta bool) []string {
|
|||
|
||||
var traffic *packets.Traffic
|
||||
var found bool
|
||||
if traffic, found = d.Session.Queue.Traffic[e.IpAddress]; found == false {
|
||||
if traffic, found = d.Session.Queue.Traffic[e.IpAddress]; !found {
|
||||
traffic = &packets.Traffic{}
|
||||
}
|
||||
|
||||
|
@ -135,7 +120,7 @@ func (d *Discovery) Show(by string) error {
|
|||
|
||||
hasMeta := false
|
||||
for _, t := range targets {
|
||||
if t.Meta.Empty() == false {
|
||||
if !t.Meta.Empty() {
|
||||
hasMeta = true
|
||||
break
|
||||
}
|
||||
|
|
|
@ -35,11 +35,11 @@ func (a BySentSorter) Less(i, j int) bool {
|
|||
var aTraffic *packets.Traffic = nil
|
||||
var bTraffic *packets.Traffic = nil
|
||||
|
||||
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; found == false {
|
||||
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; !found {
|
||||
aTraffic = &packets.Traffic{}
|
||||
}
|
||||
|
||||
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; found == false {
|
||||
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; !found {
|
||||
bTraffic = &packets.Traffic{}
|
||||
}
|
||||
|
||||
|
@ -58,11 +58,11 @@ func (a ByRcvdSorter) Less(i, j int) bool {
|
|||
var aTraffic *packets.Traffic = nil
|
||||
var bTraffic *packets.Traffic = nil
|
||||
|
||||
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; found == false {
|
||||
if aTraffic, found = session.I.Queue.Traffic[a[i].IpAddress]; !found {
|
||||
aTraffic = &packets.Traffic{}
|
||||
}
|
||||
|
||||
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; found == false {
|
||||
if bTraffic, found = session.I.Queue.Traffic[a[j].IpAddress]; !found {
|
||||
bTraffic = &packets.Traffic{}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package modules
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/bettercap/bettercap/session"
|
||||
|
@ -91,20 +90,6 @@ func (s Sniffer) Author() string {
|
|||
return "Simone Margaritelli <evilsocket@protonmail.com>"
|
||||
}
|
||||
|
||||
func same(a, b net.HardwareAddr) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
}
|
||||
|
||||
for idx, v := range a {
|
||||
if b[idx] != v {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func (s Sniffer) isLocalPacket(packet gopacket.Packet) bool {
|
||||
ipl := packet.Layer(layers.LayerTypeIPv4)
|
||||
if ipl != nil {
|
||||
|
@ -117,7 +102,7 @@ func (s Sniffer) isLocalPacket(packet gopacket.Packet) bool {
|
|||
}
|
||||
|
||||
func (s *Sniffer) onPacketMatched(pkt gopacket.Packet) {
|
||||
if mainParser(pkt, s.Ctx.Verbose) == true {
|
||||
if mainParser(pkt, s.Ctx.Verbose) {
|
||||
s.Stats.NumDumped++
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +110,7 @@ func (s *Sniffer) onPacketMatched(pkt gopacket.Packet) {
|
|||
func (s *Sniffer) Configure() error {
|
||||
var err error
|
||||
|
||||
if s.Running() == true {
|
||||
if s.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err, s.Ctx = s.GetContext(); err != nil {
|
||||
if s.Ctx != nil {
|
||||
|
@ -149,7 +134,7 @@ func (s *Sniffer) Start() error {
|
|||
src := gopacket.NewPacketSource(s.Ctx.Handle, s.Ctx.Handle.LinkType())
|
||||
s.pktSourceChan = src.Packets()
|
||||
for packet := range s.pktSourceChan {
|
||||
if s.Running() == false {
|
||||
if !s.Running() {
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -164,9 +149,9 @@ func (s *Sniffer) Start() error {
|
|||
s.Stats.NumLocal++
|
||||
}
|
||||
|
||||
if s.Ctx.DumpLocal == true || isLocal == false {
|
||||
if s.Ctx.DumpLocal || !isLocal {
|
||||
data := packet.Data()
|
||||
if s.Ctx.Compiled == nil || s.Ctx.Compiled.Match(data) == true {
|
||||
if s.Ctx.Compiled == nil || s.Ctx.Compiled.Match(data) {
|
||||
s.Stats.NumMatched++
|
||||
|
||||
s.onPacketMatched(packet)
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
|
||||
func dnsParser(ip *layers.IPv4, pkt gopacket.Packet, udp *layers.UDP) bool {
|
||||
dns, parsed := pkt.Layer(layers.LayerTypeDNS).(*layers.DNS)
|
||||
if parsed == false {
|
||||
if !parsed {
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -19,14 +19,14 @@ func dnsParser(ip *layers.IPv4, pkt gopacket.Packet, udp *layers.UDP) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
m := make(map[string][]string, 0)
|
||||
m := make(map[string][]string)
|
||||
for _, a := range dns.Answers {
|
||||
if a.IP == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
hostname := string(a.Name)
|
||||
if _, found := m[hostname]; found == false {
|
||||
if _, found := m[hostname]; !found {
|
||||
m[hostname] = make([]string, 0)
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ func tcpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
|||
return
|
||||
} else if httpParser(ip, pkt, tcp) {
|
||||
return
|
||||
} else if verbose == true {
|
||||
} else if verbose {
|
||||
NewSnifferEvent(
|
||||
pkt.Metadata().Timestamp,
|
||||
"tcp",
|
||||
|
@ -47,7 +47,7 @@ func udpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
|||
return
|
||||
} else if krb5Parser(ip, pkt, udp) {
|
||||
return
|
||||
} else if verbose == true {
|
||||
} else if verbose {
|
||||
NewSnifferEvent(
|
||||
pkt.Metadata().Timestamp,
|
||||
"udp",
|
||||
|
@ -68,7 +68,7 @@ func udpParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
|||
}
|
||||
|
||||
func unkParser(ip *layers.IPv4, pkt gopacket.Packet, verbose bool) {
|
||||
if verbose == true {
|
||||
if verbose {
|
||||
NewSnifferEvent(
|
||||
pkt.Metadata().Timestamp,
|
||||
pkt.TransportLayer().LayerType().String(),
|
||||
|
@ -111,13 +111,10 @@ func mainParser(pkt gopacket.Packet, verbose bool) bool {
|
|||
unkParser(ip, pkt, verbose)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// are we sniffing in monitor mode?
|
||||
if ok, radiotap, dot11 := packets.Dot11Parse(pkt); ok == true {
|
||||
} else if ok, radiotap, dot11 := packets.Dot11Parse(pkt); ok {
|
||||
// are we sniffing in monitor mode?
|
||||
dot11Parser(radiotap, dot11, pkt, verbose)
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -31,11 +31,10 @@ func (s *SnifferStats) Print() error {
|
|||
first := "never"
|
||||
last := "never"
|
||||
|
||||
if s.FirstPacket.IsZero() == false {
|
||||
if !s.FirstPacket.IsZero() {
|
||||
first = s.FirstPacket.String()
|
||||
}
|
||||
|
||||
if s.LastPacket.IsZero() == false {
|
||||
if !s.LastPacket.IsZero() {
|
||||
last = s.LastPacket.String()
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package modules
|
|||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/google/gopacket/layers"
|
||||
|
||||
|
@ -11,10 +10,6 @@ import (
|
|||
"github.com/bettercap/bettercap/session"
|
||||
)
|
||||
|
||||
func vTime(t time.Time) string {
|
||||
return t.Format("15:04:05")
|
||||
}
|
||||
|
||||
func vIP(ip net.IP) string {
|
||||
if session.I.Interface.IP.Equal(ip) {
|
||||
return core.Dim("local")
|
||||
|
|
|
@ -100,7 +100,7 @@ func (pp *PacketProxy) destroyQueue() {
|
|||
|
||||
func (pp *PacketProxy) runRule(enable bool) (err error) {
|
||||
action := "-A"
|
||||
if enable == false {
|
||||
if !enable {
|
||||
action = "-D"
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ func (pp *PacketProxy) Configure() (err error) {
|
|||
|
||||
if pp.pluginPath == "" {
|
||||
return fmt.Errorf("The parameter %s can not be empty.", core.Bold("packet.proxy.plugin"))
|
||||
} else if core.Exists(pp.pluginPath) == false {
|
||||
} else if !core.Exists(pp.pluginPath) {
|
||||
return fmt.Errorf("%s does not exist.", pp.pluginPath)
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ func (pp *PacketProxy) Configure() (err error) {
|
|||
return
|
||||
} else if sym, err = pp.plugin.Lookup("OnPacket"); err != nil {
|
||||
return
|
||||
} else if pp.queueCb, ok = sym.(func(*nfqueue.Payload) int); ok == false {
|
||||
} else if pp.queueCb, ok = sym.(func(*nfqueue.Payload) int); !ok {
|
||||
return fmt.Errorf("Symbol OnPacket is not a valid callback function.")
|
||||
}
|
||||
|
||||
|
@ -187,7 +187,7 @@ func dummyCallback(payload *nfqueue.Payload) int {
|
|||
}
|
||||
|
||||
func (pp *PacketProxy) Start() error {
|
||||
if pp.Running() == true {
|
||||
if pp.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err := pp.Configure(); err != nil {
|
||||
return err
|
||||
|
|
|
@ -41,7 +41,7 @@ func NewSynScanner(s *session.Session) *SynScanner {
|
|||
ss.AddHandler(session.NewModuleHandler("syn.scan IP-RANGE [START-PORT] [END-PORT]", "syn.scan ([^\\s]+) ?(\\d+)?([\\s\\d]*)?",
|
||||
"Perform a syn port scanning against an IP address within the provided ports range.",
|
||||
func(args []string) error {
|
||||
if ss.Running() == true {
|
||||
if ss.Running() {
|
||||
return fmt.Errorf("A scan is already running, wait for it to end before starting a new one.")
|
||||
}
|
||||
|
||||
|
@ -176,7 +176,7 @@ func (s *SynScanner) synScan() error {
|
|||
|
||||
// start sending SYN packets and wait
|
||||
for _, address := range s.addresses {
|
||||
if s.Running() == false {
|
||||
if !s.Running() {
|
||||
break
|
||||
}
|
||||
mac, err := findMAC(s.Session, address, true)
|
||||
|
@ -186,7 +186,7 @@ func (s *SynScanner) synScan() error {
|
|||
}
|
||||
|
||||
for dstPort := s.startPort; dstPort < s.endPort+1; dstPort++ {
|
||||
if s.Running() == false {
|
||||
if !s.Running() {
|
||||
break
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ func (p *TcpProxy) Configure() error {
|
|||
var proxyAddress string
|
||||
var scriptPath string
|
||||
|
||||
if p.Running() == true {
|
||||
if p.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err, address = p.StringParam("tcp.address"); err != nil {
|
||||
return err
|
||||
|
@ -111,7 +111,7 @@ func (p *TcpProxy) Configure() error {
|
|||
}
|
||||
}
|
||||
|
||||
if p.Session.Firewall.IsForwardingEnabled() == false {
|
||||
if !p.Session.Firewall.IsForwardingEnabled() {
|
||||
log.Info("Enabling forwarding.")
|
||||
p.Session.Firewall.EnableForwarding(true)
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ func (s *TcpProxyScript) OnData(from, to net.Addr, data []byte) []byte {
|
|||
return nil
|
||||
}
|
||||
|
||||
if ret.IsUndefined() == false && ret.IsString() {
|
||||
if !ret.IsUndefined() && ret.IsString() {
|
||||
return []byte(ret.String())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ func (t *Ticker) Configure() error {
|
|||
var commands string
|
||||
var period int
|
||||
|
||||
if t.Running() == true {
|
||||
if t.Running() {
|
||||
return session.ErrAlreadyStarted
|
||||
} else if err, commands = t.StringParam("ticker.commands"); err != nil {
|
||||
return err
|
||||
|
@ -82,7 +82,7 @@ func (t *Ticker) Start() error {
|
|||
log.Info("Ticker running with period %.fs.", t.Period.Seconds())
|
||||
tick := time.NewTicker(t.Period)
|
||||
for range tick.C {
|
||||
if t.Running() == false {
|
||||
if !t.Running() {
|
||||
break
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ func findMAC(s *session.Session, ip net.IP, probe bool) (net.HardwareAddr, error
|
|||
|
||||
// do we have this ip mac address?
|
||||
mac, err = network.ArpLookup(s.Interface.Name(), ip.String(), false)
|
||||
if err != nil && probe == true {
|
||||
if err != nil && probe {
|
||||
from := s.Interface.IP
|
||||
from_hw := s.Interface.HW
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
|
|||
bssid, err := net.ParseMAC(args[0])
|
||||
if err != nil {
|
||||
return err
|
||||
} else if ap, found := w.Session.WiFi.Get(bssid.String()); found == true {
|
||||
} else if ap, found := w.Session.WiFi.Get(bssid.String()); found {
|
||||
w.ap = ap
|
||||
w.stickChan = network.Dot11Freq2Chan(ap.Frequency)
|
||||
return nil
|
||||
|
@ -79,14 +79,11 @@ func NewWiFiModule(s *session.Session) *WiFiModule {
|
|||
|
||||
w.AddHandler(session.NewModuleHandler("wifi.recon clear", "",
|
||||
"Remove the 802.11 base station filter.",
|
||||
func(args []string) error {
|
||||
func(args []string) (err error) {
|
||||
w.ap = nil
|
||||
w.stickChan = 0
|
||||
var err error
|
||||
if w.frequencies, err = network.GetSupportedFrequencies(w.Session.Interface.Name()); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
w.frequencies, err = network.GetSupportedFrequencies(w.Session.Interface.Name())
|
||||
return err
|
||||
}))
|
||||
|
||||
w.AddHandler(session.NewModuleHandler("wifi.deauth BSSID", `wifi\.deauth ((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2}))`,
|
||||
|
@ -253,19 +250,19 @@ func (w *WiFiModule) updateStats(dot11 *layers.Dot11, packet gopacket.Packet) {
|
|||
bytes := uint64(len(packet.Data()))
|
||||
|
||||
dst := dot11.Address1.String()
|
||||
if station, found := w.Session.WiFi.Get(dst); found == true {
|
||||
if station, found := w.Session.WiFi.Get(dst); found {
|
||||
station.Received += bytes
|
||||
}
|
||||
|
||||
src := dot11.Address2.String()
|
||||
if station, found := w.Session.WiFi.Get(src); found == true {
|
||||
if station, found := w.Session.WiFi.Get(src); found {
|
||||
station.Sent += bytes
|
||||
}
|
||||
}
|
||||
|
||||
if ok, enc, cipher, auth := packets.Dot11ParseEncryption(packet, dot11); ok == true {
|
||||
if ok, enc, cipher, auth := packets.Dot11ParseEncryption(packet, dot11); ok {
|
||||
bssid := dot11.Address3.String()
|
||||
if station, found := w.Session.WiFi.Get(bssid); found == true {
|
||||
if station, found := w.Session.WiFi.Get(bssid); found {
|
||||
station.Encryption = enc
|
||||
station.Cipher = cipher
|
||||
station.Authentication = auth
|
||||
|
@ -293,7 +290,7 @@ func (w *WiFiModule) Start() error {
|
|||
src := gopacket.NewPacketSource(w.handle, w.handle.LinkType())
|
||||
w.pktSourceChan = src.Packets()
|
||||
for packet := range w.pktSourceChan {
|
||||
if w.Running() == false {
|
||||
if !w.Running() {
|
||||
break
|
||||
} else if packet == nil {
|
||||
continue
|
||||
|
@ -302,9 +299,9 @@ func (w *WiFiModule) Start() error {
|
|||
w.Session.Queue.TrackPacket(uint64(len(packet.Data())))
|
||||
|
||||
// perform initial dot11 parsing and layers validation
|
||||
if ok, radiotap, dot11 := packets.Dot11Parse(packet); ok == true {
|
||||
if ok, radiotap, dot11 := packets.Dot11Parse(packet); ok {
|
||||
// check FCS checksum
|
||||
if w.skipBroken && dot11.ChecksumValid() == false {
|
||||
if w.skipBroken && !dot11.ChecksumValid() {
|
||||
log.Debug("Skipping dot11 packet with invalid checksum.")
|
||||
continue
|
||||
}
|
||||
|
@ -326,7 +323,7 @@ func (w *WiFiModule) Stop() error {
|
|||
// wait any pending write operation
|
||||
w.writes.Wait()
|
||||
// signal the main for loop we want to exit
|
||||
if w.pktSourceChanClosed == false {
|
||||
if !w.pktSourceChanClosed {
|
||||
w.pktSourceChan <- nil
|
||||
}
|
||||
// close the pcap handle to make the main for exit
|
||||
|
|
|
@ -16,7 +16,6 @@ var errNoRecon = errors.New("Module wifi.ap requires module wifi.recon to be act
|
|||
|
||||
func (w *WiFiModule) parseApConfig() (err error) {
|
||||
var bssid string
|
||||
|
||||
if err, w.apConfig.SSID = w.StringParam("wifi.ap.ssid"); err != nil {
|
||||
return
|
||||
} else if err, bssid = w.StringParam("wifi.ap.bssid"); err != nil {
|
||||
|
@ -28,13 +27,12 @@ func (w *WiFiModule) parseApConfig() (err error) {
|
|||
} else if err, w.apConfig.Encryption = w.BoolParam("wifi.ap.encryption"); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (w *WiFiModule) startAp() error {
|
||||
// we need channel hopping and packet injection for this
|
||||
if w.Running() == false {
|
||||
if w.Running() {
|
||||
return errNoRecon
|
||||
} else if w.apRunning {
|
||||
return session.ErrAlreadyStarted
|
||||
|
@ -47,7 +45,7 @@ func (w *WiFiModule) startAp() error {
|
|||
}()
|
||||
|
||||
enc := core.Yellow("WPA2")
|
||||
if w.apConfig.Encryption == false {
|
||||
if !w.apConfig.Encryption {
|
||||
enc = core.Green("Open")
|
||||
}
|
||||
log.Info("Sending beacons as SSID %s (%s) on channel %d (%s).",
|
||||
|
|
|
@ -42,7 +42,7 @@ func (w *WiFiModule) sendDeauthPacket(ap net.HardwareAddr, client net.HardwareAd
|
|||
func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
|
||||
// if not already running, temporarily enable the pcap handle
|
||||
// for packet injection
|
||||
if w.Running() == false {
|
||||
if !w.Running() {
|
||||
if err := w.Configure(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -55,12 +55,12 @@ func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
|
|||
bssid := to.String()
|
||||
|
||||
// are we deauthing every client of a given access point?
|
||||
if ap, found := w.Session.WiFi.Get(bssid); found == true {
|
||||
if ap, found := w.Session.WiFi.Get(bssid); found {
|
||||
clients := ap.Clients()
|
||||
log.Info("Deauthing %d clients from AP %s ...", len(clients), ap.ESSID())
|
||||
w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() {
|
||||
for _, c := range clients {
|
||||
if w.Running() == false {
|
||||
if !w.Running() {
|
||||
break
|
||||
}
|
||||
w.sendDeauthPacket(ap.HW, c.HW)
|
||||
|
@ -73,9 +73,9 @@ func (w *WiFiModule) startDeauth(to net.HardwareAddr) error {
|
|||
// search for a client
|
||||
aps := w.Session.WiFi.List()
|
||||
for _, ap := range aps {
|
||||
if w.Running() == false {
|
||||
if !w.Running() {
|
||||
break
|
||||
} else if c, found := ap.Get(bssid); found == true {
|
||||
} else if c, found := ap.Get(bssid); found {
|
||||
log.Info("Deauthing client %s from AP %s ...", c.HwAddress, ap.ESSID())
|
||||
w.onChannel(network.Dot11Freq2Chan(ap.Frequency), func() {
|
||||
w.sendDeauthPacket(ap.HW, c.HW)
|
||||
|
|
|
@ -28,7 +28,7 @@ func (w *WiFiModule) channelHopper() {
|
|||
|
||||
log.Info("Channel hopper started.")
|
||||
|
||||
for w.Running() == true {
|
||||
for w.Running() {
|
||||
delay := w.hopPeriod
|
||||
// if we have both 2.4 and 5ghz capabilities, we have
|
||||
// more channels, therefore we need to increase the time
|
||||
|
@ -53,7 +53,7 @@ func (w *WiFiModule) channelHopper() {
|
|||
}
|
||||
|
||||
time.Sleep(delay)
|
||||
if w.Running() == false {
|
||||
if !w.Running() {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ func (w *WiFiModule) stationPruner() {
|
|||
defer w.reads.Done()
|
||||
|
||||
log.Debug("WiFi stations pruner started.")
|
||||
for w.Running() == true {
|
||||
for w.Running() {
|
||||
for _, s := range w.Session.WiFi.List() {
|
||||
sinceLastSeen := time.Since(s.LastSeen)
|
||||
if sinceLastSeen > maxStationTTL {
|
||||
|
@ -42,15 +42,15 @@ func (w *WiFiModule) stationPruner() {
|
|||
|
||||
func (w *WiFiModule) discoverAccessPoints(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) {
|
||||
// search for Dot11InformationElementIDSSID
|
||||
if ok, ssid := packets.Dot11ParseIDSSID(packet); ok == true {
|
||||
if ok, ssid := packets.Dot11ParseIDSSID(packet); ok {
|
||||
from := dot11.Address3
|
||||
|
||||
// skip stuff we're sending
|
||||
if w.apRunning && bytes.Compare(from, w.apConfig.BSSID) == 0 {
|
||||
if w.apRunning && bytes.Equal(from, w.apConfig.BSSID) {
|
||||
return
|
||||
}
|
||||
|
||||
if network.IsZeroMac(from) == false && network.IsBroadcastMac(from) == false {
|
||||
if !network.IsZeroMac(from) && !network.IsBroadcastMac(from) {
|
||||
var frequency int
|
||||
bssid := from.String()
|
||||
|
||||
|
@ -76,7 +76,7 @@ func (w *WiFiModule) discoverProbes(radiotap *layers.RadioTap, dot11 *layers.Dot
|
|||
}
|
||||
|
||||
req, ok := reqLayer.(*layers.Dot11MgmtProbeReq)
|
||||
if ok == false {
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ func (w *WiFiModule) discoverProbes(radiotap *layers.RadioTap, dot11 *layers.Dot
|
|||
func (w *WiFiModule) discoverClients(radiotap *layers.RadioTap, dot11 *layers.Dot11, packet gopacket.Packet) {
|
||||
w.Session.WiFi.EachAccessPoint(func(bssid string, ap *network.AccessPoint) {
|
||||
// packet going to this specific BSSID?
|
||||
if packets.Dot11IsDataFor(dot11, ap.HW) == true {
|
||||
if packets.Dot11IsDataFor(dot11, ap.HW) {
|
||||
ap.AddClient(dot11.Address2.String(), int(radiotap.ChannelFrequency), radiotap.DBMAntennaSignal)
|
||||
}
|
||||
})
|
||||
|
|
|
@ -88,7 +88,7 @@ func (w *WiFiModule) getRow(station *network.Station) ([]string, bool) {
|
|||
// method handle both access point and clients
|
||||
// transparently
|
||||
clients := ""
|
||||
if ap, found := w.Session.WiFi.Get(station.HwAddress); found == true {
|
||||
if ap, found := w.Session.WiFi.Get(station.HwAddress); found {
|
||||
if ap.NumClients() > 0 {
|
||||
clients = strconv.Itoa(ap.NumClients())
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ func (w *WiFiModule) Show(by string) error {
|
|||
|
||||
apSelected := w.isApSelected()
|
||||
if apSelected {
|
||||
if ap, found := w.Session.WiFi.Get(w.ap.HwAddress); found == true {
|
||||
if ap, found := w.Session.WiFi.Get(w.ap.HwAddress); found {
|
||||
stations = ap.Clients()
|
||||
} else {
|
||||
return fmt.Errorf("Could not find station %s", w.ap.HwAddress)
|
||||
|
@ -135,7 +135,7 @@ func (w *WiFiModule) Show(by string) error {
|
|||
|
||||
rows := make([][]string, 0)
|
||||
for _, s := range stations {
|
||||
if row, include := w.getRow(s); include == true {
|
||||
if row, include := w.getRow(s); include {
|
||||
rows = append(rows, row)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ func parseMAC(args []string) (string, error) {
|
|||
if len(args) == 1 {
|
||||
tmp := core.Trim(args[0])
|
||||
if tmp != "" {
|
||||
if reMAC.MatchString(tmp) == false {
|
||||
if !reMAC.MatchString(tmp) {
|
||||
return "", fmt.Errorf("%s is not a valid MAC address.", tmp)
|
||||
} else {
|
||||
mac = tmp
|
||||
|
@ -91,9 +91,7 @@ func (w *WOL) Stop() error {
|
|||
|
||||
func buildPayload(mac string) []byte {
|
||||
raw, _ := net.ParseMAC(mac)
|
||||
payload := make([]byte, 0)
|
||||
|
||||
payload = append(payload, layers.EthernetBroadcast...)
|
||||
payload := []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
|
||||
for i := 0; i < 16; i++ {
|
||||
payload = append(payload, raw...)
|
||||
}
|
||||
|
@ -118,11 +116,7 @@ func (w *WOL) wolETH(mac string) error {
|
|||
}
|
||||
|
||||
raw = append(raw, payload...)
|
||||
if err := w.Session.Queue.Send(raw); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
return w.Session.Queue.Send(raw)
|
||||
}
|
||||
|
||||
func (w *WOL) wolUDP(mac string) error {
|
||||
|
@ -159,9 +153,5 @@ func (w *WOL) wolUDP(mac string) error {
|
|||
}
|
||||
|
||||
raw = append(raw, payload...)
|
||||
if err := w.Session.Queue.Send(raw); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
return w.Session.Queue.Send(raw)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue