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()
}
func (s *Session) RunCaplet(filename string) error {
s.Events.Log(core.INFO, "Reading from caplet %s ...", filename)
func (s *Session) getCapletFilePath(caplet string) string {
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 {
return err
}
@ -543,11 +566,8 @@ func (s *Session) isCapletCommand(line string) (is bool, filename string, argv [
}
}
for _, path := range CapPaths {
filename := filepath.Join(path, file) + ".cap"
if core.Exists(filename) {
return true, filename, argv
}
if filename := s.getCapletFilePath(file); filename != "" {
return true, filename, argv
}
return false, "", nil