xiongzhu пре 4 година
родитељ
комит
6b6e17c0d5

+ 1 - 0
src/main/data-center-admin/package.json

@@ -19,6 +19,7 @@
     "chart.js": "^2.8.0",
     "chart.js": "^2.8.0",
     "clipboard": "^2.0.6",
     "clipboard": "^2.0.6",
     "core-js": "^3.6.5",
     "core-js": "^3.6.5",
+    "crypto-js": "^4.1.1",
     "date-fns": "^2.14.0",
     "date-fns": "^2.14.0",
     "element-ui": "^2.15.1",
     "element-ui": "^2.15.1",
     "faker": "^5.4.0",
     "faker": "^5.4.0",

+ 26 - 0
src/main/data-center-admin/src/plugins/http.js

@@ -1,12 +1,30 @@
 import axios from 'axios';
 import axios from 'axios';
 import router from '../router';
 import router from '../router';
 import qs from 'qs';
 import qs from 'qs';
+import CryptoJS from 'crypto-js';
 /* eslint-disable */
 /* eslint-disable */
+
 let baseUrl = process.env.VUE_APP_BASE_URL;
 let baseUrl = process.env.VUE_APP_BASE_URL;
 const axiosInstance = axios.create({
 const axiosInstance = axios.create({
     baseURL: baseUrl
     baseURL: baseUrl
 });
 });
 
 
+function decrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('2181E9E80460B852859EE455AC5203D9');
+    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);
+}
+
 axiosInstance.interceptors.request.use(
 axiosInstance.interceptors.request.use(
     function(config) {
     function(config) {
         config.headers = config.headers || {};
         config.headers = config.headers || {};
@@ -23,6 +41,14 @@ axiosInstance.interceptors.request.use(
 
 
 axiosInstance.interceptors.response.use(
 axiosInstance.interceptors.response.use(
     function(response) {
     function(response) {
+        if (response.headers['content-encrypted'] === 'true') {
+            let decrypted = decrypt(response.data);
+            if (response.headers['content-type'].includes('application/json')) {
+                response.data = JSON.parse(decrypted);
+            } else {
+                response.data = decrypted;
+            }
+        }
         return response;
         return response;
     },
     },
     function(error) {
     function(error) {

+ 5 - 0
src/main/data-center-admin/yarn.lock

@@ -2970,6 +2970,11 @@ crypto-browserify@^3.11.0:
     randombytes "^2.0.0"
     randombytes "^2.0.0"
     randomfill "^1.0.3"
     randomfill "^1.0.3"
 
 
+crypto-js@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.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:
 css-color-names@0.0.4, css-color-names@^0.0.4:
   version "0.0.4"
   version "0.0.4"
   resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
   resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"

+ 1 - 0
src/main/data-center/package.json

@@ -10,6 +10,7 @@
   "dependencies": {
   "dependencies": {
     "axios": "^0.21.1",
     "axios": "^0.21.1",
     "core-js": "^3.6.5",
     "core-js": "^3.6.5",
+    "crypto-js": "^4.1.1",
     "dayjs": "^1.10.4",
     "dayjs": "^1.10.4",
     "echarts": "^5.1.0",
     "echarts": "^5.1.0",
     "echarts-gl": "^2.0.4",
     "echarts-gl": "^2.0.4",

+ 26 - 0
src/main/data-center/src/plugins/http.js

@@ -1,11 +1,29 @@
 import axios from 'axios';
 import axios from 'axios';
 import router from '../router';
 import router from '../router';
 import qs from 'qs';
 import qs from 'qs';
+import CryptoJS from 'crypto-js';
+
 let baseUrl = process.env.VUE_APP_BASE_URL; //如要修改本地开发地址,新建.env.development.local文件
 let baseUrl = process.env.VUE_APP_BASE_URL; //如要修改本地开发地址,新建.env.development.local文件
 const axiosInstance = axios.create({
 const axiosInstance = axios.create({
     baseURL: baseUrl,
     baseURL: baseUrl,
 });
 });
 
 
+function decrypt(content) {
+    const key = CryptoJS.enc.Hex.parse('2181E9E80460B852859EE455AC5203D9');
+    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);
+}
+
 axiosInstance.interceptors.request.use(
 axiosInstance.interceptors.request.use(
     function (config) {
     function (config) {
         config.headers = config.headers || {};
         config.headers = config.headers || {};
@@ -22,6 +40,14 @@ axiosInstance.interceptors.request.use(
 
 
 axiosInstance.interceptors.response.use(
 axiosInstance.interceptors.response.use(
     function (response) {
     function (response) {
+        if (response.headers['content-encrypted'] === 'true') {
+            let decrypted = decrypt(response.data);
+            if (response.headers['content-type'].includes('application/json')) {
+                response.data = JSON.parse(decrypted);
+            } else {
+                response.data = decrypted;
+            }
+        }
         return response;
         return response;
     },
     },
     function (error) {
     function (error) {

+ 5 - 0
src/main/data-center/yarn.lock

@@ -2857,6 +2857,11 @@ crypto-browserify@^3.11.0:
     randombytes "^2.0.0"
     randombytes "^2.0.0"
     randomfill "^1.0.3"
     randomfill "^1.0.3"
 
 
+crypto-js@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.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:
 css-color-names@0.0.4, css-color-names@^0.0.4:
   version "0.0.4"
   version "0.0.4"
   resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz"
   resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz"