xiongzhu há 2 anos atrás
pai
commit
545f54e6ba
2 ficheiros alterados com 37 adições e 1 exclusões
  1. 36 0
      src/plugins/http.js
  2. 1 1
      yarn.lock

+ 36 - 0
src/plugins/http.js

@@ -1,11 +1,35 @@
 import axios from 'axios';
 import qs from 'qs';
+import CryptoJS from 'crypto-js';
 /* eslint-disable */
 let baseUrl = process.env.VUE_APP_BASE_URL;
 const axiosInstance = axios.create({
     baseURL: baseUrl
 });
+function decrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('6DF3AE10ADB6B41405DE92C1300CEA6A');
+    const cipherText = CryptoJS.enc.Hex.parse(content);
+    var decrypted = CryptoJS.AES.decrypt(
+        {
+            ciphertext: cipherText
+        },
+        key,
+        {
+            mode: CryptoJS.mode.ECB,
+            padding: CryptoJS.pad.Pkcs7
+        }
+    );
+    return decrypted.toString(CryptoJS.enc.Utf8);
+}
 
+function encrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('6DF3AE10ADB6B41405DE92C1300CEA6A');
+    var encrypted = CryptoJS.AES.encrypt(content, key, {
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7
+    });
+    return encrypted.ciphertext.toString(CryptoJS.enc.Hex);
+}
 axiosInstance.interceptors.request.use(
     function (config) {
         config.headers = config.headers || {};
@@ -22,6 +46,18 @@ axiosInstance.interceptors.request.use(
 
 axiosInstance.interceptors.response.use(
     function (response) {
+        if (response.headers['content-encrypted'] === 'true') {
+            if (navigator.webdriver) {
+                throw new Error('webdriver detected');
+            }
+            let decrypted = decrypt(response.data);
+            console.log('decrypted', decrypted);
+            if (response.headers['content-type'].includes('application/json')) {
+                response.data = JSON.parse(decrypted);
+            } else {
+                response.data = decrypted;
+            }
+        }
         return response;
     },
     function (error) {

+ 1 - 1
yarn.lock

@@ -3318,7 +3318,7 @@ crypto-browserify@^3.11.0:
 
 crypto-js@^4.1.1:
   version "4.1.1"
-  resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz"
+  resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
   integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
 
 css-color-names@0.0.4, css-color-names@^0.0.4: