mirror of
https://github.com/bettercap/bettercap
synced 2025-08-19 13:09:49 -07:00
Refactor many if/else and switch for the session modules
This commit is contained in:
parent
e333df35d4
commit
1e12891bfb
10 changed files with 162 additions and 140 deletions
|
@ -27,7 +27,6 @@ func (h *CommandHandler) Parse(line string) (bool, []string) {
|
|||
result := h.Parser.FindStringSubmatch(line)
|
||||
if len(result) == h.Parser.NumSubexp()+1 {
|
||||
return true, result[1:]
|
||||
} else {
|
||||
return false, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
|
|
@ -46,11 +46,15 @@ func TestSessionCommandHandler(t *testing.T) {
|
|||
shouldNotParse := "simple123"
|
||||
shouldParse := "simple 123"
|
||||
|
||||
if parsed, _ := c.Parse(shouldNotParse); parsed {
|
||||
parsed, _ := c.Parse(shouldNotParse)
|
||||
if parsed {
|
||||
t.Fatalf("should not parse '%s'", shouldNotParse)
|
||||
} else if parsed, parts := c.Parse(shouldParse); !parsed {
|
||||
}
|
||||
parsed, parts := c.Parse(shouldParse)
|
||||
if !parsed {
|
||||
t.Fatalf("should parse '%s'", shouldParse)
|
||||
} else if !sameStrings(parts, u.parsed) {
|
||||
}
|
||||
if !sameStrings(parts, u.parsed) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.parsed, parts)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,11 +112,11 @@ func (env *Environment) Get(name string) (bool, string) {
|
|||
|
||||
func (env *Environment) GetInt(name string) (error, int) {
|
||||
if found, value := env.Get(name); found {
|
||||
if i, err := strconv.Atoi(value); err == nil {
|
||||
return nil, i
|
||||
} else {
|
||||
i, err := strconv.Atoi(value)
|
||||
if err != nil {
|
||||
return err, 0
|
||||
}
|
||||
return nil, i
|
||||
}
|
||||
|
||||
return fmt.Errorf("Not found."), 0
|
||||
|
|
|
@ -22,17 +22,20 @@ func setup(t testing.TB, envFile bool, envFileData bool) {
|
|||
teardown(t)
|
||||
|
||||
if envFile {
|
||||
if fp, err := os.OpenFile(testEnvFile, os.O_RDONLY|os.O_CREATE, 0666); err == nil {
|
||||
fp.Close()
|
||||
} else {
|
||||
fp, err := os.OpenFile(testEnvFile, os.O_RDONLY|os.O_CREATE, 0666);
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fp.Close()
|
||||
}
|
||||
|
||||
if envFileData {
|
||||
if raw, err := json.Marshal(testEnvData); err != nil {
|
||||
raw, err := json.Marshal(testEnvData)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
} else if err = ioutil.WriteFile(testEnvFile, raw, 0755); err != nil {
|
||||
}
|
||||
err = ioutil.WriteFile(testEnvFile, raw, 0755);
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
@ -45,64 +48,71 @@ func teardown(t testing.TB) {
|
|||
}
|
||||
|
||||
func TestSessionEnvironmentWithoutFile(t *testing.T) {
|
||||
if env, err := NewEnvironment(""); env == nil {
|
||||
t.Fatal("expected valid environment")
|
||||
} else if err != nil {
|
||||
env, err := NewEnvironment("")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != 0 {
|
||||
}
|
||||
if len(env.Data) != 0 {
|
||||
t.Fatalf("expected empty environment, found %d elements", len(env.Data))
|
||||
}
|
||||
t.Fatal("expected valid environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentWithInvalidFile(t *testing.T) {
|
||||
if env, err := NewEnvironment("/idontexist"); env == nil {
|
||||
t.Fatal("expected valid environment")
|
||||
} else if err != nil {
|
||||
env, err := NewEnvironment("/idontexist")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != 0 {
|
||||
}
|
||||
if len(env.Data) != 0 {
|
||||
t.Fatalf("expected empty environment, found %d elements", len(env.Data))
|
||||
}
|
||||
t.Fatal("expected valid environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentWithEmptyFile(t *testing.T) {
|
||||
setup(t, true, false)
|
||||
defer teardown(t)
|
||||
|
||||
if env, err := NewEnvironment(testEnvFile); env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != 0 {
|
||||
}
|
||||
if len(env.Data) != 0 {
|
||||
t.Fatalf("expected empty environment, found %d elements", len(env.Data))
|
||||
}
|
||||
|
||||
t.Fatal("expected environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentWithDataFile(t *testing.T) {
|
||||
setup(t, true, true)
|
||||
defer teardown(t)
|
||||
|
||||
if env, err := NewEnvironment(testEnvFile); env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != len(testEnvData) {
|
||||
}
|
||||
if len(env.Data) != len(testEnvData) {
|
||||
t.Fatalf("expected %d, found %d", len(testEnvData), len(env.Data))
|
||||
} else if !reflect.DeepEqual(env.Data, testEnvData) {
|
||||
}
|
||||
if !reflect.DeepEqual(env.Data, testEnvData) {
|
||||
t.Fatalf("unexpected contents: %v", env.Data)
|
||||
}
|
||||
t.Fatal("expected environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentSaveWithError(t *testing.T) {
|
||||
setup(t, false, false)
|
||||
defer teardown(t)
|
||||
|
||||
if env, err := NewEnvironment(testEnvFile); env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if err = env.Save("/lulz/nope"); err == nil {
|
||||
}
|
||||
if err = env.Save("/lulz/nope"); err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
t.Fatal("expected environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentSave(t *testing.T) {
|
||||
|
@ -110,24 +120,24 @@ func TestSessionEnvironmentSave(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
t.Log("expected environment")
|
||||
|
||||
env.Data["new"] = "value"
|
||||
if err = env.Save(testEnvFile); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if env, err := NewEnvironment(testEnvFile); env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
env, err = NewEnvironment(testEnvFile)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if !reflect.DeepEqual(env.Data, map[string]string{"new": "value"}) {
|
||||
}
|
||||
if !reflect.DeepEqual(env.Data, map[string]string{"new": "value"}) {
|
||||
t.Fatalf("unexpected contents: %v", env.Data)
|
||||
}
|
||||
t.Log("expected environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentHas(t *testing.T) {
|
||||
|
@ -135,13 +145,13 @@ func TestSessionEnvironmentHas(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != len(testEnvData) {
|
||||
}
|
||||
if len(env.Data) != len(testEnvData) {
|
||||
t.Fatalf("expected %d, found %d", len(testEnvData), len(env.Data))
|
||||
}
|
||||
t.Log("expected environment")
|
||||
|
||||
for k := range testEnvData {
|
||||
if !env.Has(k) {
|
||||
|
@ -161,19 +171,24 @@ func TestSessionEnvironmentSet(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if old := env.Set("people", "ok"); old != "shit" {
|
||||
}
|
||||
old := env.Set("people", "ok")
|
||||
if old != "shit" {
|
||||
t.Fatalf("unexpected old value: %s", old)
|
||||
} else if env.Data["people"] != "ok" {
|
||||
}
|
||||
if env.Data["people"] != "ok" {
|
||||
t.Fatalf("unexpected new value: %s", env.Data["people"])
|
||||
} else if old := env.Set("newkey", "nk"); old != "" {
|
||||
}
|
||||
old = env.Set("newkey", "nk")
|
||||
if old != "" {
|
||||
t.Fatalf("unexpected old value: %s", old)
|
||||
} else if env.Data["newkey"] != "nk" {
|
||||
}
|
||||
if env.Data["newkey"] != "nk" {
|
||||
t.Fatalf("unexpected new value: %s", env.Data["newkey"])
|
||||
}
|
||||
t.Log("expected environment")
|
||||
}
|
||||
|
||||
func TestSessionEnvironmentSetWithCallback(t *testing.T) {
|
||||
|
@ -181,11 +196,10 @@ func TestSessionEnvironmentSetWithCallback(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
t.Log("expected environment")
|
||||
|
||||
cbCalled := false
|
||||
old := env.WithCallback("people", "ok", func(newValue string) {
|
||||
|
@ -199,7 +213,8 @@ func TestSessionEnvironmentSetWithCallback(t *testing.T) {
|
|||
old = env.Set("people", "shitagain")
|
||||
if old != "ok" {
|
||||
t.Fatalf("unexpected old value: %s", old)
|
||||
} else if !cbCalled {
|
||||
}
|
||||
if !cbCalled {
|
||||
t.Fatal("callback has not been called")
|
||||
}
|
||||
|
||||
|
@ -215,24 +230,27 @@ func TestSessionEnvironmentGet(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != len(testEnvData) {
|
||||
}
|
||||
if len(env.Data) != len(testEnvData) {
|
||||
t.Fatalf("expected %d, found %d", len(testEnvData), len(env.Data))
|
||||
}
|
||||
t.Log("expected environment")
|
||||
|
||||
for k, v := range testEnvData {
|
||||
if found, vv := env.Get(k); !found {
|
||||
found, vv := env.Get(k)
|
||||
if !found {
|
||||
t.Fatalf("should have found %s", k)
|
||||
} else if v != vv {
|
||||
}
|
||||
if v != vv {
|
||||
t.Fatalf("unexpected value found: %s", vv)
|
||||
}
|
||||
}
|
||||
|
||||
for _, k := range []string{"these", "keys", "should", "not", "be", "found"} {
|
||||
if found, _ := env.Get(k); found {
|
||||
found, _ := env.Get(k)
|
||||
if found {
|
||||
t.Fatalf("should not have found %s", k)
|
||||
}
|
||||
}
|
||||
|
@ -243,13 +261,13 @@ func TestSessionEnvironmentGetInt(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != len(testEnvData) {
|
||||
}
|
||||
if len(env.Data) != len(testEnvData) {
|
||||
t.Fatalf("expected %d, found %d", len(testEnvData), len(env.Data))
|
||||
}
|
||||
t.Log("expected environment")
|
||||
|
||||
for k := range testEnvData {
|
||||
if err, _ := env.GetInt(k); err == nil {
|
||||
|
@ -258,9 +276,11 @@ func TestSessionEnvironmentGetInt(t *testing.T) {
|
|||
}
|
||||
|
||||
env.Data["num"] = "1234"
|
||||
if err, i := env.GetInt("num"); err != nil {
|
||||
err, i := env.GetInt("num");
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if i != 1234 {
|
||||
}
|
||||
if i != 1234 {
|
||||
t.Fatalf("unexpected integer: %d", i)
|
||||
}
|
||||
}
|
||||
|
@ -270,13 +290,14 @@ func TestSessionEnvironmentSorted(t *testing.T) {
|
|||
defer teardown(t)
|
||||
|
||||
env, err := NewEnvironment(testEnvFile)
|
||||
if env == nil {
|
||||
t.Fatal("expected environment")
|
||||
} else if err != nil {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
} else if len(env.Data) != len(testEnvData) {
|
||||
}
|
||||
if len(env.Data) != len(testEnvData) {
|
||||
t.Fatalf("expected %d, found %d", len(testEnvData), len(env.Data))
|
||||
} else if sorted := env.Sorted(); !reflect.DeepEqual(sorted, testEnvSorted) {
|
||||
}
|
||||
if sorted := env.Sorted(); !reflect.DeepEqual(sorted, testEnvSorted) {
|
||||
t.Fatalf("unexpected sorted keys: %v", sorted)
|
||||
}
|
||||
t.Log("expected environment")
|
||||
}
|
||||
|
|
|
@ -118,7 +118,8 @@ func (p *EventPool) Add(tag string, data interface{}) {
|
|||
func (p *EventPool) Log(level log.Verbosity, format string, args ...interface{}) {
|
||||
if level == log.DEBUG && !p.debug {
|
||||
return
|
||||
} else if level < log.ERROR && p.silent {
|
||||
}
|
||||
if level < log.ERROR && p.silent {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -61,60 +61,59 @@ func (m *SessionModule) Param(name string) *ModuleParam {
|
|||
|
||||
func (m SessionModule) ListParam(name string) (err error, values []string) {
|
||||
values = make([]string, 0)
|
||||
list := ""
|
||||
if err, list = m.StringParam(name); err != nil {
|
||||
err, list := m.StringParam(name);
|
||||
if err != nil {
|
||||
return
|
||||
} else {
|
||||
parts := strings.Split(list, ",")
|
||||
for _, part := range parts {
|
||||
part = str.Trim(part)
|
||||
if part != "" {
|
||||
values = append(values, part)
|
||||
}
|
||||
}
|
||||
|
||||
parts := strings.Split(list, ",")
|
||||
for _, part := range parts {
|
||||
part = str.Trim(part)
|
||||
if part != "" {
|
||||
values = append(values, part)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m SessionModule) StringParam(name string) (error, string) {
|
||||
if p, found := m.params[name]; found {
|
||||
if err, v := p.Get(m.Session); err != nil {
|
||||
p, found := m.params[name];
|
||||
if found {
|
||||
err, v := p.Get(m.Session);
|
||||
if err != nil {
|
||||
return err, ""
|
||||
} else {
|
||||
return nil, v.(string)
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("Parameter %s does not exist.", name), ""
|
||||
return nil, v.(string)
|
||||
}
|
||||
return fmt.Errorf("Parameter %s does not exist.", name), ""
|
||||
}
|
||||
|
||||
func (m SessionModule) IPParam(name string) (error, net.IP) {
|
||||
if err, v := m.StringParam(name); err != nil {
|
||||
err, v := m.StringParam(name);
|
||||
if err != nil {
|
||||
return err, nil
|
||||
} else {
|
||||
return nil, net.ParseIP(v)
|
||||
}
|
||||
return nil, net.ParseIP(v)
|
||||
}
|
||||
|
||||
func (m SessionModule) IntParam(name string) (error, int) {
|
||||
if p, found := m.params[name]; found {
|
||||
if err, v := p.Get(m.Session); err != nil {
|
||||
p, found := m.params[name];
|
||||
if found {
|
||||
err, v := p.Get(m.Session);
|
||||
if err != nil {
|
||||
return err, 0
|
||||
} else {
|
||||
return nil, v.(int)
|
||||
}
|
||||
|
||||
} else {
|
||||
return fmt.Errorf("Parameter %s does not exist.", name), 0
|
||||
return nil, v.(int)
|
||||
}
|
||||
return fmt.Errorf("Parameter %s does not exist.", name), 0
|
||||
}
|
||||
|
||||
func (m SessionModule) BoolParam(name string) (error, bool) {
|
||||
if err, v := m.params[name].Get(m.Session); err != nil {
|
||||
err, v := m.params[name].Get(m.Session);
|
||||
if err != nil {
|
||||
return err, false
|
||||
} else {
|
||||
return nil, v.(bool)
|
||||
}
|
||||
return nil, v.(bool)
|
||||
}
|
||||
|
||||
func (m *SessionModule) AddHandler(h ModuleHandler) {
|
||||
|
@ -137,9 +136,8 @@ func (m *SessionModule) SetRunning(running bool, cb func()) error {
|
|||
if running == m.Running() {
|
||||
if m.Started {
|
||||
return ErrAlreadyStarted
|
||||
} else {
|
||||
return ErrAlreadyStopped
|
||||
}
|
||||
return ErrAlreadyStopped
|
||||
}
|
||||
|
||||
m.StatusLock.Lock()
|
||||
|
|
|
@ -64,18 +64,19 @@ func (p ModuleParam) Validate(value string) (error, interface{}) {
|
|||
}
|
||||
}
|
||||
|
||||
if p.Type == STRING {
|
||||
switch p.Type {
|
||||
case STRING:
|
||||
return nil, value
|
||||
} else if p.Type == BOOL {
|
||||
case BOOL:
|
||||
lvalue := strings.ToLower(value)
|
||||
if lvalue == "true" {
|
||||
return nil, true
|
||||
} else if lvalue == "false" {
|
||||
return nil, false
|
||||
} else {
|
||||
return fmt.Errorf("Can't typecast '%s' to boolean.", value), nil
|
||||
}
|
||||
} else if p.Type == INT {
|
||||
if lvalue == "false" {
|
||||
return nil, false
|
||||
}
|
||||
return fmt.Errorf("Can't typecast '%s' to boolean.", value), nil
|
||||
case INT:
|
||||
i, err := strconv.Atoi(value)
|
||||
return err, i
|
||||
}
|
||||
|
@ -90,13 +91,14 @@ const ParamRandomMAC = "<random mac>"
|
|||
|
||||
func (p ModuleParam) Get(s *Session) (error, interface{}) {
|
||||
_, v := s.Env.Get(p.Name)
|
||||
if v == ParamIfaceName {
|
||||
switch v {
|
||||
case ParamIfaceName:
|
||||
v = s.Interface.Name()
|
||||
} else if v == ParamIfaceAddress {
|
||||
case ParamIfaceAddress:
|
||||
v = s.Interface.IpAddress
|
||||
} else if v == ParamSubnet {
|
||||
case ParamSubnet:
|
||||
v = s.Interface.CIDR()
|
||||
} else if v == ParamRandomMAC {
|
||||
case ParamRandomMAC:
|
||||
hw := make([]byte, 6)
|
||||
rand.Read(hw)
|
||||
v = net.HardwareAddr(hw).String()
|
||||
|
|
|
@ -119,9 +119,11 @@ func New() (*Session, error) {
|
|||
}
|
||||
|
||||
if *s.Options.CpuProfile != "" {
|
||||
if f, err := os.Create(*s.Options.CpuProfile); err != nil {
|
||||
f, err := os.Create(*s.Options.CpuProfile);
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if err := pprof.StartCPUProfile(f); err != nil {
|
||||
}
|
||||
if err := pprof.StartCPUProfile(f); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
@ -277,9 +279,11 @@ func (s *Session) Start() error {
|
|||
func (s *Session) Skip(ip net.IP) bool {
|
||||
if ip.IsLoopback() {
|
||||
return true
|
||||
} else if ip.Equal(s.Interface.IP) {
|
||||
}
|
||||
if ip.Equal(s.Interface.IP) {
|
||||
return true
|
||||
} else if ip.Equal(s.Gateway.IP) {
|
||||
}
|
||||
if ip.Equal(s.Gateway.IP) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
@ -324,9 +328,7 @@ func parseCapletCommand(line string) (is bool, caplet *caplets.Caplet, argv []st
|
|||
// check for any arguments
|
||||
if argc > 1 {
|
||||
file = str.Trim(parts[0])
|
||||
if argc >= 2 {
|
||||
argv = parts[1:]
|
||||
}
|
||||
argv = parts[1:]
|
||||
}
|
||||
|
||||
if err, cap := caplets.Load(file); err == nil {
|
||||
|
|
|
@ -46,11 +46,9 @@ func (s *Session) generalHelp() {
|
|||
pad = "%" + strconv.Itoa(maxLen) + "s"
|
||||
|
||||
for _, m := range s.Modules {
|
||||
status := ""
|
||||
status := tui.Red("not running")
|
||||
if m.Running() {
|
||||
status = tui.Green("running")
|
||||
} else {
|
||||
status = tui.Red("not running")
|
||||
}
|
||||
fmt.Printf(" "+tui.Yellow(pad)+" > %s\n", m.Name(), status)
|
||||
}
|
||||
|
@ -65,12 +63,11 @@ func (s *Session) moduleHelp(filter string) error {
|
|||
}
|
||||
|
||||
fmt.Println()
|
||||
status := ""
|
||||
status := tui.Red("not running")
|
||||
if m.Running() {
|
||||
status = tui.Green("running")
|
||||
} else {
|
||||
status = tui.Red("not running")
|
||||
}
|
||||
|
||||
fmt.Printf("%s (%s): %s\n\n", tui.Yellow(m.Name()), status, tui.Dim(m.Description()))
|
||||
|
||||
maxLen := 0
|
||||
|
@ -165,12 +162,11 @@ func (s *Session) exitHandler(args []string, sess *Session) error {
|
|||
}
|
||||
|
||||
func (s *Session) sleepHandler(args []string, sess *Session) error {
|
||||
if secs, err := strconv.Atoi(args[0]); err == nil {
|
||||
secs, err := strconv.Atoi(args[0]);
|
||||
if err == nil {
|
||||
time.Sleep(time.Duration(secs) * time.Second)
|
||||
return nil
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *Session) getHandler(args []string, sess *Session) error {
|
||||
|
@ -277,9 +273,8 @@ func (s *Session) aliasHandler(args []string, sess *Session) error {
|
|||
|
||||
if s.Lan.SetAliasFor(mac, alias) {
|
||||
return nil
|
||||
} else {
|
||||
return fmt.Errorf("Could not find endpoint %s", mac)
|
||||
}
|
||||
return fmt.Errorf("Could not find endpoint %s", mac)
|
||||
}
|
||||
|
||||
func (s *Session) addHandler(h CommandHandler, c *readline.PrefixCompleter) {
|
||||
|
|
|
@ -74,11 +74,11 @@ func ParseCommands(line string) []string {
|
|||
func (s *Session) parseEnvTokens(str string) (string, error) {
|
||||
for _, m := range reEnvVarCapture.FindAllString(str, -1) {
|
||||
varName := strings.Trim(strings.Replace(m, "env.", "", -1), "{}")
|
||||
if found, value := s.Env.Get(varName); found {
|
||||
str = strings.Replace(str, m, value, -1)
|
||||
} else {
|
||||
found, value := s.Env.Get(varName);
|
||||
if !found {
|
||||
return "", fmt.Errorf("variable '%s' is not defined", varName)
|
||||
}
|
||||
str = strings.Replace(str, m, value, -1)
|
||||
}
|
||||
return str, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue