Browse Source

校验服务序列号

guo00guo 4 years ago
parent
commit
3199d82653

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/CrowdTestEndPointException.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.exception;
+
+import lombok.AllArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019-07-30 17:24
+ */
+@AllArgsConstructor
+public class CrowdTestEndPointException extends BaseException {
+    public CrowdTestEndPointException(String msg) {
+        super(msg);
+    }
+}

+ 17 - 12
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestTaskCommand.java

@@ -2,6 +2,7 @@ package com.mooctest.crowd.site.command;
 
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.domain.domainobject.EndPoint;
+import com.mooctest.crowd.domain.exception.CrowdTestEndPointException;
 import lombok.Data;
 import org.springframework.beans.BeanUtils;
 
@@ -75,19 +76,23 @@ public class CrowdTestTaskCommand {
 
         if(endPoint.getServerCode() != null && endPoint.getServerCode() != ""){
             String serverCode = endPoint.getServerCode();
-            byte[] decodedBytes = Base64.getDecoder().decode(serverCode);
-            String url = new String(decodedBytes);
-
-            if(url.contains("examId_")){
-                endPoint.setExamId(url.split("examId_")[1].split("/")[0]);
-                url = url.replaceFirst("examId_","");
-            }
-            if(url.contains("caseId_")){
-                endPoint.setCaseId(url.split("caseId_")[1].split("/")[0]);
-                url = url.replaceFirst("caseId_","");
+            try {
+                byte[] decodedBytes = Base64.getDecoder().decode(serverCode);
+                String url = new String(decodedBytes);
+
+                if(url.contains("examId_")){
+                    endPoint.setExamId(url.split("examId_")[1].split("/")[0]);
+                    url = url.replaceFirst("examId_","");
+                }
+                if(url.contains("caseId_")){
+                    endPoint.setCaseId(url.split("caseId_")[1].split("/")[0]);
+                    url = url.replaceFirst("caseId_","");
+                }
+                endPoint.setUrl(url);
+                crowdTestTask.setEndPoint(endPoint);
+            }catch (IllegalArgumentException e){
+                throw new CrowdTestEndPointException();
             }
-            endPoint.setUrl(url);
-            crowdTestTask.setEndPoint(endPoint);
         }
         return crowdTestTask;
     }

+ 4 - 1
site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java

@@ -53,8 +53,11 @@ public class ExceptionAdvice {
             return "您未认证为接包用户,请认证后操作。";
         } else if (e instanceof HaveNotPartAuthException){
             return "您未认证为发包用户,请认证后操作。";
-        }  else
+        } else if(e instanceof CrowdTestEndPointException){
+            return "任务的服务序列号输入有误,不是base64加密后的序列号。";
+        } else {
             return e.getMessage();
+        }
     }
 
     @ExceptionHandler(UnauthorizedException.class)