fix: correct lookup of caplet files from multiple default paths

This commit is contained in:
evilsocket 2018-08-21 13:45:46 +02:00
commit da5cbea7b1
No known key found for this signature in database
GPG key ID: 1564D7F30393A456

View file

@ -504,10 +504,33 @@ func (s *Session) ReadLine() (string, error) {
return s.Input.Readline() return s.Input.Readline()
} }
func (s *Session) RunCaplet(filename string) error { func (s *Session) getCapletFilePath(caplet string) string {
s.Events.Log(core.INFO, "Reading from caplet %s ...", filename) if core.Exists(caplet) {
return caplet
}
input, err := os.Open(filename) for _, path := range CapPaths {
filename := filepath.Join(path, caplet)
if !strings.HasSuffix(filename, ".cap") {
filename += ".cap"
}
if core.Exists(filename) {
return filename
}
}
return ""
}
func (s *Session) RunCaplet(filename string) error {
var caplet string
if caplet = s.getCapletFilePath(filename); caplet == "" {
return fmt.Errorf("could not load caplet from %s", filename)
}
s.Events.Log(core.INFO, "Reading from caplet %s ...", caplet)
input, err := os.Open(caplet)
if err != nil { if err != nil {
return err return err
} }
@ -543,11 +566,8 @@ func (s *Session) isCapletCommand(line string) (is bool, filename string, argv [
} }
} }
for _, path := range CapPaths { if filename := s.getCapletFilePath(file); filename != "" {
filename := filepath.Join(path, file) + ".cap" return true, filename, argv
if core.Exists(filename) {
return true, filename, argv
}
} }
return false, "", nil return false, "", nil