tenablesc

package
v0.0.0-...-24213f2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RecastSeverityInfo   = "0"
	RecastSeverityLow    = "1"
	RecastSeverityMedium = "2"
	RecastSeverityHigh   = "3"
)
View Source
const (
	DefaultUserAgent = "tenable.sc go client"
)

Variables

View Source
var DefaultTimeScope = time.Time{}

Functions

This section is empty.

Types

type AcceptRiskRule

type AcceptRiskRule struct {
	AcceptRiskRuleBaseFields
	Repository *BaseInfo
	// HostValue will be rendered to/from the API-native structure as necessary based on HostType.
	HostValue string
}

AcceptRiskRule represents the Risk Rule structure in https://docs.tenable.com/tenablesc/api/Accept-Risk-Rule.htm

type AcceptRiskRuleBaseFields

type AcceptRiskRuleBaseFields struct {
	ID     string    `json:"id,omitempty"`
	Plugin *BaseInfo `json:"plugin,omitempty"`
	// HostType may be 'all', 'asset', 'ip', or 'uuid'
	HostType     string              `json:"hostType,omitempty"`
	Port         string              `json:"port,omitempty"`
	Protocol     string              `json:"protocol,omitempty"`
	Comments     string              `json:"comments,omitempty"`
	Expires      string              `json:"expires,omitempty"`
	Status       string              `json:"status,omitempty"`
	CreatedTime  UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"`
}

AcceptRiskRuleBaseFields are the fields renderable directly both to and from the API.

Requests take a list of repositories while all responses only ever return a single repository.
HostValue response structure also varies depending on type; the client masks out this conversion
 to and from the API structures.

type AgentGroup

type AgentGroup struct {
	BaseInfo
	NessusManagerID string `json:"nessusManagerID,omitempty"`
	RemoteID        int    `json:"remoteID,omitempty"`
}

AgentGroup is the fields describing an Agent Group reference in https://docs.tenable.com/tenablesc/api/Agent-Scan.htm ; for input, only the ID is needed.

type AgentScan

type AgentScan struct {
	BaseInfo
	Repository    BaseInfo       `json:"repository,omitempty"`
	NessusManager BaseInfo       `json:"nessusManager,omitempty"`
	ScanWindow    ProbablyString `json:"scanWindow,omitempty"`
	AgentGroups   []AgentGroup   `json:"agentGroups,omitempty"`
	Type          string         `json:"type,omitempty"`
	EmailOnLaunch FakeBool       `json:"emailOnLaunch,omitempty"`
	EmailOnFinish FakeBool       `json:"emailOnFinish,omitempty"`
	Schedule      *ScanSchedule  `json:"schedule,omitempty"`
	Policy        *BaseInfo      `json:"policy,omitempty"`
}

AgentScan is the fields renderable to and from the API for https://docs.tenable.com/tenablesc/api/Agent-Scan.htm

type Analysis

type Analysis struct {
	Type          string        `json:"type,omitempty"`
	Query         AnalysisQuery `json:"query,omitempty"`
	SourceType    string        `json:"sourceType,omitempty"`
	SortField     string        `json:"sortField,omitempty"`
	SortDirection string        `json:"sortDir,omitempty"`
	Columns       []BaseInfo    `json:"columns"` // note: this wants column names, not ids.
	// StartOffset is for type vuln only
	StartOffset string `json:"startOffset,omitempty"`
	// EndOffset is for type vuln only
	EndOffset string `json:"endOffset,omitempty"`
	// ScanID is for type vuln , sourcetype individual only
	ScanID string `json:"scanID,omitempty"`
	// View is for type vuln , sourcetype individual only
	View string `json:"view,omitempty"`
}

Analysis represents the fields used for requests against https://docs.tenable.com/tenablesc/api/Analysis.htm Note some fields are used only for certain combinations of type and sourcetype.

type AnalysisFilter

type AnalysisFilter struct {
	FilterName string `json:"filterName"`
	Operator   string `json:"operator"`
	// Value is sometimes a string, sometimes a number, sometimes a BaseInfo (with ID only generally)
	Value interface{} `json:"value"`
}

AnalysisFilter is the structure used for Analysis query filtering

type AnalysisQuery

type AnalysisQuery struct {
	ID          string           `json:"id,omitempty"`
	Name        string           `json:"name,omitempty"`
	Description string           `json:"description,omitempty"`
	Context     string           `json:"context,omitempty"`
	Type        string           `json:"type,omitempty"`
	SourceType  string           `json:"sourceType,omitempty"`
	Status      string           `json:"status,omitempty"`
	Tool        string           `json:"tool,omitempty"`
	Filters     []AnalysisFilter `json:"filters,omitempty"`
}

AnalysisQuery represents the fields available for filtering queries. Field values are probably best discovered through building queries in browser developer tools and then interrogating the request payloads.

type AnalysisResponseContainer

type AnalysisResponseContainer struct {
	TotalRecords             string          `json:"totalRecords,omitempty"`
	ReturnedRecords          int             `json:"returnedRecords,omitempty"`
	StartOffset              string          `json:"startOffset,omitempty"`
	EndOffset                string          `json:"endOffset,omitempty"`
	MatchingDataElementCount string          `json:"matchingDataElementCount,omitempty"`
	Results                  json.RawMessage `json:"results,omitempty"`
}

AnalysisResponseContainer is the output structure produced by an Analyze query. Results are further unmarshalled before return from call.

type Asset

type Asset struct {
	BaseInfo
	Type    string   `json:"type,omitempty"`
	Prepare FakeBool `json:"prepare,omitempty"`
	// DefinedDNSNames is a comma-separated list on the wire; this is translated during marshal/unmarshal.
	DefinedDNSNames []string `json:"-"`
	// DefinedIPs is a comma-separated list on the wire; this is translated during marshal/unmarshal.
	DefinedIPs   []string            `json:"-"`
	IPCount      ProbablyString      `json:"ipCount,omitempty"`
	CreatedTime  UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"`
	// Repositories includes a redundant `IPCount` field on the wire; this is dropped during marshal/unmarshal for consistency.
	Repositories []Repository `json:"-"`
}

Asset defines common fields used in requests and responses for assets

per https://docs.tenable.com/tenablesc/api/Asset.htm

Some fields are presented abstracted here and internally reformatted for transport.

type AuditFile

type AuditFile struct {
	BaseInfo
	Type              string              `json:"type,omitempty"`
	Version           string              `json:"version,omitempty"`
	Status            string              `json:"status,omitempty"`
	Filename          string              `json:"filename,omitempty"`
	OriginalFilename  string              `json:"originalFilename,omitempty"`
	Variables         []AuditVariable     `json:"variables,omitempty"`
	CreatedTime       UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime      UnixEpochStringTime `json:"modifiedTime,omitempty"`
	LastRefreshedTime UnixEpochStringTime `json:"lastRefreshedTime,omitempty"`
}

AuditFile respresents the request/response structure for https://docs.tenable.com/tenablesc/api/AuditFile.htm

type AuditVariable

type AuditVariable struct {
	Name  string `json:"name,omitempty"`
	Value string `json:"value,omitempty"`
}

type BaseInfo

type BaseInfo struct {
	ID          ProbablyString `json:"id,omitempty"`
	Name        string         `json:"name,omitempty"`
	Description string         `json:"description,omitempty"`
}

BaseInfo is used in the API to refer to related objects;

For input, only the ID is needed; responses will include name and description.

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(baseURL string) *Client

NewClient creates a Tenable.SC client object with defaults applied.

Don't forget to SetAPIKey or SetBasicAuth to ensure you make credentialed queries.

func (*Client) AddPostgresDBCredential

func (c *Client) AddPostgresDBCredential(credName, username, password, description, dbName, port string) (*Credential, error)

AddPostgresDBCredential creates a new postgres db credential

func (*Client) AddSSHCertificateCredential

func (c *Client) AddSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)

AddSSHCertificateCredential does the following: 1. takes a public key and private key as strings and uploads those to tenable.sc 2. for both private and public keys it stores the file name in PublicKey and PrivateKey in SSHCertificateCredentialUpload 3. post the cred to tenable.sc and return the object

func (*Client) Analyze

func (c *Client) Analyze(a *Analysis, resultsContainer interface{}) (*AnalysisResponseContainer, error)

Analyze takes an arbitrary Analysis query, determines the expected container object, and writes to the resultsContainer expecting it to be the correct type. The partially-unmarshalled response is returned as well for metadata purposes.

func (*Client) CreateAcceptRiskRule

func (c *Client) CreateAcceptRiskRule(a *AcceptRiskRule) (*AcceptRiskRule, error)

func (*Client) CreateAgentScan

func (c *Client) CreateAgentScan(s *AgentScan) (*AgentScan, error)

func (*Client) CreateAsset

func (c *Client) CreateAsset(a *Asset) (*Asset, error)

func (*Client) CreateAuditFile

func (c *Client) CreateAuditFile(a *AuditFile) (*AuditFile, error)

func (*Client) CreateOrganization

func (c *Client) CreateOrganization(org *Organization) (*Organization, error)

func (*Client) CreateRecastRiskRule

func (c *Client) CreateRecastRiskRule(a *RecastRiskRule) (*RecastRiskRule, error)

func (*Client) CreateRepository

func (c *Client) CreateRepository(r *Repository) (*Repository, error)

func (*Client) CreateRole

func (c *Client) CreateRole(role *Role) (*Role, error)

func (*Client) CreateScan

func (c *Client) CreateScan(s *Scan) (*Scan, error)

func (*Client) CreateScanPolicy

func (c *Client) CreateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)

func (*Client) CreateScanPolicyTemplate

func (c *Client) CreateScanPolicyTemplate(s *ScanPolicyTemplate) (*ScanPolicyTemplate, error)

func (*Client) CreateScanZone

func (c *Client) CreateScanZone(sz *ScanZone) (*ScanZone, error)

func (*Client) DeleteAcceptRiskRule

func (c *Client) DeleteAcceptRiskRule(id string) error

func (*Client) DeleteAgentScan

func (c *Client) DeleteAgentScan(id string) error

func (*Client) DeleteAsset

func (c *Client) DeleteAsset(id string) error

func (*Client) DeleteAuditFile

func (c *Client) DeleteAuditFile(id string) error

func (*Client) DeleteCredential

func (c *Client) DeleteCredential(id string) error

func (*Client) DeleteFile

func (c *Client) DeleteFile(filename string) error

func (*Client) DeleteOrganization

func (c *Client) DeleteOrganization(id string) error

func (*Client) DeleteRecastRiskRule

func (c *Client) DeleteRecastRiskRule(id string) error

func (*Client) DeleteRepository

func (c *Client) DeleteRepository(id string) error

func (*Client) DeleteRole

func (c *Client) DeleteRole(id string) error

func (*Client) DeleteScan

func (c *Client) DeleteScan(id string) error

func (*Client) DeleteScanPolicy

func (c *Client) DeleteScanPolicy(id string) error

func (*Client) DeleteScanPolicyTemplate

func (c *Client) DeleteScanPolicyTemplate(id string) error

func (*Client) DeleteScanResult

func (c *Client) DeleteScanResult(id string) error

func (*Client) DeleteScanZone

func (c *Client) DeleteScanZone(id string) error

func (*Client) DownloadScanResult

func (c *Client) DownloadScanResult(id string) ([]byte, error)

func (*Client) GetAcceptRiskRule

func (c *Client) GetAcceptRiskRule(id string) (*AcceptRiskRule, error)

func (*Client) GetAgentGroupsForScanner

func (c *Client) GetAgentGroupsForScanner(id string) ([]*AgentGroup, error)

func (*Client) GetAgentScan

func (c *Client) GetAgentScan(id string) (*AgentScan, error)

func (*Client) GetAllAcceptRiskRules

func (c *Client) GetAllAcceptRiskRules() ([]*AcceptRiskRule, error)

func (*Client) GetAllAgentScans

func (c *Client) GetAllAgentScans() ([]*AgentScan, error)

func (*Client) GetAllAssets

func (c *Client) GetAllAssets() ([]*Asset, error)

func (*Client) GetAllCredentials

func (c *Client) GetAllCredentials() ([]*Credential, error)

func (*Client) GetAllFeeds

func (c *Client) GetAllFeeds() (Feeds, error)

func (*Client) GetAllJobs

func (c *Client) GetAllJobs() ([]*Job, error)

func (*Client) GetAllOrganizations

func (c *Client) GetAllOrganizations() ([]*Organization, error)

func (*Client) GetAllRecastRiskRules

func (c *Client) GetAllRecastRiskRules() ([]*RecastRiskRule, error)

func (*Client) GetAllReportDefinitions

