Documentation ¶
Overview ¶
Package session contains code to manage the interactive session, modules, environment, etc.
Index ¶
- Constants
- Variables
- func ParseCommands(line string) []string
- type CommandHandler
- type Environment
- func (env *Environment) Get(name string) (bool, string)
- func (env *Environment) GetInt(name string) (error, int)
- func (env *Environment) Has(name string) bool
- func (env *Environment) Load(fileName string) error
- func (env *Environment) Save(fileName string) error
- func (env *Environment) Set(name, value string) string
- func (env *Environment) Sorted() []string
- func (env *Environment) WithCallback(name, value string, cb EnvironmentChangedCallback) string
- type EnvironmentChangedCallback
- type Event
- type EventPool
- func (p *EventPool) Add(tag string, data interface{})
- func (p *EventPool) Clear()
- func (p *EventPool) Listen() <-chan Event
- func (p *EventPool) Log(level log.Verbosity, format string, args ...interface{})
- func (p *EventPool) SetDebug(d bool)
- func (p *EventPool) SetSilent(s bool)
- func (p *EventPool) Sorted() []Event
- func (p *EventPool) Unlisten(listener <-chan Event)
- type JSONModule
- type JSONModuleHandler
- type JSONModuleParam
- type LogMessage
- type Module
- type ModuleHandler
- type ModuleList
- type ModuleParam
- func NewBoolParameter(name string, def_value string, desc string) *ModuleParam
- func NewDecimalParameter(name string, def_value string, desc string) *ModuleParam
- func NewIntParameter(name string, def_value string, desc string) *ModuleParam
- func NewModuleParameter(name string, def_value string, t ParamType, validator string, desc string) *ModuleParam
- func NewStringParameter(name string, def_value string, validator string, desc string) *ModuleParam
- func (p ModuleParam) Dump(padding int) string
- func (p ModuleParam) Get(s *Session) (error, interface{})
- func (p ModuleParam) Help(padding int) string
- func (p ModuleParam) MarshalJSON() ([]byte, error)
- func (p ModuleParam) Register(s *Session)
- func (p ModuleParam) Validate(value string) (error, interface{})
- type ParamType
- type Prompt
- type Session
- func (s *Session) Close()
- func (s *Session) FindMAC(ip net.IP, probe bool) (net.HardwareAddr, error)
- func (s *Session) IsOn(moduleName string) bool
- func (s *Session) Lock()
- func (s *Session) Module(name string) (err error, mod Module)
- func (s *Session) ReadLine() (string, error)
- func (s *Session) Refresh()
- func (s *Session) Register(mod Module) error
- func (s *Session) Run(line string) error
- func (s *Session) RunCaplet(filename string) error
- func (s *Session) Skip(ip net.IP) bool
- func (s *Session) Start() error
- func (s *Session) Unlock()
- type SessionModule
- func (m *SessionModule) AddHandler(h ModuleHandler)
- func (m *SessionModule) AddParam(p *ModuleParam) *ModuleParam
- func (m SessionModule) BoolParam(name string) (error, bool)
- func (m SessionModule) DecParam(name string) (error, float64)
- func (m *SessionModule) Handlers() []ModuleHandler
- func (m SessionModule) IPParam(name string) (error, net.IP)
- func (m SessionModule) IntParam(name string) (error, int)
- func (m SessionModule) ListParam(name string) (err error, values []string)
- func (m *SessionModule) Param(name string) *ModuleParam
- func (m *SessionModule) Parameters() map[string]*ModuleParam
- func (m *SessionModule) Running() bool
- func (m *SessionModule) SetRunning(running bool, cb func()) error
- func (m SessionModule) StringParam(name string) (error, string)
- type UnknownCommandCallback
Constants ¶
View Source
const ( PromptVariable = "$" DefaultPrompt = "{by}{fw}{cidr} {fb}> {env.iface.ipv4} {reset} {bold}» {reset}" )
View Source
const (
HistoryFile = "~/bettercap.history"
)
View Source
const IPv4Validator = `^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$`
View Source
const ParamIfaceAddress = "<interface address>"
View Source
const ParamIfaceName = "<interface name>"
View Source
const ParamRandomMAC = "<random mac>"
View Source
const ParamSubnet = "<entire subnet>"
Variables ¶
View Source
var ( I = (*Session)(nil) ErrAlreadyStarted = errors.New("module is already running") ErrAlreadyStopped = errors.New("module is not running") ErrNotSupported = errors.New("this component is not supported on this OS") )
View Source
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.Stats.Sent) }, "{net.sent.human}": func(s *Session) string { return humanize.Bytes(s.Queue.Stats.Sent) }, "{net.received}": func(s *Session) string { return fmt.Sprintf("%d", s.Queue.Stats.Received) }, "{net.received.human}": func(s *Session) string { return humanize.Bytes(s.Queue.Stats.Received) }, "{net.packets}": func(s *Session) string { return fmt.Sprintf("%d", s.Queue.Stats.PktReceived) }, "{net.errors}": func(s *Session) string { return fmt.Sprintf("%d", s.Queue.Stats.Errors) }, } )
Functions ¶
func ParseCommands ¶
Types ¶
type CommandHandler ¶
type CommandHandler struct { Name string Description string Completer *readline.PrefixCompleter Parser *regexp.Regexp Exec func(args []string, s *Session) error }
func NewCommandHandler ¶
type Environment ¶
type Environment struct { sync.Mutex Data map[string]string `json:"data"` // contains filtered or unexported fields }
func NewEnvironment ¶
func NewEnvironment(envFile string) (*Environment, error)
func (*Environment) Has ¶
func (env *Environment) Has(name string) bool
func (*Environment) Load ¶
func (env *Environment) Load(fileName string) error
func (*Environment) Save ¶
func (env *Environment) Save(fileName string) error
func (*Environment) Set ¶
func (env *Environment) Set(name, value string) string
func (*Environment) Sorted ¶
func (env *Environment) Sorted() []string
func (*Environment) WithCallback ¶
func (env *Environment) WithCallback(name, value string, cb EnvironmentChangedCallback) string
type EnvironmentChangedCallback ¶
type EnvironmentChangedCallback func(newValue string)
type Event ¶
type JSONModule ¶
type JSONModule struct { Name string `json:"name"` Description string `json:"description"` Author string `json:"author"` Parameters map[string]*ModuleParam `json:"parameters"` Handlers []ModuleHandler `json:"handlers"` Running bool `json:"running"` }
type JSONModuleHandler ¶
type JSONModuleParam ¶
type LogMessage ¶
type Module ¶
type Module interface { Name() string Description() string Author() string Handlers() []ModuleHandler Parameters() map[string]*ModuleParam Running() bool Start() error Stop() error }
type ModuleHandler ¶
type ModuleHandler struct { Name string Description string Parser *regexp.Regexp Exec func(args []string) error }
func NewModuleHandler ¶
func (*ModuleHandler) Help ¶
func (h *ModuleHandler) Help(padding int) string
func (ModuleHandler) MarshalJSON ¶
func (h ModuleHandler) MarshalJSON() ([]byte, error)
type ModuleList ¶
type ModuleList []Module
func (ModuleList) MarshalJSON ¶
func (mm ModuleList) MarshalJSON() ([]byte, error)
type ModuleParam ¶
type ModuleParam struct { Name string Type ParamType Value string Description string Validator *regexp.Regexp }
func NewBoolParameter ¶
func NewBoolParameter(name string, def_value string, desc string) *ModuleParam
func NewDecimalParameter ¶
func NewDecimalParameter(name string, def_value string, desc string) *ModuleParam
func NewIntParameter ¶
func NewIntParameter(name string, def_value string, desc string) *ModuleParam
func NewModuleParameter ¶
func NewStringParameter ¶
func NewStringParameter(name string, def_value string, validator string, desc string) *ModuleParam
func (ModuleParam) Dump ¶
func (p ModuleParam) Dump(padding int) string
func (ModuleParam) Get ¶
func (p ModuleParam) Get(s *Session) (error, interface{})
func (ModuleParam) Help ¶
func (p ModuleParam) Help(padding int) string
func (ModuleParam) MarshalJSON ¶
func (p ModuleParam) MarshalJSON() ([]byte, error)
func (ModuleParam) Register ¶
func (p ModuleParam) Register(s *Session)
func (ModuleParam) Validate ¶
func (p ModuleParam) Validate(value string) (error, interface{})
type Session ¶
type Session struct { Options core.Options `json:"options"` Interface *network.Endpoint `json:"interface"` Gateway *network.Endpoint `json:"gateway"` Env *Environment `json:"env"` Lan *network.LAN `json:"lan"` WiFi *network.WiFi `json:"wifi"` BLE *network.BLE `json:"ble"` Queue *packets.Queue `json:"packets"` StartedAt time.Time `json:"started_at"` Active bool `json:"active"` GPS nmea.GNGGA `json:"gps"` Modules ModuleList `json:"modules"` Input *readline.Instance `json:"-"` Prompt Prompt `json:"-"` CoreHandlers []CommandHandler `json:"-"` Events *EventPool `json:"-"` UnkCmdCallback UnknownCommandCallback `json:"-"` Firewall firewall.FirewallManager `json:"-"` }
type SessionModule ¶
type SessionModule struct { Name string `json:"name"` Session *Session `json:"-"` Started bool `json:"started"` StatusLock *sync.RWMutex `json:"-"` // contains filtered or unexported fields }
func NewSessionModule ¶
func NewSessionModule(name string, s *Session) SessionModule
func (*SessionModule) AddHandler ¶
func (m *SessionModule) AddHandler(h ModuleHandler)
func (*SessionModule) AddParam ¶
func (m *SessionModule) AddParam(p *ModuleParam) *ModuleParam
func (*SessionModule) Handlers ¶
func (m *SessionModule) Handlers() []ModuleHandler
func (SessionModule) ListParam ¶
func (m SessionModule) ListParam(name string) (err error, values []string)
func (*SessionModule) Param ¶
func (m *SessionModule) Param(name string) *ModuleParam
func (*SessionModule) Parameters ¶
func (m *SessionModule) Parameters() map[string]*ModuleParam
func (*SessionModule) Running ¶
func (m *SessionModule) Running() bool
func (*SessionModule) SetRunning ¶
func (m *SessionModule) SetRunning(running bool, cb func()) error
func (SessionModule) StringParam ¶
func (m SessionModule) StringParam(name string) (error, string)
type UnknownCommandCallback ¶
Click to show internal directories.
Click to hide internal directories.