Files
2026-07-18 21:37:15 +03:00

37 lines
974 B
Go

package winpwn
import (
"fmt"
"os"
"time"
)
// Info/Success/Warn/Error are winpwn's leveled logger, the analogue of
// pwntools' log.info/log.success/log.warn/log.error. All four write to
// stderr (so they never interleave with a tube's own stdout traffic) and
// are gated by Context.LogLevel -- set Context.LogLevel = LogLevelSilent to
// quiet a script down for scripted/CI use.
func Info(format string, args ...any) {
logAt(LogLevelInfo, "[*]", format, args...)
}
func Success(format string, args ...any) {
logAt(LogLevelInfo, "[+]", format, args...)
}
func Warn(format string, args ...any) {
logAt(LogLevelWarn, "[!]", format, args...)
}
func Error(format string, args ...any) {
logAt(LogLevelError, "[-]", format, args...)
}
func logAt(level LogLevel, prefix, format string, args ...any) {
if level < Context.LogLevel {
return
}
msg := fmt.Sprintf(format, args...)
fmt.Fprintf(os.Stderr, "%s %s %s\n", time.Now().Format("15:04:05"), prefix, msg)
}