package adslib import ( "bytes" "encoding/json" "fmt" "github.com/gin-gonic/gin" "io/ioutil" "miads/adslib/encrypt" "miads/adslib/utils" "net/url" "strings" "time" ) type Request struct { Imei string Idfa string Model string Brand string ScreenSize string `json:"screen_size"` NetworkType int `json:"network_type,string"` Androidid string `json:"android_id"` Platform int `json:"platform,string"` OsVersion string `json:"os_version"` UaClient string `json:"ua"` ReqSource string `json:"req_source"` Mac string `json:"mac"` ReqSourceIp string `json:"ip"` DeviceId string `json:"device_id"` NewAdsFlag int64 content string RequestTime int64 `json:"-"` QueryString string `json:"-"` Body string `json:"-"` } func (self *Request) Parse(c *gin.Context) { self.RequestTime = time.Now().Unix() self.QueryString = c.Request.URL.RawQuery body, _ := c.GetRawData() self.Body = string(body) // 取了body要塞回去 c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body)) self.Imei = utils.GetArgument(c, "imei", "") self.Idfa = utils.GetArgument(c, "idfa", "") self.Model = utils.GetArgument(c, "model", "") self.Brand = utils.GetArgument(c, "brand", "") self.ScreenSize = utils.GetArgument(c, "screen_size", "") self.NetworkType = int(utils.GetIntArgument(c, "network_type", 3)) self.Androidid = utils.GetArgument(c, "android_id", "") self.Platform = int(utils.GetIntArgument(c, "platform", 1)) self.OsVersion = utils.GetArgument(c, "os_version", "") self.UaClient = utils.GetArgument(c, "ua", "") self.ReqSource = utils.GetArgument(c, "req_source", "") self.Mac = utils.GetArgument(c, "mac", "") self.ReqSourceIp = utils.GetArgument(c, "ip", "") self.DeviceId = utils.GetArgument(c, "device_id", "") self.NewAdsFlag = utils.GetIntArgument(c, "new_ads_flag", 0) self.content = utils.GetArgument(c, "ads_content", "") fmt.Printf("ads flag: %d, content: %s\n", self.NewAdsFlag, self.content) // 进行解密 if self.NewAdsFlag == 1 && self.content != "" { contentDecode, err := encrypt.Decrypt(self.content, []byte(GetConf().SecretKey)) if err != nil { fmt.Printf("error: %s", err) c.String(404, "decode failed") return } contentDecode = utils.Rstrip(contentDecode) err = json.Unmarshal([]byte(contentDecode), self) if err != nil { fmt.Println(err) c.String(404, "decode json body failed: %s", err) return } fmt.Println(contentDecode) } self.UaClient, _ = url.QueryUnescape(self.UaClient) self.Mac = strings.ReplaceAll(self.Mac, ":", "") } func (self *Request) IsMiDevice() bool { if strings.Index(self.Brand, "mi") != -1 || strings.Index(self.Brand, "MI") != -1 || strings.Index(self.Brand, "Mi") != -1 { return true } return false }