89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
|
// Copyright 2015 clair authors
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
package sle
|
||
|
|
||
|
import (
|
||
|
"regexp"
|
||
|
|
||
|
"github.com/coreos/clair/updater"
|
||
|
"github.com/coreos/clair/updater/fetchers/opensuse"
|
||
|
"github.com/coreos/clair/utils/oval"
|
||
|
"github.com/coreos/pkg/capnslog"
|
||
|
)
|
||
|
|
||
|
var log = capnslog.NewPackageLogger("github.com/coreos/clair", "updater/fetchers/sle")
|
||
|
var opensuseInfo = &opensuse.OpenSUSEInfo{}
|
||
|
|
||
|
func init() {
|
||
|
sleInfo := &SLEInfo{}
|
||
|
|
||
|
updater.RegisterFetcher(sleInfo.DistName(),
|
||
|
&oval.OvalFetcher{OsInfo: sleInfo})
|
||
|
}
|
||
|
|
||
|
// SLEInfo implements oval.OsInfo interface
|
||
|
// See oval.OsInfo for more info on what each method is
|
||
|
// SLE and openSUSE shares most of the code, there are just subtle diffs on
|
||
|
// the name and versions of the distribution
|
||
|
type SLEInfo struct {
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) SecToken() string {
|
||
|
return opensuseInfo.SecToken()
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) IgnoredCriterions() []string {
|
||
|
return opensuseInfo.IgnoredCriterions()
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) OvalURI() string {
|
||
|
return opensuseInfo.OvalURI()
|
||
|
}
|
||
|
|
||
|
// This differs from openSUSE
|
||
|
func (f *SLEInfo) DistName() string {
|
||
|
return "sle"
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) Namespace() string {
|
||
|
return f.DistName()
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) ParseOsVersion(comment string) string {
|
||
|
return opensuseInfo.ParseOsVersionR(comment, f.CritSystem())
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) ParsePackageNameVersion(comment string) (string, string) {
|
||
|
return opensuseInfo.ParsePackageNameVersion(comment)
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) ParseFilenameDist(line string) string {
|
||
|
return opensuseInfo.ParseFilenameDistR(line, f.DistRegexp(), f.DistMinVersion())
|
||
|
}
|
||
|
|
||
|
// These are diffs with openSUSE
|
||
|
|
||
|
func (f *SLEInfo) CritSystem() *regexp.Regexp {
|
||
|
return regexp.MustCompile(`SUSE Linux Enterprise Server [^0-9]*(\d+)\s*(SP(\d+)|) is installed`)
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) DistRegexp() *regexp.Regexp {
|
||
|
return regexp.MustCompile(`suse.linux.enterprise.(\d+).xml`)
|
||
|
}
|
||
|
|
||
|
func (f *SLEInfo) DistMinVersion() float64 {
|
||
|
return 11.4
|
||
|
}
|