new: realtime network stats can now be used in the prompt

This commit is contained in:
evilsocket 2018-01-13 19:19:43 +01:00
parent e7da2d4287
commit 75b423ab2d
7 changed files with 31 additions and 4 deletions

View file

@ -45,6 +45,7 @@ deps:
@go get github.com/rogpeppe/go-charset/charset
@go get github.com/chzyer/readline
@go get github.com/robertkrimen/otto
@go get github.com/dustin/go-humanize
clean:
@rm -rf $(TARGET) net/oui_compiled.go

View file

@ -0,0 +1 @@
set $ {by}{fb}SENT:{fw}{net.sent.human} {fb}RECV:{fw}{net.received.human} {fb}PKTS:{fw}{net.packets} {r}ERR:{net.errors}{reset} {bold}» {reset}

View file

@ -91,7 +91,7 @@ func (s *EventsStream) Start() error {
fmt.Printf("[%s] [%s] %v\n", tm, core.Green(e.Tag), e.Data)
}
s.Session.Input.Refresh()
s.Session.Refresh()
}
break

View file

@ -32,7 +32,7 @@ func (s *ProxyScript) defineBuiltins() error {
fmt.Printf("%s", v.String())
}
fmt.Println()
s.sess.Input.Refresh()
s.sess.Refresh()
return otto.Value{}
})

View file

@ -32,5 +32,5 @@ func NewSnifferEvent(t time.Time, proto string, src string, dst string, data Sni
func (e SnifferEvent) Push() {
fmt.Printf("%s\n", e.Message)
session.I.Events.Add("net.sniff.leak."+e.Protocol, e.Data)
session.I.Input.Refresh()
session.I.Refresh()
}

View file

@ -1,10 +1,13 @@
package session
import (
"fmt"
"regexp"
"strings"
"github.com/evilsocket/bettercap-ng/core"
"github.com/dustin/go-humanize"
)
const (
@ -33,6 +36,24 @@ var PromptCallbacks = map[string]func(s *Session) string{
"{cidr}": func(s *Session) string {
return s.Interface.CIDR()
},
"{net.sent}": func(s *Session) string {
return fmt.Sprintf("%d", s.Queue.Sent)
},
"{net.sent.human}": func(s *Session) string {
return humanize.Bytes(s.Queue.Sent)
},
"{net.received}": func(s *Session) string {
return fmt.Sprintf("%d", s.Queue.Received)
},
"{net.received.human}": func(s *Session) string {
return humanize.Bytes(s.Queue.Received)
},
"{net.packets}": func(s *Session) string {
return fmt.Sprintf("%d", s.Queue.PktReceived)
},
"{net.errors}": func(s *Session) string {
return fmt.Sprintf("%d", s.Queue.Errors)
},
}
var envRe = regexp.MustCompile("{env\\.(.+)}")

View file

@ -253,9 +253,13 @@ func (s *Session) Start() error {
return nil
}
func (s *Session) ReadLine() (string, error) {
func (s *Session) Refresh() {
s.Input.SetPrompt(s.Prompt.Render(s))
s.Input.Refresh()
}
func (s *Session) ReadLine() (string, error) {
s.Refresh()
return s.Input.Readline()
}