Browse Source

本地加密日志:缓冲再写

Michael Wang 5 years ago
parent
commit
14b1745402
1 changed files with 73 additions and 55 deletions
  1. 73 55
      src/utils/electronLog.js

+ 73 - 55
src/utils/electronLog.js

@@ -3,6 +3,7 @@ const originalConsoleLog = console.log;
 
 const isElectron = typeof nodeRequire != "undefined";
 let log = null;
+let logArray = [];
 if (isElectron) {
   try {
     log = window.nodeRequire("electron-log");
@@ -10,65 +11,82 @@ if (isElectron) {
     console.debug(error);
   }
   console.log = async function(...args) {
-    if (log && log.info) {
-      log.info(...args);
-    }
-    // log && log.info(...args);
     // if (log && log.info) {
-    //   const encryLog = [window.location.pathname, ...args];
-    //   encryLog.map(v => {
-    //     // 将对象转为string,Error对象怎么办?
-    //     v = JSON.stringify(v);
-    //     return v;
-    //   });
-    //   const message = encryLog.join(";;; ");
-    //   // originalConsoleLog.call(window, message);
-    //   let enc = new TextEncoder();
-    //   const encoded = enc.encode(message);
+    //   log.info(...args);
+    // }
+    // log && log.info(...args);
+    try {
+      if (log && log.info) {
+        const encryLog = [window.location.pathname, ...args];
+        encryLog.map(v => {
+          // 将对象转为string,Error对象怎么办?
+          v = JSON.stringify(v);
+          return v;
+        });
+        const messageSingle = encryLog.join(";;; ");
+        logArray.push(messageSingle);
 
-    //   const jwkEcKey = {
-    //     alg: "RSA-OAEP-256",
-    //     e: "AQAB",
-    //     ext: true,
-    //     key_ops: ["encrypt"],
-    //     kty: "RSA",
-    //     n:
-    //       "3vl4K5l_XhHYnm28Nz0YoaP7UTUPRQD4_S2btf1R1kzuVbbqg3eBru7OOcPSVOVFd0GGwy1cXlq1-J9XqFTEscFLIQYCimvLhtSDs7797b6DMwpWQ7Y_QvaVXhwgZZh7KlD0pLUtF2NwDYK10bPaWHEik-OwDCQE5P5Gv6Oz4TZZAjSpxOCNx_ui_KGeu8c63if1-mNwzn70U82LjhbHy3edDjAdT0JDPxqYPiMwSo8lhDy1CqFiyQxq2unPHJcRxb9fAwV3siyWOdHQaaKH2GvCxhpsPUHnVlIng02yeZBzv-UIz6fAPWNhC-6H_5GeZ_Qlk6qQIPzFQ3DPD82VGF9GWGbkdWgHm3JZsSyjjZXYSU3lmc3gaO8q5ZDGGlmh31ApOYddEsFcfYobI3RJwhlvAFHxr9YtRjXlaL-YUf_KwztJFFNw75WSWp8-WtMy96LL3cljjR3rxHYBjiOYDsReTIIeLEDEigcKFyswuc71qSIB6XQFxM6J6u3Urvu3uoPiu-aqujVj6gtOSfOHGvCXq05n3eBk89o2kY92J10v1ANDbZo6HneqKFKJ2Dh8uUaavdSJfHWc8QTy2b50HasxZj9mv_ADaBYaGb2C_tnNvgkusnHu87qxt95iqLPJOzMy4au0UD6kPZ8aTkGZq_b2gT9LHxi6PPdEOjRdVxs",
-    //   };
-    //   const publicKey = await window.crypto.subtle.importKey(
-    //     "jwk",
-    //     jwkEcKey,
-    //     {
-    //       name: "RSA-OAEP",
-    //       modulusLength: 4096,
-    //       publicExponent: new Uint8Array([1, 0, 1]),
-    //       hash: "SHA-256",
-    //     },
-    //     true,
-    //     ["encrypt"]
-    //   );
+        await new Promise(resolve => setTimeout(() => resolve(), 1000));
+        if (logArray.length === 0 || !logArray.includes(messageSingle)) {
+          return;
+        }
+        // originalConsoleLog.call(window, message);
+        const messageMerge = logArray.join(" +++++ ");
+        logArray = [];
+        let enc = new TextEncoder();
+        const encoded = enc.encode(messageMerge);
 
-    //   const encryMsg = await window.crypto.subtle.encrypt(
-    //     {
-    //       name: "RSA-OAEP",
-    //       modulusLength: 4096,
-    //       publicExponent: new Uint8Array([1, 0, 1]),
-    //       hash: "SHA-256",
-    //     },
-    //     publicKey,
-    //     encoded
-    //   );
-    //   const ab2str = function(buf) {
-    //     return String.fromCharCode.apply(null, new Uint8Array(buf));
-    //   };
+        const jwkEcKey = {
+          alg: "RSA-OAEP-256",
+          e: "AQAB",
+          ext: true,
+          key_ops: ["encrypt"],
+          kty: "RSA",
+          n:
+            "3vl4K5l_XhHYnm28Nz0YoaP7UTUPRQD4_S2btf1R1kzuVbbqg3eBru7OOcPSVOVFd0GGwy1cXlq1-J9XqFTEscFLIQYCimvLhtSDs7797b6DMwpWQ7Y_QvaVXhwgZZh7KlD0pLUtF2NwDYK10bPaWHEik-OwDCQE5P5Gv6Oz4TZZAjSpxOCNx_ui_KGeu8c63if1-mNwzn70U82LjhbHy3edDjAdT0JDPxqYPiMwSo8lhDy1CqFiyQxq2unPHJcRxb9fAwV3siyWOdHQaaKH2GvCxhpsPUHnVlIng02yeZBzv-UIz6fAPWNhC-6H_5GeZ_Qlk6qQIPzFQ3DPD82VGF9GWGbkdWgHm3JZsSyjjZXYSU3lmc3gaO8q5ZDGGlmh31ApOYddEsFcfYobI3RJwhlvAFHxr9YtRjXlaL-YUf_KwztJFFNw75WSWp8-WtMy96LL3cljjR3rxHYBjiOYDsReTIIeLEDEigcKFyswuc71qSIB6XQFxM6J6u3Urvu3uoPiu-aqujVj6gtOSfOHGvCXq05n3eBk89o2kY92J10v1ANDbZo6HneqKFKJ2Dh8uUaavdSJfHWc8QTy2b50HasxZj9mv_ADaBYaGb2C_tnNvgkusnHu87qxt95iqLPJOzMy4au0UD6kPZ8aTkGZq_b2gT9LHxi6PPdEOjRdVxs",
+        };
+        const publicKey = await window.crypto.subtle.importKey(
+          "jwk",
+          jwkEcKey,
+          {
+            name: "RSA-OAEP",
+            modulusLength: 4096,
+            publicExponent: new Uint8Array([1, 0, 1]),
+            hash: "SHA-256",
+          },
+          true,
+          ["encrypt"]
+        );
+        console.debug("start encrypt");
+        const encryMsg = await window.crypto.subtle.encrypt(
+          {
+            name: "RSA-OAEP",
+            modulusLength: 4096,
+            publicExponent: new Uint8Array([1, 0, 1]),
+            hash: "SHA-256",
+          },
+          publicKey,
+          encoded
+        );
+        console.debug("encrypt result: ", encryMsg);
+        const ab2str = function(buf) {
+          return String.fromCharCode.apply(null, new Uint8Array(buf));
+        };
 
-    //   // originalConsoleLog.call(window, encryMsg);
-    //   // 512 length
-    //   // var bufView = new Uint8Array(encryMsg);
-    //   // originalConsoleLog(bufView);
-    //   log.info(">>==>>" + window.btoa(ab2str(encryMsg)) + "<<==<<");
-    // }
-    originalConsoleLog.call(window, ...args);
+        // originalConsoleLog.call(window, encryMsg);
+        // 512 length
+        // var bufView = new Uint8Array(encryMsg);
+        // originalConsoleLog(bufView);
+        log.info(">>==>>" + window.btoa(ab2str(encryMsg)) + "<<==<<");
+      }
+    } catch (error) {
+      console.debug(error);
+    }
+    try {
+      originalConsoleLog.call(window, ...args);
+    } catch (error) {
+      console.debug(error);
+    }
   };
 }