Skip to content

API 参考

CPE库提供了一套全面的API,用于处理通用平台枚举(CPE)数据。本节涵盖了库中所有可用的公共类型、函数和接口。

概览

该库分为几个关键领域:

快速参考

核心函数

go
// 解析CPE字符串
func ParseCpe23(cpe23 string) (*CPE, error)
func ParseCpe22(cpe22 string) (*CPE, error)

// 格式化CPE字符串
func FormatCpe23(cpe *CPE) string
func FormatCpe22(cpe *CPE) string

// 匹配CPE
func (c *CPE) Match(other *CPE) bool
func MatchCPE(cpe1, cpe2 *CPE, options *MatchOptions) bool
func AdvancedMatchCPE(criteria, target *CPE, options *AdvancedMatchOptions) bool

// 存储操作
func NewFileStorage(baseDir string, enableCache bool) (*FileStorage, error)
func NewMemoryStorage() *MemoryStorage

核心类型

go
type CPE struct {
    Cpe23           string
    Part            Part
    Vendor          Vendor
    ProductName     Product
    Version         Version
    Update          Update
    Edition         Edition
    Language        Language
    SoftwareEdition string
    TargetSoftware  string
    TargetHardware  string
    Other           string
    Cve             string
    Url             string
}

type Part struct {
    ShortName   string
    LongName    string
    Description string
}

安装

bash
go get github.com/scagogogo/cpe

导入

go
import "github.com/scagogogo/cpe"

基本用法

go
package main

import (
    "fmt"
    "log"
    "github.com/scagogogo/cpe"
)

func main() {
    // 解析CPE字符串
    cpeObj, err := cpe.ParseCpe23("cpe:2.3:a:microsoft:windows:10:*:*:*:*:*:*:*")
    if err != nil {
        log.Fatal(err)
    }
    
    // 访问CPE组件
    fmt.Printf("部件: %s\n", cpeObj.Part.LongName)
    fmt.Printf("供应商: %s\n", cpeObj.Vendor)
    fmt.Printf("产品: %s\n", cpeObj.ProductName)
    fmt.Printf("版本: %s\n", cpeObj.Version)
    
    // 与另一个CPE匹配
    pattern, _ := cpe.ParseCpe23("cpe:2.3:a:microsoft:*:*:*:*:*:*:*:*:*")
    if pattern.Match(cpeObj) {
        fmt.Println("CPE匹配模式")
    }
}

下一步

Released under the MIT License.