fix: added better debug logging for core.Exec (fixes #1125)

This commit is contained in:
Simone Margaritelli 2024-09-13 12:27:22 +02:00
parent 97b4dcb46e
commit 5bc9dd9259
3 changed files with 26 additions and 8 deletions

View file

@ -4,6 +4,7 @@ import (
"os/exec" "os/exec"
"sort" "sort"
"github.com/bettercap/bettercap/v2/log"
"github.com/evilsocket/islazy/str" "github.com/evilsocket/islazy/str"
) )
@ -36,10 +37,13 @@ func HasBinary(executable string) bool {
func Exec(executable string, args []string) (string, error) { func Exec(executable string, args []string) (string, error) {
path, err := exec.LookPath(executable) path, err := exec.LookPath(executable)
if err != nil { if err != nil {
log.Warning("executable %s not found in $PATH", executable)
return "", err return "", err
} }
raw, err := exec.Command(path, args...).CombinedOutput() raw, err := exec.Command(path, args...).CombinedOutput()
log.Debug("exec=%s args=%v ret_err=%v ret_out=%s", path, args, err, string(raw))
if err != nil { if err != nil {
return str.Trim(string(raw)), err return str.Trim(string(raw)), err
} else { } else {

View file

@ -1,27 +1,39 @@
package log package log
import ( import (
"github.com/bettercap/bettercap/v2/session" "github.com/evilsocket/islazy/log"
ll "github.com/evilsocket/islazy/log"
) )
type logFunction func(level log.Verbosity, format string, args ...interface{})
var Logger = (logFunction)(nil)
func Debug(format string, args ...interface{}) { func Debug(format string, args ...interface{}) {
session.I.Events.Log(ll.DEBUG, format, args...) if Logger != nil {
Logger(log.DEBUG, format, args...)
}
} }
func Info(format string, args ...interface{}) { func Info(format string, args ...interface{}) {
session.I.Events.Log(ll.INFO, format, args...) if Logger != nil {
Logger(log.INFO, format, args...)
}
} }
func Warning(format string, args ...interface{}) { func Warning(format string, args ...interface{}) {
session.I.Events.Log(ll.WARNING, format, args...) if Logger != nil {
Logger(log.WARNING, format, args...)
}
} }
func Error(format string, args ...interface{}) { func Error(format string, args ...interface{}) {
session.I.Events.Log(ll.ERROR, format, args...) if Logger != nil {
Logger(log.ERROR, format, args...)
}
} }
func Fatal(format string, args ...interface{}) { func Fatal(format string, args ...interface{}) {
session.I.Events.Log(ll.FATAL, format, args...) if Logger != nil {
Logger(log.FATAL, format, args...)
}
} }

View file

@ -17,6 +17,7 @@ import (
"github.com/bettercap/bettercap/v2/caplets" "github.com/bettercap/bettercap/v2/caplets"
"github.com/bettercap/bettercap/v2/core" "github.com/bettercap/bettercap/v2/core"
"github.com/bettercap/bettercap/v2/firewall" "github.com/bettercap/bettercap/v2/firewall"
my_log "github.com/bettercap/bettercap/v2/log"
"github.com/bettercap/bettercap/v2/network" "github.com/bettercap/bettercap/v2/network"
"github.com/bettercap/bettercap/v2/packets" "github.com/bettercap/bettercap/v2/packets"
@ -150,6 +151,7 @@ func New() (*Session, error) {
if I == nil { if I == nil {
I = s I = s
my_log.Logger = s.Events.Log
} }
return s, nil return s, nil