func (c *Client) GetAllReportDefinitions() ([]*ReportDefinitionBase, error)

func (*Client) GetAllReports

func (c *Client) GetAllReports() ([]*Report, error)

func (*Client) GetAllRepositories

func (c *Client) GetAllRepositories() ([]*Repository, error)

func (*Client) GetAllRoles

func (c *Client) GetAllRoles() ([]*Role, error)

func (*Client) GetAllScanPolicies

func (c *Client) GetAllScanPolicies() ([]*ScanPolicy, error)

func (*Client) GetAllScanPolicyTemplates

func (c *Client) GetAllScanPolicyTemplates() ([]*ScanPolicyTemplate, error)

func (*Client) GetAllScanResults

func (c *Client) GetAllScanResults() ([]*ScanResult, error)

func (*Client) GetAllScanResultsByTime

func (c *Client) GetAllScanResultsByTime(start, end time.Time) ([]*ScanResult, error)

func (*Client) GetAllScanZones

func (c *Client) GetAllScanZones() ([]*ScanZone, error)

func (*Client) GetAllScanners

func (c *Client) GetAllScanners() ([]*Scanner, error)

func (*Client) GetAllScans

func (c *Client) GetAllScans() ([]*Scan, error)

func (*Client) GetAsset

func (c *Client) GetAsset(id string) (*Asset, error)

func (*Client) GetAuditFile

func (c *Client) GetAuditFile(id string) (*AuditFile, error)

func (*Client) GetCredential

func (c *Client) GetCredential(id string) (*Credential, error)

func (*Client) GetCurrentUser

func (c *Client) GetCurrentUser() (*CurrentUser, error)

func (*Client) GetFeed

func (c *Client) GetFeed(name string) (*Feed, error)

func (*Client) GetJob

func (c *Client) GetJob(id string) (*Job, error)

func (*Client) GetOrganization

func (c *Client) GetOrganization(id string) (*Organization, error)

func (*Client) GetPlugin

func (c *Client) GetPlugin(id string) (*Plugin, error)

func (*Client) GetPluginsByName

func (c *Client) GetPluginsByName(name string) ([]*Plugin, error)

func (*Client) GetRecastRiskRule

func (c *Client) GetRecastRiskRule(id string) (*RecastRiskRule, error)

func (*Client) GetReport

func (c *Client) GetReport(id string) (*Report, error)

func (*Client) GetRepository

func (c *Client) GetRepository(id string) (*Repository, error)

func (*Client) GetRole

func (c *Client) GetRole(id string) (*Role, error)

func (*Client) GetScan

func (c *Client) GetScan(id string) (*Scan, error)

func (*Client) GetScanPolicy

func (c *Client) GetScanPolicy(id string) (*ScanPolicy, error)

func (*Client) GetScanPolicyTemplate

func (c *Client) GetScanPolicyTemplate(id string) (*ScanPolicyTemplate, error)

func (*Client) GetScanResult

func (c *Client) GetScanResult(id string) (*ScanResult, error)

func (*Client) GetScanZone

func (c *Client) GetScanZone(id string) (*ScanZone, error)

func (*Client) ImportScanResult

func (c *Client) ImportScanResult(resultImport *ScanResultImport) error

func (*Client) ImportScanResultFile

func (c *Client) ImportScanResultFile(path string, repositoryID string, classifyMitigatedAge string, dhcpTracking, scanningVirtualHosts bool) error

ImportScanResultFile composes the UploadFile and ImportScanResult calls necessary to import a scan result to a target repository.

Path is expected to be a path on the local filesystem.

func (*Client) KillJob

func (c *Client) KillJob(id string) error

func (*Client) RestyClient

func (c *Client) RestyClient() *resty.Client

RestyClient returns a pointer to the underlying resty.Client instance. This enables access to all the features and options provided by the resty library.

func (*Client) SetAPIKey

func (c *Client) SetAPIKey(access, secret string) *Client

SetAPIKey adds the API Key header to all queries with the client.

func (*Client) SetBasicAuth

func (c *Client) SetBasicAuth(username, password string) *Client

SetBasicAuth adds the deprecated username/password auth to queries with the client.

func (*Client) SetUserAgent

func (c *Client) SetUserAgent(agent string) *Client

SetUserAgent applies a UserAgent header; if this is not supplied DefaultUserAgent is used.

func (*Client) StartScan

func (c *Client) StartScan(id string) (*ScanStartResult, error)

func (*Client) StopScanResult

func (c *Client) StopScanResult(id string) error

StopScanResult Stops the Scan Result associated with {id}. NOTE: This endpoint is not applicable for Agent Sync Results. ref: https://docs.tenable.com/tenablesc/api/Scan-Result.htm#ScanResultRESTReference-/scanResult/{id}/stop

func (*Client) UpdateAgentScan

func (c *Client) UpdateAgentScan(s *AgentScan) (*AgentScan, error)

func (*Client) UpdateAsset

func (c *Client) UpdateAsset(a *Asset) (*Asset, error)

func (*Client) UpdateAuditFile

func (c *Client) UpdateAuditFile(a *AuditFile) (*AuditFile, error)

func (*Client) UpdateFeed

func (c *Client) UpdateFeed(name string) error

func (*Client) UpdateOrganization

func (c *Client) UpdateOrganization(org *Organization) (*Organization, error)

func (*Client) UpdateRepository

func (c *Client) UpdateRepository(repo *Repository) (*Repository, error)

func (*Client) UpdateRole

func (c *Client) UpdateRole(role *Role) (*Role, error)

func (*Client) UpdateSSHCertificateCredential

func (c *Client) UpdateSSHCertificateCredential(publicKey, privateKey string, sshCertCred SSHCertificateCredentialUpload) (*Credential, error)

UpdateSSHCertificateCredential does the following: 1. takes a public key and private key as strings and uploads those to tenable.sc 2. for both private and public keys it stores the file name in PublicKey and PrivateKey in SSHCertificateCredentialUpload 3. patches the cred to tenable.sc and return the object

func (*Client) UpdateScan

func (c *Client) UpdateScan(s *Scan) (*Scan, error)

func (*Client) UpdateScanPolicy

func (c *Client) UpdateScanPolicy(s *ScanPolicy) (*ScanPolicy, error)

func (*Client) UpdateScanZone

func (c *Client) UpdateScanZone(sz *ScanZone) (*ScanZone, error)

func (*Client) UpdateScanners

