This commit is contained in:
spiritlhl
2024-05-04 08:17:38 +00:00
parent 81df379022
commit 52bb9b9db6
23 changed files with 1409 additions and 0 deletions

86
network/utils/parse.go Normal file
View File

@@ -0,0 +1,86 @@
package utils
import (
networkModel "github.com/oneclickvirt/basics/network/model"
"strconv"
"strings"
)
func ParseIpInfo(data map[string]interface{}) *networkModel.IpInfo {
ipInfo := &networkModel.IpInfo{}
if ip, ok := data["ip"].(string); ok {
ipInfo.Ip = ip
}
if location, ok := data["location"].(map[string]interface{}); ok {
if city, ok := location["city"].(string); ok {
ipInfo.City = city
}
if region, ok := location["region"].(map[string]interface{}); ok {
if name, ok := region["name"].(string); ok {
ipInfo.Region = name
}
}
if country, ok := location["country"].(map[string]interface{}); ok {
if name, ok := country["name"].(string); ok {
ipInfo.Country = name
}
}
}
if connection, ok := data["connection"].(map[string]interface{}); ok {
if asn, ok := connection["asn"].(float64); ok {
ipInfo.ASN = strconv.Itoa(int(asn))
}
if org, ok := connection["organization"].(string); ok {
ipInfo.Org = org
}
}
return ipInfo
}
func ParseSecurityInfo(data map[string]interface{}) *networkModel.SecurityInfo {
securityInfo := &networkModel.SecurityInfo{}
if security, ok := data["security"].(map[string]interface{}); ok {
if isAbuser, ok := security["is_abuser"].(bool); ok {
securityInfo.IsAbuser = strconv.FormatBool(isAbuser)
}
if isAttacker, ok := security["is_attacker"].(bool); ok {
securityInfo.IsAttacker = strconv.FormatBool(isAttacker)
}
if isBogon, ok := security["is_bogon"].(bool); ok {
securityInfo.IsBogon = strconv.FormatBool(isBogon)
}
if isCloudProvider, ok := security["is_cloud_provider"].(bool); ok {
securityInfo.IsCloudProvider = strconv.FormatBool(isCloudProvider)
}
if isProxy, ok := security["is_proxy"].(bool); ok {
securityInfo.IsProxy = strconv.FormatBool(isProxy)
}
if isRelay, ok := security["is_relay"].(bool); ok {
securityInfo.IsRelay = strconv.FormatBool(isRelay)
}
if isTor, ok := security["is_tor"].(bool); ok {
securityInfo.IsTor = strconv.FormatBool(isTor)
}
if isTorExit, ok := security["is_tor_exit"].(bool); ok {
securityInfo.IsTorExit = strconv.FormatBool(isTorExit)
}
if isVpn, ok := security["is_vpn"].(bool); ok {
securityInfo.IsVpn = strconv.FormatBool(isVpn)
}
if isAnonymous, ok := security["is_anonymous"].(bool); ok {
securityInfo.IsAnonymous = strconv.FormatBool(isAnonymous)
}
if isThreat, ok := security["is_threat"].(bool); ok {
securityInfo.IsThreat = strconv.FormatBool(isThreat)
}
}
return securityInfo
}
// ParseYesNo 检测文本内容含No则返回No否则返回Yes
func ParseYesNo(text string) string {
if strings.Contains(strings.ToLower(text), "no") {
return "No"
}
return "Yes"
}