From 5a7b53b815c73df0e8d2905fefb4968d0a33868f Mon Sep 17 00:00:00 2001 From: Jesse-Ma <24167796@qq.com> Date: Wed, 1 Mar 2023 17:08:45 +0800 Subject: [PATCH] getSecretKey and jsonresult --- src/api/lock.js | 14 ++++---- src/api/note.js | 42 ++++++++++++++++++---- src/i18n/config/en.js | 3 ++ src/libs/noteStorage.js | 27 ++++++++++++++ src/views/EditNote.vue | 80 ++++++++++++++++++++--------------------- src/views/ViewNote.vue | 8 +++-- 6 files changed, 117 insertions(+), 57 deletions(-) diff --git a/src/api/lock.js b/src/api/lock.js index 72bcbd2..a7caf60 100644 --- a/src/api/lock.js +++ b/src/api/lock.js @@ -1,13 +1,13 @@ -import { aesEncrypt, md5 } from "@/libs/secret"; +import { md5 } from "@/libs/secret"; export function getStoreKey(key) { return md5(key + key); } -export function getSecretKey(key, password) { - if (!password) { - password = key; - } +// export function getSecretKey(key, password) { +// if (!password) { +// password = key; +// } - return md5(aesEncrypt(key, password)); -} +// return md5(aesEncrypt(key, password)); +// } diff --git a/src/api/note.js b/src/api/note.js index 993a74c..a1aff09 100644 --- a/src/api/note.js +++ b/src/api/note.js @@ -1,9 +1,21 @@ import axios from "axios"; import { getStoreKey } from "@/api/lock"; import storage from "@/libs/storage"; -import { md5 } from "@/libs/secret"; +import { md5, wrap } from "@/libs/secret"; import NoteConstant from "@/libs/constants"; +axios.interceptors.response.use(undefined, (err) => { + const { config: originalRequest } = err; + if ( + (err?.code === 'ECONNABORTED' || + err?.message === 'Network Error' || + err?.message?.includes?.('timeout')) && + !originalRequest._retry + ) { + originalRequest._retry = true; + return axios.request(originalRequest); + } +}); export function saveNote(noteForm, secret) { let storeKey = secret.storeKey; @@ -11,6 +23,14 @@ export function saveNote(noteForm, secret) { let storeInfo = storage.local.getText(storeKey); let starray = storeInfo.split("|"); + if (starray[2] == "1") { + return new Promise(function (onCompleted) { + let res = { data: {} }; + res.data.code = "100013"; + onCompleted(res); + }); + } + let note = { lock: starray[0], cipher: starray[1], @@ -19,6 +39,15 @@ export function saveNote(noteForm, secret) { key: noteForm.key, }; + let viewStoreText = wrap(noteForm.text, secret.secretKey); + if (viewStoreText != note.text) { + return new Promise(function (onCompleted) { + let res = { data: {} }; + res.data.code = "100014"; + onCompleted(res); + }); + } + let bufferArrary = eval("[" + note.text + "]"); let array = Uint8Array.from(bufferArrary); let blob = new Blob([array], { type: "application/octet-stream" }); @@ -28,7 +57,7 @@ export function saveNote(noteForm, secret) { form.append("lock", note.lock); form.append("key", note.key); form.append("md5", md5(note.text)); - form.append("initTime",note.initTime) + form.append("initTime", note.initTime) let config = { headers: { "Content-Type": "multipart/form-data" }, @@ -91,16 +120,17 @@ export function getKeyMeta() { } export function ajaxGet(url) { - let data = {}; + let data = null; let xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, false); xmlhttp.onreadystatechange = () => { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200 || xmlhttp.status == 304) { if (xmlhttp.responseText) { - data = JSON.parse(xmlhttp.responseText); - } else { - data = {}; + let rs = JSON.parse(xmlhttp.responseText); + if (rs && rs.code == "000000") { + data = rs.data; + } } } } diff --git a/src/i18n/config/en.js b/src/i18n/config/en.js index dc1d8de..fb56481 100644 --- a/src/i18n/config/en.js +++ b/src/i18n/config/en.js @@ -26,6 +26,9 @@ const en = { "100006": "Server Unavailable!", "100011": "Empty Note!", "100012": "Too Large, Beyond {0}!", + "100013": "Repetitive submit!", + "100014": "Modified Text!", + "800001": "Repetitive Submit!", } }; export default en; diff --git a/src/libs/noteStorage.js b/src/libs/noteStorage.js index 4351b39..ca2815a 100644 --- a/src/libs/noteStorage.js +++ b/src/libs/noteStorage.js @@ -1,3 +1,5 @@ +import { getKeyMeta } from "@/api/note"; +import { getStoreKey } from "@/api/lock"; import { wrap } from "@/libs/secret"; import storage from "@/libs/storage"; import escapeHtml from "escape-html"; @@ -24,6 +26,31 @@ export function setStoreText(noteForm, state, secret) { ); } +export function setNewStoreText(noteForm) { + let keyMeta =getKeyMeta(); + let storeKey = getStoreKey(keyMeta.key); + + let text = noteForm.text; + + let storeText = ""; + + if (text) { + storeText = wrap(text, keyMeta.secretKey); + } + + storage.local.setText( + storeKey, + "0|" + + keyMeta.cipher + + "|0|" + + keyMeta.serverTime + + "|" + + storeText + ); + + return keyMeta.key; +} + export function clearStoreText(key) { if (!key) { return; diff --git a/src/views/EditNote.vue b/src/views/EditNote.vue index 92f4048..2fbe813 100644 --- a/src/views/EditNote.vue +++ b/src/views/EditNote.vue @@ -115,9 +115,9 @@ @click="createNote(); switchMenu(); " icon="md-add"> + + -->
- +
@@ -184,22 +183,21 @@-