package controller import ( "time" "github.com/gin-gonic/gin" "gitlab.com/tensorsecurity-rd/waf-console/internal/model" "gitlab.com/tensorsecurity-rd/waf-console/internal/service" "gitlab.com/tensorsecurity-rd/waf-console/internal/utils" ) type IpInfoController struct { service service.Service // controller.Api } var isMock bool // func NewIpInfoController(apiKey string) *IpInfoController { // mock := os.Getenv("MOCK") // // var isMock bool // if mock == "true" { // isMock = true // } // useCachedIPInfo := os.Getenv("USE_IPINFO_CACHE") // mode := os.Getenv("MODE") // if mode == "private" { // return &IpInfoController{ // service: service.NewIpServicePrivate(config.WeibuUrl, apiKey, useCachedIPInfo == "true"), // } // } else { // return &IpInfoController{ // service: service.NewIpService(config.WeibuUrl, apiKey, useCachedIPInfo == "true"), // } // } // } func mockResponse(ctx *gin.Context) { ipInfo := model.IPInfo{ Location: model.Location{ Country: "United States", Province: "New York", City: "New York City", Longitude: -74.006, Latitude: 40.713, CountryCode: "US", }, Carrier: "China mobile", OSSIntelligences: []model.Intelligence{ { Source: "ThreatBook Labs", Confidence: 70, Expired: false, FindTime: time.Now().UnixMilli(), UpdateTime: time.Now().UnixMilli(), IntelTypes: []string{}, IntelTags: []model.TagsClass{}, }, }, OnlineIntelligences: []model.Intelligence{ { Source: "ThreatBook Labs", Confidence: 90, Expired: true, FindTime: time.Now().UnixMilli(), UpdateTime: time.Now().UnixMilli(), IntelTypes: []string{"aaa"}, IntelTags: []model.TagsClass{ { TagsType: "industry", Tags: "aaaa", }, }, }, }, Ports: []model.Port{ { Port: 80, Module: "ddd", Product: "test", Version: "4", Detail: "none", }, }, Samples: []model.Sample{ { Hash: "12344", ScanTime: time.Now().UnixMilli(), Ratio: "19/25", MalwareType: "attck", MalwareFamily: "wwww", }, }, Cas: []model.CAS{ { Protocol: "ssl", Port: 443, Period: 122, DigitalCertificate: model.Certificate{ Subject: "CloudFlare Origin Certificate", Fingerprint: "857b7363019f1bf550375d56fa1f483ffb72bdef", Purpose: "SSL client|SSL server|Netscape SSL server|Any Purpose|Any Purpose CA|OCSP helper", }, }, }, Rdnses: []model.RDNS{ { RDNS: "aa", GetTime: "", }, }, TagsClasses: []model.TagsClass{ { TagsType: "hijacked", Tags: "", }, }, Scene: "测试", IsMalicious: true, } resp := &utils.SingleRespData{ Item: ipInfo, } utils.AssembleResponse(ctx, resp, nil) } // func (c *IpInfoController) QueryIP(ctx *gin.Context) { // ip := ctx.Param("ip") // if isMock { // logging.Get().Info().Msg("mock data") // mockResponse(ctx) // return // } // ipInfo, err := c.service.QueryIP(ip) // if err != nil { // logging.Get().Err(err).Msgf("query ip info") // utils.AssembleResponse(ctx, nil, err) // // ctx.JSON(http.StatusInternalServerError, err) // return // } // resp := &utils.SingleRespData{ // Item: ipInfo, // } // utils.AssembleResponse(ctx, resp, nil) // }