From f537abe9f3646c739beaf15076246a2f71a347e9 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 20 二月 2025 16:57:55 +0800 Subject: [PATCH] IOS广告增加区域屏蔽 --- src/main/java/com/yeshi/buwan/aspect/SignAspect.java | 111 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 83 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/aspect/SignAspect.java b/src/main/java/com/yeshi/buwan/aspect/SignAspect.java index d9fa524..3168226 100644 --- a/src/main/java/com/yeshi/buwan/aspect/SignAspect.java +++ b/src/main/java/com/yeshi/buwan/aspect/SignAspect.java @@ -1,6 +1,6 @@ package com.yeshi.buwan.aspect; -import com.yeshi.buwan.domain.DetailSystem; +import com.yeshi.buwan.domain.system.DetailSystem; import com.yeshi.buwan.service.imp.SystemService; import com.yeshi.buwan.util.JsonUtil; import com.yeshi.buwan.util.Utils; @@ -9,14 +9,16 @@ import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import org.yeshi.utils.StringUtil; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.io.PrintWriter; +import java.util.*; @Component @Aspect @@ -28,44 +30,97 @@ //绛惧悕楠岃瘉 @Around("execution(public * com.yeshi.buwan.controller.api.*.*(..))") - public Object verifySign(ProceedingJoinPoint joinPoint) throws IOException { - ServletRequestAttributes servletContainer = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = servletContainer.getRequest(); - HttpServletResponse response = servletContainer.getResponse(); + public Object verifySign(ProceedingJoinPoint joinPoint) throws Throwable { + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST); + HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse(); PrintWriter out = null; - + AcceptData acceptData = null; Object[] args = joinPoint.getArgs(); for (Object obj : args) { if (obj instanceof AcceptData) { - AcceptData acceptData = (AcceptData) obj; - if (acceptData != null) { - if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { - acceptData.setChannel("appstore"); - } - //娉ㄥ叆detailSystem - DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); - acceptData.setDetailSystem(detailSystem); - } - + acceptData = (AcceptData) obj; } else if (obj instanceof PrintWriter) { out = (PrintWriter) obj; } } - if (!Utils.signIsRight(request)) { - if (out == null) - out = response.getWriter(); - out.print(JsonUtil.loadFalseJson("绛惧悕閿欒")); - return null; + + //濡傛灉鏄疉ndroid鏂扮増鏈垯璋冪敤鏂扮殑绛惧悕鏂规硶 + //甯冧父3.8.7涔嬪悗璋冪敤鏂扮殑绛惧悕鏂规硶 + + if (acceptData != null && "android".equalsIgnoreCase(acceptData.getPlatform()) && acceptData.getVersion() >= 105) { + String sign = getNewSign(request, "8888B&*@-uWan88/',@@^"); + + if (!sign.equalsIgnoreCase(acceptData.getSign())) { + if (out == null) + out = response.getWriter(); + out.print(JsonUtil.loadFalseJson("绛惧悕閿欒")); + return null; + } + } else if ("com.xinlian.hjtv.ios".equalsIgnoreCase(acceptData.getPackage())) { + //IOS闊╁墽绛惧悕鏂瑰紡 + String sign = getNewSign(request, "8888B&*@-hanJu88/',@@^"); + if (!sign.equalsIgnoreCase(acceptData.getSign())) { + if (out == null) + out = response.getWriter(); + out.print(JsonUtil.loadFalseJson("绛惧悕閿欒")); + return null; + } + } else { + if (!Utils.signIsRight(request)) { + if (out == null) + out = response.getWriter(); + out.print(JsonUtil.loadFalseJson("绛惧悕閿欒")); + return null; + } } - Object obj = null; - try { - obj = joinPoint.proceed(args); - } catch (Throwable e) { - e.printStackTrace(); + + if (acceptData != null) { + if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { + acceptData.setChannel("appstore"); + } + if (acceptData.getPackageName().equalsIgnoreCase("com.doudou.ysvideo.lite")) { + //灏忕背涓婃灦浣跨敤 + if (!"xiaomi".equalsIgnoreCase(acceptData.getChannel())) { + acceptData.setPackageName("com.doudou.ysvideo"); + acceptData.setChildPackage("com.doudou.ysvideo.lite"); + } else { + acceptData.setChildPackage("com.doudou.ysvideo.lite"); + } + } else { + acceptData.setChildPackage(acceptData.getPackage()); + } + //娉ㄥ叆detailSystem + DetailSystem detailSystem = systemService.getDetailSystemByPackage(acceptData.getPackageName()); + acceptData.setDetailSystem(detailSystem); + + detailSystem = systemService.getDetailSystemByPackage(acceptData.getChildPackage()); + acceptData.setChildDetailSystem(detailSystem); } - return obj; + return joinPoint.proceed(args); + } + + + public static String getNewSign(HttpServletRequest request, String signKey) { + Map<String, String[]> params = request.getParameterMap(); + List<String> list = new ArrayList<>(); + + //绛惧悕 + for (Iterator<String> its = params.keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + if ("sign".equalsIgnoreCase(key)) + continue; + list.add(key + "=" + params.get(key)[0]); + } + + Collections.sort(list); + String str = StringUtil.concat(list, "&"); + str+=signKey; + System.out.println("鍔犲瘑鍓嶅瓧绗︿覆锛�"+str); + String sign = StringUtil.Md5(str ); + return sign; } -- Gitblit v1.8.0