MOKASZ\lw12420 1 éve
szülő
commit
a87960e4aa

+ 2 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewCommonOutController.java

@@ -191,7 +191,7 @@ public class PlanNewCommonOutController {
             });
             int type = f.type();
             if (type == 3 || type == 6 || type == 7) {
-                Mono<Boolean> rateReturn = blacklistService.getRateReturn(exchange);
+                Mono<Boolean> rateReturn = blacklistService.getRateReturn1(exchange);
                 return rateReturn.flatMap(bl->{
                     if(bl){
                         return  planNewCommonResMono;
@@ -1269,7 +1269,7 @@ public class PlanNewCommonOutController {
         Mono<PlanNewCommonShareRes> planNewCommonShareResMono = planNewCommonMono.flatMap(planNewCommon -> {
             int type = planNewCommon.type();
             if (type == 3 || type == 6 || type == 7) {
-                Mono<Boolean> rateReturn = blacklistService.getRateReturn(exchange);
+                Mono<Boolean> rateReturn = blacklistService.getRateReturn1(exchange);
                 return rateReturn.flatMap(bl -> {
                     if (bl) {
                         return resMono1;

+ 22 - 2
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/PlanNewOutController.java

@@ -94,6 +94,26 @@ public class PlanNewOutController {
     // }
 
     /**
+     * ip访问次数验证
+     * @param exchange
+     * @return {@link Mono}<{@link RStatus}<{@link IpEnterRes}>>
+     */
+    @GetMapping("getIpEnter")
+    public Mono<RStatus<IpEnterRes>> getIpEnter(ServerWebExchange exchange){
+        Mono<Boolean> rateReturn = blacklistService.getRateReturn(exchange);
+        return rateReturn.flatMap(bl->{
+            IpEnterRes dataLists = new IpEnterRes();
+            dataLists.setWxUrl(BlacklistService.wxUrl.get());
+            if(bl){
+                return RStatus.success(Mono.just(dataLists));
+            }else {
+                dataLists.setWxUrl(BlacklistService.wxUrl.get());
+                return RStatus.fail("1","",Mono.just(dataLists));
+            }
+        });
+    }
+
+    /**
      * 获取二维码缓存信息
      * @param id
      * @return {@link Mono}<{@link RStatus}<{@link QrcodeInfo}>>
@@ -598,7 +618,7 @@ public class PlanNewOutController {
             });
             return dataListsMono;
         });
-        Mono<Boolean> rateReturn = blacklistService.getRateReturn(exchange);
+        Mono<Boolean> rateReturn = blacklistService.getRateReturn1(exchange);
         return rateReturn.flatMap(bl->{
             if(bl){
                 return  RStatus.successList(dataListsMono1) ;
@@ -712,7 +732,7 @@ public class PlanNewOutController {
         });
 
         Mono<DataLists0> dataLists0Mono1 = setEndData(request, setFmV(request, setAudioV(request, dataLists0Mono)));
-        Mono<Boolean> rateReturn = blacklistService.getRateReturn(exchange);
+        Mono<Boolean> rateReturn = blacklistService.getRateReturn1(exchange);
         return rateReturn.flatMap(bl->{
             if(bl){
                 return  RStatus.successList(dataLists0Mono1) ;

+ 8 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/controller/planNew/res/IpEnterRes.java

@@ -0,0 +1,8 @@
+package com.webflux.launchadmin.mysql.controller.planNew.res;
+
+import lombok.Data;
+
+@Data
+public class IpEnterRes {
+    private String wxUrl;
+}

+ 31 - 0
launch-admin/src/main/java/com/webflux/launchadmin/mysql/service/ip/BlacklistService.java

@@ -70,6 +70,26 @@ public class BlacklistService {
         }
         return Mono.just(false);
     }
+
+    public Mono<Boolean> getRateReturn1(ServerWebExchange exchange){
+        ServerHttpRequest httpRequest = exchange.getRequest();
+        InetSocketAddress remoteAddress = httpRequest.getRemoteAddress();
+        String ipAddress;
+        if (remoteAddress != null) {
+            ipAddress = remoteAddress.getAddress().getHostAddress();
+        } else {
+            ipAddress = null;
+        }
+        if (Objects.nonNull(ipAddress)) {
+            try {
+                return getIpRateNum1(ipAddress);
+            }catch (Exception e){
+                log.error("ip黑名单验证:" +ipAddress+"::Error:::"+e.getMessage());
+                return Mono.just(false);
+            }
+        }
+        return Mono.just(false);
+    }
     private Mono<Boolean> getFrist(String unique){
         if(Objects.nonNull(unique)){
            return reactiveRedisTemplate.opsForValue().get(unique)
@@ -112,6 +132,17 @@ public class BlacklistService {
                         return Mono.just(true);
                     });});
     }
+    public Mono<Boolean> getIpRateNum1(String ip){
+        String keys=key+ip;
+        return reactiveRedisTemplate.opsForValue().get(keys)
+                .switchIfEmpty(Mono.just("0")) //
+                .flatMap(f->{
+                    if (Integer.parseInt(f) > ipRateLimitRange.get()) {
+                        return Mono.just(false);
+                    }
+                    return Mono.just(true);
+                });
+    }
     private static long getSecondsUntilNextMidnight() {
         LocalDateTime now = LocalDateTime.now();
         LocalDateTime midnight = now.toLocalDate().plusDays(1).atStartOfDay().plusHours(0).plusSeconds(1).plusMinutes(0);