This commit is contained in:
Tomoya AMACHI
2019-04-25 01:05:15 +09:00
parent 5529c83920
commit 6a2ca8f74f
8 changed files with 352 additions and 4 deletions

View File

@@ -0,0 +1,51 @@
package amazonlinux
import (
"bufio"
"bytes"
"errors"
"fmt"
"strings"
"github.com/knqyf263/fanal/analyzer/os"
"github.com/knqyf263/fanal/analyzer"
"github.com/knqyf263/fanal/extractor"
)
func init() {
analyzer.RegisterOSAnalyzer(&amazonlinuxOSAnalyzer{})
}
type amazonlinuxOSAnalyzer struct{}
func (a amazonlinuxOSAnalyzer) Analyze(fileMap extractor.FileMap) (analyzer.OS, error) {
for _, filename := range a.RequiredFiles() {
file, ok := fileMap[filename]
if !ok {
continue
}
scanner := bufio.NewScanner(bytes.NewBuffer(file))
for scanner.Scan() {
line := scanner.Text()
fields := strings.Fields(line)
// Amazon Linuxという名称が確認できたときのみ
if strings.HasPrefix(line, "Amazon Linux release 2") {
return analyzer.OS{
Family: os.Amazon,
Name: fmt.Sprintf("%s %s", fields[3], fields[4]),
}, nil
} else if strings.HasPrefix(line, "Amazon Linux") {
return analyzer.OS{
Family: os.Amazon,
Name: strings.Join(fields[2:], " "),
}, nil
}
}
}
return analyzer.OS{}, errors.New("amzn: Not match")
}
func (a amazonlinuxOSAnalyzer) RequiredFiles() []string {
return []string{"etc/system-release"}
}