Skip to content

Commit

Permalink
cleanup and pid filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
kcq committed Feb 28, 2020
1 parent d4659b1 commit aa291a7
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 21 deletions.
41 changes: 41 additions & 0 deletions internal/app/sensor/artifacts.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ import (
)

const (
pidFileSuffix = ".pid"
varRunDir = "/var/run/"
ngxBinName = "/nginx"
ngxSubDir = "/nginx/"
ngxCommonTemp = "/var/lib/nginx"
Expand Down Expand Up @@ -297,9 +299,25 @@ func (p *artifactStore) saveArtifacts() {
}
log.Debugf("saveArtifacts - merged newPerms(%v): %+v", len(newPerms), newPerms)

dstRootPath := fmt.Sprintf("%s/files", p.storeLocation)
log.Debugf("saveArtifacts - prep file artifacts root dir - %v", dstRootPath)
err := os.MkdirAll(dstRootPath, 0777)
errutil.FailOn(err)

//TODO: use exludePaths to filter discovered files
log.Debugf("saveArtifacts - copy files (%v)", len(p.fileMap))
for srcFileName := range p.fileMap {
//filter out pid files (todo: have a flag to enable/disable these capabilities)
if isKnownPidFilePath(srcFileName) {
log.Debugf("saveArtifacts - copy files - skipping known pid file (%v)", srcFileName)
continue
}

if hasPidFileSuffix(srcFileName) {
log.Debugf("saveArtifacts - copy files - skipping a pid file (%v)", srcFileName)
continue
}

dstFilePath := fmt.Sprintf("%s/files%s", p.storeLocation, srcFileName)
log.Debug("saveArtifacts - saving file data => ", dstFilePath)
//err := cpFile(fileName, filePath)
Expand Down Expand Up @@ -717,6 +735,29 @@ func isRbGemSpecFile(filePath string) bool {
return false
}

var pidFilePathSuffixes = []string{
"/tmp/nginx.pid",
"/tmp/pids/server.pid",
}

func isKnownPidFilePath(filePath string) bool {
for _, suffix := range pidFilePathSuffixes {
if strings.HasSuffix(filePath, suffix) {
return true
}
}

return false
}

func hasPidFileSuffix(filePath string) bool {
if strings.HasSuffix(filePath, pidFileSuffix) {
return true
}

return false
}

func isNgxArtifact(filePath string) bool {
if strings.Contains(filePath, ngxSubDir) || strings.HasSuffix(filePath, ngxBinName) {
return true
Expand Down
1 change: 1 addition & 0 deletions internal/app/sensor/data_processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ func findSymlinks(files []string, mp string) map[string]*report.ArtifactProps {
}
}

//todo: skip "/proc/..." references
evalLinkRef, err := filepath.EvalSymlinks(absLinkRef)
if err != nil {
log.Warnf("findSymlinks.checkPathSymlinks - error evaluating symlink (%v) -> %v => %v", err, symlinkFileName, absLinkRef)
Expand Down
54 changes: 33 additions & 21 deletions pkg/util/fsutil/fsutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,14 @@ func CopySymlinkFile(clone bool, src, dst string, makeDir bool) error {

if sysStat, ok := srcInfo.Sys().(*syscall.Stat_t); ok {
ssi := SysStatInfo(sysStat)
if err := UpdateSymlinkTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopySymlinkFile(%v,%v) - UpdateSymlinkTimes error", src, dst)
}
if ssi.Ok {
if err := UpdateSymlinkTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopySymlinkFile(%v,%v) - UpdateSymlinkTimes error", src, dst)
}

if err := os.Lchown(dst, int(ssi.Uid), int(ssi.Gid)); err != nil {
log.Warnln("CopySymlinkFile(%v,%v)- unable to change owner", src, dst)
if err := os.Lchown(dst, int(ssi.Uid), int(ssi.Gid)); err != nil {
log.Warnln("CopySymlinkFile(%v,%v)- unable to change owner", src, dst)
}
}
} else {
log.Warnf("CopySymlinkFile(%v,%v)- unable to get Stat_t", src, dst)
Expand Down Expand Up @@ -302,12 +304,14 @@ func cloneDirPath(src, dst string) {
log.Warnf("cloneDirPath() - unable to set perms (%v) - %v", dir.dst, err)
}

if err := UpdateFileTimes(dir.dst, dir.sys.Atime, dir.sys.Mtime); err != nil {
log.Warnf("cloneDirPath() - UpdateFileTimes error (%v) - %v", dir.dst, err)
}
if dir.sys.Ok {
if err := UpdateFileTimes(dir.dst, dir.sys.Atime, dir.sys.Mtime); err != nil {
log.Warnf("cloneDirPath() - UpdateFileTimes error (%v) - %v", dir.dst, err)
}

if err := os.Chown(dir.dst, int(dir.sys.Uid), int(dir.sys.Gid)); err != nil {
log.Warnln("cloneDirPath()- unable to change owner (%v) - %v", dir.dst, err)
if err := os.Chown(dir.dst, int(dir.sys.Uid), int(dir.sys.Gid)); err != nil {
log.Warnln("cloneDirPath()- unable to change owner (%v) - %v", dir.dst, err)
}
}
}
}
Expand Down Expand Up @@ -351,8 +355,10 @@ func CopyRegularFile(clone bool, src, dst string, makeDir bool) error {
if err == nil {
if sysStat, ok := srcDirInfo.Sys().(*syscall.Stat_t); ok {
ssi := SysStatInfo(sysStat)
if err := UpdateFileTimes(dstDirPath, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile() - UpdateFileTimes(%v) error - %v", dstDirPath, err)
if ssi.Ok {
if err := UpdateFileTimes(dstDirPath, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile() - UpdateFileTimes(%v) error - %v", dstDirPath, err)
}
}
}
} else {
Expand Down Expand Up @@ -393,12 +399,14 @@ func CopyRegularFile(clone bool, src, dst string, makeDir bool) error {

if sysStat, ok := srcFileInfo.Sys().(*syscall.Stat_t); ok {
ssi := SysStatInfo(sysStat)
if err := UpdateFileTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile(%v,%v) - UpdateFileTimes error", src, dst)
}
if ssi.Ok {
if err := UpdateFileTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile(%v,%v) - UpdateFileTimes error", src, dst)
}

if err := d.Chown(int(ssi.Uid), int(ssi.Gid)); err != nil {
log.Warnln("CopyRegularFile(%v,%v)- unable to change owner", src, dst)
if err := d.Chown(int(ssi.Uid), int(ssi.Gid)); err != nil {
log.Warnln("CopyRegularFile(%v,%v)- unable to change owner", src, dst)
}
}
} else {
log.Warnf("CopyRegularFile(%v,%v)- unable to get Stat_t", src, dst)
Expand All @@ -410,8 +418,10 @@ func CopyRegularFile(clone bool, src, dst string, makeDir bool) error {

if sysStat, ok := srcFileInfo.Sys().(*syscall.Stat_t); ok {
ssi := SysStatInfo(sysStat)
if err := UpdateFileTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile(%v,%v) - UpdateFileTimes error", src, dst)
if ssi.Ok {
if err := UpdateFileTimes(dst, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("CopyRegularFile(%v,%v) - UpdateFileTimes error", src, dst)
}
}
} else {
log.Warnf("CopyRegularFile(%v,%v)- unable to get Stat_t", src, dst)
Expand Down Expand Up @@ -495,8 +505,10 @@ func copyFileObjectHandler(
if err == nil {
if sysStat, ok := srcDirInfo.Sys().(*syscall.Stat_t); ok {
ssi := SysStatInfo(sysStat)
if err := UpdateFileTimes(targetPath, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("copyFileObjectHandler() - UpdateFileTimes(%v) error - %v", targetPath, err)
if ssi.Ok {
if err := UpdateFileTimes(targetPath, ssi.Atime, ssi.Mtime); err != nil {
log.Warnf("copyFileObjectHandler() - UpdateFileTimes(%v) error - %v", targetPath, err)
}
}
}
} else {
Expand Down

0 comments on commit aa291a7

Please sign in to comment.