package service import "encoding/json" type Intelligence struct { Source string `json:"source"` Confidence int `json:"confidence"` Expired bool `json:"expired"` IntelTags []TagsClass `json:"intel_tags"` FindTime string `json:"find_time"` IntelTypes []string `json:"intel_types"` UpdateTime string `json:"update_time"` } type OpenSource struct { Source string `json:"source"` Confidence int `json:"confidence"` Expired bool `json:"expired"` IntelTags []TagsClass `json:"intel_tags"` FindTime string `json:"find_time"` IntelTypes []string `json:"intel_types"` UpdateTime string `json:"update_time"` } type Location struct { Country string `json:"country"` Province string `json:"province"` City string `json:"city"` Longitude string `json:"lng"` Latitude string `json:"lat"` CountryCode string `json:"country_code"` } type Basic struct { Carrier string `json:"carrier"` Location Location `json:"location"` } type ASN struct { Rank int `json:"rank"` Info string `json:"info"` Number int `json:"number"` } type Port struct { Port int `json:"port"` Module string `json:"module"` Product string `json:"product"` Version string `json:"version"` Detail string `json:"detail"` } type RDNS struct { RDNS string `json:"rdns"` GetTime string `json:"get_time"` } type Intelligences struct { ThreatbookLab []Intelligence `json:"threatbook_lab"` XReward []interface{} `json:"x_reward"` OpenSource []OpenSource `json:"open_source"` } type Sample struct { Hash string `json:"sha256"` ScanTime string `json:"scan_time"` Ratio string `json:"ratio"` MalwareType string `json:"malware_type"` MalwareFamily string `json:"malware_family"` } type TagsClass struct { TagsType string `json:"tags_type"` //标签类别,如"industry(行业)"、"gangs(团伙)"、"virus_family(家族)"等 Tags []string `json:"tags"` //具体的攻击团伙或安全事件标签,例如:APT、海莲花等。 } type CAS struct { Protocol string `json:"protocol"` Port int16 `json:"port"` Period int `json:"period"` DigitalCertificate Certificate `json:"digital_certificate"` } type Certificate struct { Subject string `json:"subject"` Issuer string `json:"issuer"` Fingerprint string `json:"fingerprint"` Purpose string `json:"purpose"` Verify string `json:"verify"` Status string `json:"status"` Revoked bool `json:"revoked"` Begin string `json:"begin"` End string `json:"end"` StatusDesc string `json:"status_desc"` SerialNumber string `json:"serial_number"` RevokedTime string `json:"revoked_time"` } type IpInfo struct { Samples []Sample `json:"samples"` TagsClasses []TagsClass `json:"tags_classes"` Judgments []string `json:"judgments"` Intelligences Intelligences `json:"intelligences"` Scene string `json:"scene"` Basic Basic `json:"basic"` ASN ASN `json:"asn"` Ports []Port `json:"ports"` CAS []CAS `json:"cas"` UpdateTime string `json:"update_time"` RDNSList []RDNS `json:"rdns_list"` SumCurDomains string `json:"sum_cur_domains"` } type RespData struct { Data map[string]json.RawMessage `json:"data"` ResponseCode int `json:"response_code"` VerboseMsg string `json:"verbose_msg"` } type Reputation struct { IsMalicious bool `json:"is_malicious"` } type ASNPrivate struct { Rank int `json:"rank"` Info string `json:"info"` Number string `json:"number"` } type LocationPrivate struct { Country string `json:"country"` Province string `json:"province"` City string `json:"city"` Longitude float64 `json:"lng"` Latitude float64 `json:"lat"` CountryCode string `json:"country_code"` } type BasicPrivate struct { Carrier string `json:"carrier"` Location LocationPrivate `json:"location"` } type TagsClassPrivate map[string][]string type IPInfoPrivate struct { Judgments []string `json:"judgments"` Basic BasicPrivate `json:"basic"` ASN ASNPrivate `json:"asn"` Scene string `json:"scene"` IsMalicious bool `json:"is_malicious"` TagsClasses TagsClassPrivate `json:"tags_classes"` } type IPInfoPrivateRespData struct { IOC string `json:"ioc"` Intelligence []IPInfoPrivate `json:"intelligence"` } type IPInfoPrivateResp struct { Data []IPInfoPrivateRespData `json:"data"` ResponseCode int `json:"response_code"` VerboseMsg string `json:"verbose_msg"` } type WafService struct { GatewayName string `json:"gateway_name"` Mode string `json:"mode"` RuleNum int `json:"rule_num"` AttackNum int `json:"attack_num"` } // WAF configuration details type CreateWafReq struct { RegionCode string `json:"region_code"` Namespace string `json:"namespace"` GatewayName string `json:"gateway_name"` Port uint32 `json:"port"` Host []string `json:"host"` } type RuleRequest struct { CategoryID []string `json:"category_id"` Status int `json:"status"` } type WafMode string const ( WafModeProtect WafMode = "protect" WafModeAlert WafMode = "alert" WafModePassthrough WafMode = "passthrough" ) type UpdateModeReq struct { Mode WafMode `json:"mode"` GatewayName string `json:"gateway_name"` Namespace string `json:"namespace"` RegionCode string `json:"region_code"` } type WafRule struct { ID int `json:"id"` Level int `json:"level"` Name string `json:"name"` Type string `json:"type"` Description string `json:"description"` Expr string `json:"expr"` Mode string `json:"mode"` } type Catagory struct { EN string `json:"en"` Zh string `json:"zh"` } type Description struct { EN string `json:"en"` Zh string `json:"zh"` } type WafRuleCategory struct { CategoryID string `json:"category_id"` Status int `json:"status,omitempty"` Catagory Catagory `json:"catagory"` Description Description `json:"description"` Rules []WafRule `json:"rules"` }