Skip to content

Commit 92a67d1

Browse files
MaineK00nclaude
andcommitted
feat(scanner): support disablerepo option for yum/dnf
Add Disablerepo config field so users can pass --disablerepo=<repo> to repoquery on RHEL-family hosts, mirroring the existing Enablerepo option. Useful for excluding third-party repos (e.g. EPEL) from updatable package scans. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent da0e250 commit 92a67d1

5 files changed

Lines changed: 19 additions & 3 deletions

File tree

config/config.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,10 @@ type ServerInfo struct {
243243
IgnorePkgsRegexp []string `toml:"ignorePkgsRegexp,omitempty" json:"ignorePkgsRegexp,omitempty"`
244244
UUIDs map[string]string `toml:"uuids,omitempty" json:"uuids,omitempty"`
245245
Memo string `toml:"memo,omitempty" json:"memo,omitempty"`
246-
Enablerepo []string `toml:"enablerepo,omitempty" json:"enablerepo,omitempty"` // For CentOS, Alma, Rocky, RHEL, Amazon
247-
Optional map[string]any `toml:"optional,omitempty" json:"optional,omitempty"` // Optional key-value set that will be outputted to JSON
248-
Lockfiles []string `toml:"lockfiles,omitempty" json:"lockfiles,omitempty"` // ie) path/to/package-lock.json
246+
Enablerepo []string `toml:"enablerepo,omitempty" json:"enablerepo,omitempty"` // For CentOS, Alma, Rocky, RHEL, Amazon, Fedora
247+
Disablerepo []string `toml:"disablerepo,omitempty" json:"disablerepo,omitempty"` // For CentOS, Alma, Rocky, RHEL, Amazon, Fedora
248+
Optional map[string]any `toml:"optional,omitempty" json:"optional,omitempty"` // Optional key-value set that will be outputted to JSON
249+
Lockfiles []string `toml:"lockfiles,omitempty" json:"lockfiles,omitempty"` // ie) path/to/package-lock.json
249250
FindLock bool `toml:"findLock,omitempty" json:"findLock,omitempty"`
250251
FindLockDirs []string `toml:"findLockDirs,omitempty" json:"findLockDirs,omitempty"`
251252
Type string `toml:"type,omitempty" json:"type,omitempty"` // "pseudo" or ""

config/tomlloader.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ func (c TOMLLoader) Load(pathToToml string) error {
124124
}
125125
}
126126

127+
if len(server.Disablerepo) == 0 {
128+
server.Disablerepo = Conf.Default.Disablerepo
129+
}
130+
127131
if server.PortScan.ScannerBinPath != "" {
128132
server.PortScan.IsUseExternalScanner = true
129133
}

saas/uuid.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ func cleanForTOMLEncoding(server config.ServerInfo, def config.ServerInfo) confi
191191
server.Enablerepo = nil
192192
}
193193

194+
if reflect.DeepEqual(server.Disablerepo, def.Disablerepo) {
195+
server.Disablerepo = nil
196+
}
197+
194198
for k, v := range def.Optional {
195199
if vv, ok := server.Optional[k]; ok && v == vv {
196200
delete(server.Optional, k)

scanner/redhatbase.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,9 @@ func (o *redhatBase) scanUpdatablePackages() (models.Packages, error) {
788788
for _, repo := range o.getServerInfo().Enablerepo {
789789
cmd += " --enablerepo=" + repo
790790
}
791+
for _, repo := range o.getServerInfo().Disablerepo {
792+
cmd += " --disablerepo=" + repo
793+
}
791794

792795
r := o.exec(util.PrependProxyEnv(cmd), o.sudo.repoquery())
793796
if !r.isSuccess() {

subcmds/discover.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ func printConfigToml(ips []string) (err error) {
205205
#containerType = "docker" #or "lxd" or "lxc" default: docker
206206
#containersIncluded = ["${running}"]
207207
#containersExcluded = ["container_name_a"]
208+
#enablerepo = ["base", "updates"] # For RHEL-family. Currently only "base" and "updates" are allowed
209+
#disablerepo = ["epel"] # For RHEL-family
208210
209211
# https://vuls.io/docs/en/config.toml.html#servers-section
210212
[servers]
@@ -231,6 +233,8 @@ host = "{{$ip}}"
231233
#containerType = "docker" #or "lxd" or "lxc" default: docker
232234
#containersIncluded = ["${running}"]
233235
#containersExcluded = ["container_name_a"]
236+
#enablerepo = ["base", "updates"] # For RHEL-family. Currently only "base" and "updates" are allowed
237+
#disablerepo = ["epel"] # For RHEL-family
234238
#confidenceScoreOver = 80
235239
236240
#[servers.{{index $names $i}}.containers.container_name_a]

0 commit comments

Comments
 (0)