-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
*: add metadata support along with NVD CVSS
- Loading branch information
1 parent
c05848e
commit 5fdd9d1
Showing
17 changed files
with
522 additions
and
264 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
// 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 updater | ||
|
||
import ( | ||
"sync" | ||
|
||
"github.com/coreos/clair/database" | ||
) | ||
|
||
var metadataFetchers = make(map[string]MetadataFetcher) | ||
|
||
type VulnerabilityWithLock struct { | ||
*database.Vulnerability | ||
Lock sync.Mutex | ||
} | ||
|
||
// MetadataFetcher | ||
type MetadataFetcher interface { | ||
// Load runs right before the Updater calls AddMetadata for each vulnerabilities. | ||
Load(database.Datastore) error | ||
|
||
// AddMetadata adds metadata to the given database.Vulnerability. | ||
// It is expected that the fetcher uses .Lock.Lock() when manipulating the Metadata map. | ||
AddMetadata(*VulnerabilityWithLock) error | ||
|
||
// Unload runs right after the Updater finished calling AddMetadata for every vulnerabilities. | ||
Unload() | ||
|
||
// Clean deletes any allocated resources. | ||
// It is invoked when Clair stops. | ||
Clean() | ||
} | ||
|
||
// RegisterFetcher makes a Fetcher available by the provided name. | ||
// If Register is called twice with the same name or if driver is nil, | ||
// it panics. | ||
func RegisterMetadataFetcher(name string, f MetadataFetcher) { | ||
if name == "" { | ||
panic("updater: could not register a MetadataFetcher with an empty name") | ||
} | ||
|
||
if f == nil { | ||
panic("updater: could not register a nil MetadataFetcher") | ||
} | ||
|
||
if _, dup := fetchers[name]; dup { | ||
panic("updater: RegisterMetadataFetcher called twice for " + name) | ||
} | ||
|
||
metadataFetchers[name] = f | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package nvd | ||
|
||
import "io" | ||
|
||
// NestedReadCloser wraps an io.Reader and implements io.ReadCloser by closing every embed | ||
// io.ReadCloser. | ||
// It allows chaining io.ReadCloser together and still keep the ability to close them all in a | ||
// simple manner. | ||
type NestedReadCloser struct { | ||
io.Reader | ||
NestedReadClosers []io.ReadCloser | ||
} | ||
|
||
// Close closes the gzip.Reader and the underlying io.ReadCloser. | ||
func (nrc *NestedReadCloser) Close() { | ||
for _, nestedReadCloser := range nrc.NestedReadClosers { | ||
nestedReadCloser.Close() | ||
} | ||
} |
Oops, something went wrong.