diff options
Diffstat (limited to 'plugins/server/command.go')
-rw-r--r-- | plugins/server/command.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/plugins/server/command.go b/plugins/server/command.go new file mode 100644 index 00000000..e0b61896 --- /dev/null +++ b/plugins/server/command.go @@ -0,0 +1,33 @@ +package server + +import ( + "os" + "regexp" + + "github.com/spiral/errors" +) + +// pattern for the path finding +const pattern string = `^\/*([A-z/.:-]+\.(php|sh|ph))$` + +func (server *Plugin) scanCommand(cmd []string) error { + const op = errors.Op("server_command_scan") + r, err := regexp.Compile(pattern) + if err != nil { + return err + } + + for i := 0; i < len(cmd); i++ { + if r.MatchString(cmd[i]) { + // try to stat + _, err := os.Stat(cmd[i]) + if err != nil { + return errors.E(op, errors.FileNotFound, err) + } + + // stat successful + return nil + } + } + return errors.E(errors.Str("scan failed, possible path not found"), op) +} |