func (c *Client) UpdateScanners() (*UpdateScannersStatus, error)

func (*Client) UploadFile

func (c *Client) UploadFile(path, context string) (*File, error)

func (*Client) UploadFileFromReader

func (c *Client) UploadFileFromReader(reader io.Reader, path, context string) (*File, error)

func (*Client) UploadFileFromString

func (c *Client) UploadFileFromString(content, path, context string) (*File, error)

type Credential

type Credential struct {
	BaseInfo
	Type      string   `json:"type"`
	CanUse    FakeBool `json:"canUse,omitempty"`
	CanManage FakeBool `json:"canManage,omitempty"`
	Tags      string   `json:"tags,omitempty"`
}

Credential is massively pared back from the possible types in https://docs.tenable.com/tenablesc/api/Credential.htm This is not wired to directly manage credentials, only to find and delete them.

type CurrentUser

type CurrentUser struct {
	BaseInfo
	Status       string   `json:"status,omitempty"`
	Username     string   `json:"username,omitempty"`
	AuthType     string   `json:"authType,omitempty"`
	OrgName      string   `json:"orgName,omitempty"`
	Organization BaseInfo `json:"organization,omitempty"`
	Role         BaseInfo `json:"role,omitempty"`
	Group        BaseInfo `json:"group,omitempty"`
}

CurrentUser represents response structure for https://docs.tenable.com/tenablesc/api/Current-User.htm

This is perfect for testing credential validity and user type.

type DBCredentialUpload

type DBCredentialUpload struct {
	BaseInfo
	Tags     string `json:"tags"`
	Type     string `json:"type"`
	AuthType string `json:"authType"`
	Login    string `json:"login"`
	Password string `json:"password"`
	SID      string `json:"sid"`
	DBType   string `json:"dbType"`
	Port     string `json:"port"`
}

DBCredentialUpload https://docs.tenable.com/tenablesc/api/Credential.htm#credential_POST

type FakeBool

type FakeBool string

FakeBool helps us wrap the tenable API's stringy booleans so users don't have to think about them quite as much.

const (
	FakeTrue  FakeBool = "true"
	FakeFalse FakeBool = "false"
)

func ToFakeBool

func ToFakeBool(b bool) FakeBool

func (FakeBool) AsBool

func (f FakeBool) AsBool() bool

type Family

type Family struct {
	BaseInfo
	Type string `json:"type,omitempty"`
}

type Feed

type Feed struct {
	UpdateTime    ProbablyString
	Stale         FakeBool
	UpdateRunning FakeBool
}

type Feeds

type Feeds map[string]*Feed

Feeds represents the output structure for https://docs.tenable.com/tenablesc/api/Feed.htm queries. The feed endpoint returns a map of Feed objects with the name as primary key.

type File

type File struct {
	Filename         string `json:"filename,omitempty"`
	OriginalFilename string `json:"originalFilename,omitempty"`
	Content          string `json:"content,omitempty"`
	BenchmarkName    string `json:"benchmarkName,omitempty"`
	ProfileName      string `json:"profileName,omitempty"`
	Version          string `json:"version,omitempty"`
	Type             string `json:"type,omitempty"`
}

File represents the response structure for https://docs.tenable.com/tenablesc/api/File.htm

type HTTPError

type HTTPError struct {
	ResponseCode int
	Body         string
	// contains filtered or unexported fields
}

func (HTTPError) Error

func (h HTTPError) Error() string

func (HTTPError) Unwrap

func (b HTTPError) Unwrap() error

type Job

type Job struct {
	BaseInfo
	AttemptNumber  ProbablyString `json:"attemptNumber,omitempty"`
	DependentJobID ProbablyString `json:"dependentJobID,omitempty"`
	ErrorCode      ProbablyString `json:"errorCode,omitempty"`
	ImmediateJob   FakeBool       `json:"immediateJob,omitempty"`
	Initiator      UserInfo       `json:"initiator,omitempty"`
	ObjectID       ProbablyString `json:"objectID,omitempty"`
	Organization   BaseInfo       `json:"organization,omitempty"`
	Params         string         `json:"params,omitempty"`
	Pid            ProbablyString `json:"pid,omitempty"`
	Priority       ProbablyString `json:"priority,omitempty"`
	StartTime      ProbablyString `json:"startTime,omitempty"`
	Status         string         `json:"status,omitempty"`
	TargetedTime   ProbablyString `json:"targetedTime,omitempty"`
	Type           string         `json:"type,omitempty"`
}

Job represents the response structure for https://docs.tenable.com/tenablesc/api/Job.htm

type NessusSchedule

type NessusSchedule struct {
	Type       string `json:"type,omitempty"`
	Start      string `json:"start,omitempty"`
	RepeatRule string `json:"repeatRule,omitempty"`
}

type NotFoundError

type NotFoundError HTTPError

type Organization

type Organization struct {
	BaseInfo
	Email   string `json:"email,omitempty"`
	Address string `json:"address,omitempty"`
	City    string `json:"city,omitempty"`
	State   string `json:"state,omitempty"`
	Phone   string `json:"phone,omitempty"`
	Fax     string `json:"fax,omitempty"`

	ZoneSelection string `json:"zoneSelection,omitempty"`
	RestrictedIPs string `json:"restrictedIPs,omitempty"`

	VulnScoreLow      string `json:"vulnScoreLow,omitempty"`
	VulnScoreMedium   string `json:"vulnScoreMedium,omitempty"`
	VulnScoreHigh     string `json:"vulnScoreHigh,omitempty"`
	VulnScoringSystem string `json:"vulnScoringSystem,omitempty"`

	CreatedTime  UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"`

	UserCount string `json:"userCount,omitempty"`

	Repositories []OrganizationRepository `json:"repositories,omitempty"`
	Zones        []BaseInfo               `json:"zones,omitempty"`
}

Organization represents the request and response structure for https://docs.tenable.com/tenablesc/api/Organization.htm

type OrganizationRepository

type OrganizationRepository struct {
	RepoBaseFields
	GroupAssign string `json:"groupAssign,omitempty"`
}

type Plugin

type Plugin struct {
	BaseInfo
	Family              Family         `json:"family,omitempty"`
	CVSSV3BaseScore     string         `json:"cvssV3BaseScore,omitempty"`
	CVSSV3TemporalScore string         `json:"cvssV3TemporalScore,omitempty"`
	PluginPubDate       ProbablyString `json:"pluginPubDate,omitempty"`
	PluginModDate       ProbablyString `json:"pluginModDate,omitempty"`
	PatchPubDate        ProbablyString `json:"patchPubDate,omitempty"`
	PatchModDate        ProbablyString `json:"patchModDate,omitempty"`
	VulnPubDate         ProbablyString `json:"vulnPubDate,omitempty"`
	ModifiedTime        ProbablyString `json:"modifiedTime,omitempty"`
	CheckType           string         `json:"checkType,omitempty"`
}

Plugin represents the response structure for https://docs.tenable.com/tenablesc/api/Plugin.htm

type ProbablyString

type ProbablyString string

ProbablyString is used for most ID fields in the API;

the SC API generally returns positive IDs as strings, but
-1 and sometimes 0 are returned numerically.
Since the API _accepts_ strings in those locations always, we only need to handle
the output from calls.

func (*ProbablyString) UnmarshalJSON

func (p *ProbablyString) UnmarshalJSON(data []byte) error

type RecastRiskRule

type RecastRiskRule struct {
	RecastRiskRuleBaseFields
	NewSeverity string `json:"newSeverity,omitempty"`
	Repository  BaseInfo
	HostValue   string
}

RecastRiskRule represents the Risk Rule structure in https://docs.tenable.com/tenablesc/api/Recast-Risk-Rule.htm

type RecastRiskRuleBaseFields

type RecastRiskRuleBaseFields struct {
	ID           string   `json:"id,omitempty"`
	Organization BaseInfo `json:"organization,omitempty"`
	User         UserInfo `json:"user,omitempty"`
	Plugin       BaseInfo `json:"plugin,omitempty"`
	// HostType may be 'all', 'asset', 'ip', or 'uuid'
	HostType     string              `json:"hostType,omitempty"`
	Port         string              `json:"port,omitempty"`
	Protocol     string              `json:"protocol,omitempty"`
	Order        string              `json:"order,omitempty"`
	Comments     string              `json:"comments,omitempty"`
	Expires      string              `json:"expires,omitempty"`
	Status       string              `json:"status,omitempty"`
	CreatedTime  UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"`
}

RecastRiskRuleBaseFields are the fields renderable directly both to and from the API.

Requests take a list of repositories while all responses only ever return a single repository.
HostValue response structure also varies depending on type; the client masks out this conversion
 to and from the API structures.

type RepoBaseFields

type RepoBaseFields struct {
	BaseInfo
	DataFormat     string              `json:"dataFormat,omitempty"`
	Type           string              `json:"type,omitempty"`
	DownloadFormat string              `json:"downloadFormat,omitempty"`
	CreatedTime    UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime   UnixEpochStringTime `json:"modifiedTime,omitempty"`
	Running        FakeBool            `json:"running,omitempty"`
	Organizations  []RepoOrganization  `json:"organizations,omitempty"`
}

RepoBaseFields includes the Repository fields common to responses from this endpoint and others.

type RepoFieldsCommon

type RepoFieldsCommon struct {
	ActiveVulnsLifetime     string   `json:"activeVulnsLifetime,omitempty"`
	ComplianceVulnsLifetime string   `json:"complianceVulnsLifetime,omitempty"`
	MitigatedVulnsLifetime  string   `json:"mitigatedVulnsLifetime,omitempty"`
	TrendingDays            string   `json:"trendingDays,omitempty"`
	TrendWithRaw            FakeBool `json:"trendWithRaw,omitempty"`
}

RepoFieldsCommon includes the fields common to requests and responses in this endpoint for all repository types.

type RepoIPFields

type RepoIPFields struct {
	IPRange                string              `json:"ipRange,omitempty"`
	IPCount                string              `json:"ipCount,omitempty"`
	PassiveVulnsLifetime   string              `json:"passiveVulnsLifetime,omitempty"`
	LCEVulnsLifetime       string              `json:"lveVulnsLifetime,omitempty"`
	LastGenerateNessusTime UnixEpochStringTime `json:"lastGenerateNessusTime,omitempty"`
	NessusSchedule         *NessusSchedule     `json:"nessusSchedule,omitempty"`
}

RepoIPFields includes the fields only available in IPv4/6 repositories and not Agent-based repositories.

type RepoOrganization

type RepoOrganization struct {
	ID          string `json:"id,omitempty"`
	GroupAssign string `json:"groupAssign,omitempty"`
}

type Report

type Report struct {
	BaseInfo
	ReportDefinitionID string              `json:"reportDefinitionID"`
	JobID              string              `json:"jobID"`
	Type               string              `json:"type"`
	Status             string              `json:"status"`
	Running            string              `json:"running"`
	ErrorDetails       string              `json:"errorDetails"`
	TotalSteps         string              `json:"totalSteps"`
	CompletedSteps     string              `json:"completedSteps"`
	StartTime          UnixEpochStringTime `json:"startTime"`
	FinishTime         UnixEpochStringTime `json:"finishTime"`
	OwnerGID           string              `json:"ownerGID"`
	PubSites           []BaseInfo          `json:"pubSites"`
	Creator            UserInfo            `json:"creator"`
	Owner              UserInfo            `json:"owner"`
	OwnerGroup         BaseInfo            `json:"ownerGroup"`
}

Report represents request/response structure from https://docs.tenable.com/tenablesc/api/Report.htm

type ReportDefinitionBase

type ReportDefinitionBase struct {
	BaseInfo
}

ReportDefinitionBase represents the base request/response structure from https://docs.tenable.com/tenablesc/api/Report-Definition.htm

type Repository

type Repository struct {
	RepoBaseFields
	RepoFieldsCommon
	RepoIPFields
}

Repository represents the fields for https://docs.tenable.com/tenablesc/api/Repository.htm Each repository type has a significantly different structure that is rendered as needed.

type Role

type Role struct {
	BaseInfo
	PermManageGroups             FakeBool `json:"permManageGroups,omitempty"`
	PermManageRoles              FakeBool `json:"permManageRoles,omitempty"`
	PermManageImages             FakeBool `json:"permManageImages,omitempty"`
	PermManageGroupRelationships FakeBool `json:"permManageGroupRelationships,omitempty"`
	PermManageBlackoutWindows    FakeBool `json:"permManageBlackoutWindows,omitempty"`
	PermManageAttributeSets      FakeBool `json:"permManageAttributeSets,omitempty"`
	PermCreateTickets            FakeBool `json:"permCreateTickets,omitempty"`
	PermCreateAlerts             FakeBool `json:"permCreateAlerts,omitempty"`
	PermCreateAuditFiles         FakeBool `json:"permCreateAuditFiles,omitempty"`
	PermCreateLDAPAssets         FakeBool `json:"permCreateLDAPAssets,omitempty"`
	PermCreatePolicies           FakeBool `json:"permCreatePolicies,omitempty"`
	PermPurgeTickets             FakeBool `json:"permPurgeTickets,omitempty"`
	PermPurgeScanResults         FakeBool `json:"permPurgeScanResults,omitempty"`
	PermPurgeReportResults       FakeBool `json:"permPurgeReportResults,omitempty"`
	PermAgentsScan               FakeBool `json:"permAgentsScan,omitempty"`
	PermShareObjects             FakeBool `json:"permShareObjects,omitempty"`
	PermUpdateFeeds              FakeBool `json:"permUpdateFeeds,omitempty"`
	PermUploadNessusResults      FakeBool `json:"permUploadNessusResults,omitempty"`
	PermViewOrgLogs              FakeBool `json:"permViewOrgLogs,omitempty"`
	PermManageAcceptRiskRules    FakeBool `json:"permManageAcceptRiskRules,omitempty"`
	PermManageRecastRiskRules    FakeBool `json:"permManageRecastRiskRules,omitempty"`

	// PermScan is treated as bool here, but it expects the API value to be 'full' (true) or 'none' (false).
	//   This quirk is marshelled/unmarshalled correctly internally.
	PermScan FakeBool `json:"permScan,omitempty"`
}

Role represents request/response structure for https://docs.tenable.com/tenablesc/api/Role.htm

type SCError

type SCError struct {
	SCErrorCode int
	// contains filtered or unexported fields
}

func (SCError) Error

func (s SCError) Error() string

func (SCError) Unwrap

func (b SCError) Unwrap() error

type SCResponse

type SCResponse struct {
	Response  json.RawMessage `json:"response"`
	ErrorCode int             `json:"error_code"`
	ErrorMsg  string          `json:"error_msg"`
	Timestamp int             `json:"timestamp"`
	Warnings  []string        `json:"warning"`
}

type SSHCertificateCredentialUpload

type SSHCertificateCredentialUpload struct {
	BaseInfo
	Tags                string `json:"tags"`
	Type                string `json:"type"`
	Username            string `json:"username"`
	AuthType            string `json:"authType"`
	PublicKey           string `json:"publicKey"`
	PrivateKey          string `json:"privateKey"`
	PrivilegeEscalation string `json:"privilegeEscalation"`
}

SSHCertificateCredentialUpload https://docs.tenable.com/tenablesc/api/Credential.htm#credential_POST

type Scan

type Scan struct {
	BaseInfo
	Assets               []BaseInfo          `json:"assets,omitempty"`
	ClassifyMitigatedAge string              `json:"classifyMitigatedAge,omitempty"`
	CreatedTime          UnixEpochStringTime `json:"createdTime,omitempty"`
	Creator              *UserInfo           `json:"creator,omitempty"`
	Credentials          []BaseInfo          `json:"credentials,omitempty"`
	DHCPTracking         FakeBool            `json:"dhcpTracking,omitempty"`
	EmailOnFinish        FakeBool            `json:"emailOnFinish,omitempty"`
	EmailOnLaunch        FakeBool            `json:"emailOnLaunch,omitempty"`
	InactivityTimeout    string              `json:"inactivityTimeout,omitempty"`
	IPList               string              `json:"ipList,omitempty"`
	MaxScanTime          string              `json:"maxScanTime,omitempty"`
	ModifiedTime         UnixEpochStringTime `json:"modifiedTime,omitempty"`
	NumDependents        ProbablyString      `json:"numDependents,omitempty"`
	Owner                *UserInfo           `json:"owner,omitempty"`
	OwnerGroup           *BaseInfo           `json:"ownerGroup,omitempty"`
	Plugin               *struct {
		ID ProbablyString `json:"id,omitempty"`
	} `json:"plugin,omitempty"`
	PluginID             ProbablyString `json:"pluginID,omitempty"`
	PluginPrefs          []string       `json:"pluginPrefs,omitempty"`
	Policy               *BaseInfo      `json:"policy,omitempty"`
	Repository           *BaseInfo      `json:"repository,omitempty"`
	Reports              []ScanReports  `json:"reports,omitempty"`
	RolloverType         string         `json:"rolloverType,omitempty"`
	Schedule             *ScanSchedule  `json:"schedule,omitempty"`
	ScanningVirtualHosts FakeBool       `json:"scanningVirtualHosts,omitempty"`
	Status               string         `json:"status,omitempty"`
	TimeoutAction        string         `json:"timeoutAction,omitempty"`
	Type                 string         `json:"type,omitempty"`
	Zone                 *BaseInfo      `json:"zone,omitempty"`
}

Scan represents the request/response structure for https://docs.tenable.com/tenablesc/api/Scan.htm

type ScanDependentSchedule

type ScanDependentSchedule struct {
	BaseInfo
	Status string `json:"status,omitempty"`
}

type ScanPolicy

type ScanPolicy struct {
	BaseInfo
	// to update a scan, you must pass an empty context. do not omitempty.
	Context      string              `json:"context"`
	Tags         string              `json:"tags,omitempty"`
	CreatedTime  UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime UnixEpochStringTime `json:"modifiedTime,omitempty"`
	AuditFiles   []BaseInfo          `json:"auditFiles,omitempty"`
	// Somtimes a map and sometimes an array :(
	Preferences    interface{}          `json:"preferences,omitempty"`
	RemovePrefs    []string             `json:"removePrefs,omitempty"`
	PolicyTemplate *BaseInfo            `json:"policyTemplate,omitempty"`
	Owner          *UserInfo            `json:"owner,omitempty"`
	Creator        *UserInfo            `json:"creator,omitempty"`
	Families       []ScanPolicyFamilies `json:"families,omitempty"`
}

ScanPolicy represents request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Policy.htm

type ScanPolicyFamilies

type ScanPolicyFamilies struct {
	ID      string     `json:"id"`
	Name    string     `json:"name,omitempty"`
	Count   string     `json:"count,omitempty"`
	State   string     `json:"state,omitempty"`
	Type    string     `json:"type,omitempty"`
	Plugins []BaseInfo `json:"plugins,omitempty"`
}

type ScanPolicyTemplate

type ScanPolicyTemplate struct {
	BaseInfo
	Editor string `json:"editor,omitempty"`
	// DetailedEditor is input-only for unclear reasons.
	DetailedEditor     string              `json:"detailedEditor,omitempty"`
	CreatedTime        UnixEpochStringTime `json:"createdTime,omitempty"`
	ModifiedTime       UnixEpochStringTime `json:"modifiedTime,omitempty"`
	TemplatePubTime    UnixEpochStringTime `json:"templatePubTime,omitempty"`
	TemplateModTime    UnixEpochStringTime `json:"templateModTime,omitempty"`
	TemplateDefModTime UnixEpochStringTime `json:"templateDefModTime,omitempty"`
}

ScanPolicyTemplate represents the request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Policy-Templates.htm

type ScanReports

type ScanReports struct {
	ID           string `json:"id"`
	ReportSource string `json:"reportSource,omitempty"`
}

type ScanResult

type ScanResult struct {
	BaseInfo
	Status                 string         `json:"status,omitempty"`
	Initiator              UserInfo       `json:"initiator,omitempty"`
	Owner                  UserInfo       `json:"owner,omitempty"`
	OwnerGroup             BaseInfo       `json:"ownerGroup,omitempty"`
	Repository             BaseInfo       `json:"repository,omitempty"`
	Scan                   BaseInfo       `json:"scan,omitempty"`
	ImportStatus           string         `json:"importStatus,omitempty"`
	ImportStart            ProbablyString `json:"importStart,omitempty"`
	ImportFinish           ProbablyString `json:"importFinish,omitempty"`
	ImportDuration         ProbablyString `json:"importDuration,omitempty"`
	DownloadFormat         string         `json:"downloadFormat,omitempty"`
	DataFormat             string         `json:"dataFormat,omitempty"`
	ResultType             string         `json:"resultType,omitempty"`
	ResultSource           string         `json:"resultSource,omitempty"`
	ErrorDetails           string         `json:"errorDetails,omitempty"`
	ImportErrorDetails     string         `json:"importErrorDetails,omitempty"`
	TotalIPs               ProbablyString `json:"totalIPs,omitempty"`
	ScannedIPs             ProbablyString `json:"scannedIPs,omitempty"`
	StartTime              ProbablyString `json:"startTime,omitempty"`
	FinishTime             ProbablyString `json:"finishTime,omitempty"`
	ScanDuration           ProbablyString `json:"scanDuration,omitempty"`
	CompletedIPs           ProbablyString `json:"completedIPs,omitempty"`
	CompletedChecks        ProbablyString `json:"completedChecks,omitempty"`
	TotalChecks            ProbablyString `json:"totalChecks,omitempty"`
	AgentScanUUID          string         `json:"agentScanUUID,omitempty"`
	AgentScanContainerUUID string         `json:"agentScanContainerUUID,omitempty"`
	Job                    BaseInfo       `json:"job,omitempty"`
	Details                string         `json:"details,omitempty"`
}

ScanResult represents the request/response structure from https://docs.tenable.com/tenablesc/api/Scan-Result.htm

type ScanResultImport

type ScanResultImport struct {
	Filename             string   `json:"filename,omitempty"`
	Repository           BaseInfo `json:"repository,omitempty"`
	ClassifyMitigatedAge string   `json:"classifyMitigatedAge,omitempty"`
	DHCPTracking         FakeBool `json:"dhcpTracking,omitempty"`
	ScanningVirtualHosts FakeBool `json:"scanningVirtualHosts,omitempty"`
	RolloverType         string   `json:"rolloverType,omitempty"`
	TimeoutAction        string   `json:"timeoutAction,omitempty"`
}

ScanResultImport represents the request/response structure from the import endpoint of https://docs.tenable.com/tenablesc/api/Scan-Result.htm

type ScanSchedule

type ScanSchedule struct {
	ID          ProbablyString         `json:"id,omitempty"`
	DependentID string                 `json:"dependentID,omitempty"`
	Type        string                 `json:"type,omitempty"`
	Start       string                 `json:"start,omitempty"`
	RepeatRule  string                 `json:"repeatRule,omitempty"`
	Enabled     FakeBool               `json:"enabled,omitempty"`
	ObjectType  ProbablyString         `json:"objectType,omitempty"`
	NextRun     int                    `json:"nextRun,omitempty"`
	Dependent   *ScanDependentSchedule `json:"dependent,omitempty"`
}

type ScanStartResult

type ScanStartResult struct {
	ScanID     string `json:"scanID"`
	ScanResult struct {
		BaseInfo
		InitiatorID    int    `json:"initiatorID"`
		OwnerID        string `json:"ownerID"`
		ScanID         string `json:"scanID"`
		ResultsSyncID  int    `json:"resultsSyncID"`
		JobID          string `json:"jobID"`
		RepositoryID   string `json:"repositoryID"`
		Details        string `json:"details"`
		Status         string `json:"status"`
		DownloadFormat string `json:"downloadFormat"`
		DataFormat     string `json:"dataFormat"`
		ResultType     string `json:"resultType"`
	} `json:"scanResult"`
}

type ScanZone

type ScanZone struct {
	ScanZoneBaseFields
	// IPList is composed internally as a comma-separated list; we split and join for your convenience.
	IPList []string `json:"ipList,omitempty"`
}

ScanZone represents the request/response fields for https://docs.tenable.com/tenablesc/api/Scan-Zone.htm

type ScanZoneBaseFields

type ScanZoneBaseFields struct {
	BaseInfo
	CreatedTime   string            `json:"createdTime,omitempty"`
	ModifiedTime  string            `json:"modifiedTime,omitempty"`
	Organizations []BaseInfo        `json:"organizations,omitempty"`
	Scanners      []ScanZoneScanner `json:"scanners,omitempty"`
}

type ScanZoneScanner

type ScanZoneScanner struct {
	BaseInfo
	Status string `json:"status,omitempty"`
}

type Scanner

type Scanner struct {
	BaseInfo
	Status       string   `json:"status"`
	AgentCapable FakeBool `json:"agentCapable"`
}

type UnixEpochStringTime

type UnixEpochStringTime string

UnixEpochStringTime would ideally be time.Time, but partial-unmarshalling

every single place we use a timestamp to do that conversion would be somewhat excruciating.
So this is the compromise.

func (UnixEpochStringTime) ToDateTime

func (s UnixEpochStringTime) ToDateTime() (time.Time, error)

type UpdateScannersStatus

type UpdateScannersStatus struct {
	Status []struct {
		BaseInfo
		Status string `json:"status"`
	} `json:"status"`
}

type UserInfo

type UserInfo struct {
	ID        ProbablyString `json:"id,omitempty"`
	UUID      string         `json:"uuid,omitempty"`
	Username  string         `json:"username,omitempty"`
	Firstname string         `json:"firstname,omitempty"`
	Lastname  string         `json:"lastname,omitempty"`
}

UserInfo is used inb the API to refer to users.

For input, only the ID is needed; responses will include remaining fields.

type VulnDetailsResult

type VulnDetailsResult struct {
	AcceptRisk          string         `json:"acceptRisk"`
	BaseScore           string         `json:"baseScore"`
	BID                 string         `json:"bid"`
	CheckType           string         `json:"checkType"`
	CPE                 string         `json:"cpe"`
	CVE                 string         `json:"cve"`
	CVSSV3BaseScore     string         `json:"cvssV3BaseScore"`
	CVSSV3TemporalScore string         `json:"cvssV3TemporalScore"`
	CVSSV3Vector        string         `json:"cvssV3Vector"`
	CVSSVector          string         `json:"cvssVector"`
	Description         string         `json:"description"`
	DNSName             string         `json:"dnsName"`
	ExploitAvailable    string         `json:"exploitAvailable"`
	ExploitEase         string         `json:"exploitEase"`
	ExploitFrameworks   string         `json:"exploitFrameworks"`
	Family              VulnFamily     `json:"family"`
	FirstSeen           string         `json:"firstSeen"`
	HasBeenMitigated    string         `json:"hasBeenMitigated"`
	HostUniqueness      string         `json:"hostUniqueness"`
	IP                  string         `json:"ip"`
	IPS                 string         `json:"ips"`
	LastSeen            string         `json:"lastSeen"`
	MacAddress          string         `json:"macAddress"`
	NetbiosName         string         `json:"netbiosName"`
	PatchPubDate        string         `json:"patchPubDate"`
	PluginID            string         `json:"pluginID"`
	PluginInfo          string         `json:"pluginInfo"`
	PluginModDate       string         `json:"pluginModDate"`
	PluginName          string         `json:"pluginName"`
	PluginPubDate       string         `json:"pluginPubDate"`
	PluginText          string         `json:"pluginText"`
	Port                string         `json:"port"`
	Protocol            string         `json:"protocol"`
	RecastRisk          string         `json:"recastRisk"`
	Repository          VulnRepository `json:"repository"`
	RiskFactor          string         `json:"riskFactor"`
	SeeAlso             string         `json:"seeAlso"`
	Severity            BaseInfo       `json:"severity"`
	Solution            string         `json:"solution"`
	StigSeverity        string         `json:"stigSeverity"`
	Synopsis            string         `json:"synopsis"`
	TemporalScore       string         `json:"temporalScore"`
	UUID                string         `json:"uuid"`
	Version             string         `json:"version"`
	VPRContext          string         `json:"vprContext"`
	VPRScore            string         `json:"vprScore"`
	VulnPubDate         string         `json:"vulnPubDate"`
	XREF                string         `json:"xref"`
}

VulnDetailsResult contains the structure used by the 'vulndetails' analysis tool

type VulnFamily

type VulnFamily struct {
	ID   string `json:"id"`
	Name string `json:"name"`
	Type string `json:"type"`
}

VulnFamily information for a vulnerability

type VulnHosts

type VulnHosts struct {
	IPList      string     `json:"iplist"`
	Repository  Repository `json:"repository"`
	UUIDIPsList string     `json:"uuidIPsList"`
}

VulnHosts lists the hosts affected by the vulnerability

type VulnIPSummaryResult

type VulnIPSummaryResult struct {
	Name              string     `json:"name"`
	Family            VulnFamily `json:"family"`
	Hosts             VulnHosts  `json:"hosts"`
	PluginDescription string     `json:"pluginDescription"`
	PluginID          string     `json:"pluginID"`
	RepositoryID      string     `json:"repositoryID"`
	Severity          BaseInfo   `json:"severity"`
	Total             string     `json:"total"`
}

VulnIPSummaryResult contains the structure used by the 'vulnipsummary' analysis tool

type VulnRepository

type VulnRepository struct {
	DataFormat  string `json:"dataFormat"`
	Description string `json:"description"`
	ID          string `json:"id"`
	Name        string `json:"name"`
}

VulnRepository includes information about the respository that the vulnerability came from

type VulnSumDNSNameResult

type VulnSumDNSNameResult struct {
	DNSName          string         `json:"dnsName"`
	Repository       VulnRepository `json:"repository"`
	Score            string         `json:"score"`
	SeverityCritical string         `json:"severityCritical"`
	SeverityHigh     string         `json:"severityHigh"`
	SeverityInfo     string         `json:"severityInfo"`
	SeverityMedium   string         `json:"severityMedium"`
	SeverityLow      string         `json:"severityLow"`
	Total            string         `json:"total"`
}

VulnSumDNSNameResult contains the structure used by the 'sumdnsname' analysis tool

type VulnSumIPResult

type VulnSumIPResult struct {
	BiosGUID         string         `json:"biosGUID"`
	DNSName          string         `json:"dnsName"`
	IP               string         `json:"ip"`
	LastAuthRun      string         `json:"lastAuthRun"`
	LastUnauthRun    string         `json:"lastUnauthRun"`
	MacAddress       string         `json:"macAddress"`
	McafeeGUID       string         `json:"mcafeeGUID"`
	NetBiosName      string         `json:"netbiosName"`
	OSCPE            string         `json:"osCPE"`
	PluginSet        string         `json:"pluginSet"`
	PolicyName       string         `json:"policyName"`
	Repository       VulnRepository `json:"repository"`
	Score            string         `json:"score"`
	SeverityCritical string         `json:"severityCritical"`
	SeverityHigh     string         `json:"severityHigh"`
	SeverityInfo     string         `json:"severityInfo"`
	SeverityMedium   string         `json:"severityMedium"`
	SeverityLow      string         `json:"severityLow"`
	Total            string         `json:"total"`
	TPMID            string         `json:"tpmID"`
	Uniqueness       string         `json:"uniqueness"`
	UUID             string         `json:"uuid"`
}

VulnSumIPResult contains the structure used by the 'sumip' analysis tool.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL