mirror of
https://github.com/bettercap/bettercap
synced 2025-08-19 04:59:25 -07:00
misc: small fix or general refactoring i did not bother commenting
This commit is contained in:
parent
d7103a7907
commit
7f7e5a24f8
2 changed files with 78 additions and 71 deletions
|
@ -110,7 +110,7 @@ func (s *Session) Module(name string) (err error, mod Module) {
|
||||||
return fmt.Errorf("Module %s not found", name), mod
|
return fmt.Errorf("Module %s not found", name), mod
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) setupInput() error {
|
func (s *Session) setupReadline() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
pcompleters := make([]readline.PrefixCompleterInterface, 0)
|
pcompleters := make([]readline.PrefixCompleterInterface, 0)
|
||||||
|
@ -211,86 +211,23 @@ func (s *Session) Close() {
|
||||||
|
|
||||||
func (s *Session) Register(mod Module) error {
|
func (s *Session) Register(mod Module) error {
|
||||||
s.Modules = append(s.Modules, mod)
|
s.Modules = append(s.Modules, mod)
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Session) Start() error {
|
for _, h := range mod.Handlers() {
|
||||||
var err error
|
|
||||||
|
|
||||||
// make sure modules are always sorted by name
|
|
||||||
sort.Slice(s.Modules, func(i, j int) bool {
|
|
||||||
return s.Modules[i].Name() < s.Modules[j].Name()
|
|
||||||
})
|
|
||||||
|
|
||||||
net.OuiInit()
|
|
||||||
|
|
||||||
if s.Interface, err = net.FindInterface(*s.Options.InterfaceName); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
s.Env.Set(PromptVariable, DefaultPrompt)
|
|
||||||
|
|
||||||
s.Env.Set("iface.index", fmt.Sprintf("%d", s.Interface.Index))
|
|
||||||
s.Env.Set("iface.name", s.Interface.Name())
|
|
||||||
s.Env.Set("iface.ipv4", s.Interface.IpAddress)
|
|
||||||
s.Env.Set("iface.ipv6", s.Interface.Ip6Address)
|
|
||||||
s.Env.Set("iface.mac", s.Interface.HwAddress)
|
|
||||||
|
|
||||||
if s.Queue, err = packets.NewQueue(s.Interface); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.Gateway, err = net.FindGateway(s.Interface); err != nil {
|
|
||||||
s.Events.Log(core.WARNING, "%s", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.Gateway == nil || s.Gateway.IpAddress == s.Interface.IpAddress {
|
|
||||||
s.Gateway = s.Interface
|
|
||||||
}
|
|
||||||
|
|
||||||
s.Env.Set("gateway.address", s.Gateway.IpAddress)
|
|
||||||
s.Env.Set("gateway.mac", s.Gateway.HwAddress)
|
|
||||||
|
|
||||||
s.Targets = NewTargets(s, s.Interface, s.Gateway)
|
|
||||||
s.Firewall = firewall.Make(s.Interface)
|
|
||||||
|
|
||||||
if err := s.setupInput(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, h := range s.CoreHandlers {
|
|
||||||
if len(h.Name) > s.HelpPadding {
|
if len(h.Name) > s.HelpPadding {
|
||||||
s.HelpPadding = len(h.Name)
|
s.HelpPadding = len(h.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, m := range s.Modules {
|
|
||||||
for _, h := range m.Handlers() {
|
|
||||||
if len(h.Name) > s.HelpPadding {
|
|
||||||
s.HelpPadding = len(h.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range m.Parameters() {
|
for _, p := range mod.Parameters() {
|
||||||
if len(p.Name) > s.HelpPadding {
|
if len(p.Name) > s.HelpPadding {
|
||||||
s.HelpPadding = len(p.Name)
|
s.HelpPadding = len(p.Name)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c := make(chan os.Signal, 1)
|
return nil
|
||||||
signal.Notify(c, os.Interrupt)
|
}
|
||||||
signal.Notify(c, syscall.SIGTERM)
|
|
||||||
go func() {
|
|
||||||
<-c
|
|
||||||
fmt.Println()
|
|
||||||
s.Events.Log(core.WARNING, "Got SIGTERM")
|
|
||||||
s.Close()
|
|
||||||
os.Exit(0)
|
|
||||||
}()
|
|
||||||
|
|
||||||
s.StartedAt = time.Now()
|
|
||||||
s.Active = true
|
|
||||||
|
|
||||||
|
func (s *Session) startNetMon() {
|
||||||
// keep reading network events in order to add / update endpoints
|
// keep reading network events in order to add / update endpoints
|
||||||
go func() {
|
go func() {
|
||||||
for event := range s.Queue.Activities {
|
for event := range s.Queue.Activities {
|
||||||
|
@ -309,6 +246,73 @@ func (s *Session) Start() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Session) setupSignals() {
|
||||||
|
c := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(c, os.Interrupt)
|
||||||
|
signal.Notify(c, syscall.SIGTERM)
|
||||||
|
go func() {
|
||||||
|
<-c
|
||||||
|
fmt.Println()
|
||||||
|
s.Events.Log(core.WARNING, "Got SIGTERM")
|
||||||
|
s.Close()
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Session) setupEnv() {
|
||||||
|
s.Env.Set(PromptVariable, DefaultPrompt)
|
||||||
|
s.Env.Set("iface.index", fmt.Sprintf("%d", s.Interface.Index))
|
||||||
|
s.Env.Set("iface.name", s.Interface.Name())
|
||||||
|
s.Env.Set("iface.ipv4", s.Interface.IpAddress)
|
||||||
|
s.Env.Set("iface.ipv6", s.Interface.Ip6Address)
|
||||||
|
s.Env.Set("iface.mac", s.Interface.HwAddress)
|
||||||
|
s.Env.Set("gateway.address", s.Gateway.IpAddress)
|
||||||
|
s.Env.Set("gateway.mac", s.Gateway.HwAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Session) Start() error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
// make sure modules are always sorted by name
|
||||||
|
sort.Slice(s.Modules, func(i, j int) bool {
|
||||||
|
return s.Modules[i].Name() < s.Modules[j].Name()
|
||||||
|
})
|
||||||
|
|
||||||
|
net.OuiInit()
|
||||||
|
|
||||||
|
if s.Interface, err = net.FindInterface(*s.Options.InterfaceName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.Queue, err = packets.NewQueue(s.Interface); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.Gateway, err = net.FindGateway(s.Interface); err != nil {
|
||||||
|
s.Events.Log(core.WARNING, "%s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.Gateway == nil || s.Gateway.IpAddress == s.Interface.IpAddress {
|
||||||
|
s.Gateway = s.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Targets = NewTargets(s, s.Interface, s.Gateway)
|
||||||
|
s.Firewall = firewall.Make(s.Interface)
|
||||||
|
|
||||||
|
s.setupEnv()
|
||||||
|
|
||||||
|
if err := s.setupReadline(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
s.setupSignals()
|
||||||
|
|
||||||
|
s.StartedAt = time.Now()
|
||||||
|
s.Active = true
|
||||||
|
|
||||||
|
s.startNetMon()
|
||||||
|
|
||||||
if *s.Options.Debug {
|
if *s.Options.Debug {
|
||||||
s.Events.Add("session.started", nil)
|
s.Events.Add("session.started", nil)
|
||||||
|
|
|
@ -195,6 +195,9 @@ func (s *Session) aliasHandler(args []string, sess *Session) error {
|
||||||
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
||||||
h.Completer = c
|
h.Completer = c
|
||||||
s.CoreHandlers = append(s.CoreHandlers, h)
|
s.CoreHandlers = append(s.CoreHandlers, h)
|
||||||
|
if len(h.Name) > s.HelpPadding {
|
||||||
|
s.HelpPadding = len(h.Name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Session) registerCoreHandlers() {
|
func (s *Session) registerCoreHandlers() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue