|
1 | 1 | import os |
2 | | - |
| 2 | +import base64 |
3 | 3 | # from thrift.Thrift import * |
4 | 4 | from evernote.edam.notestore.ttypes import NoteFilter, NotesMetadataResultSpec |
5 | 5 | from evernote.edam.error.ttypes import EDAMSystemException, EDAMErrorCode |
|
28 | 28 | GUID_FIELD_NAME = 'Evernote GUID' |
29 | 29 |
|
30 | 30 | SETTING_UPDATE_EXISTING_NOTES = 'evernoteUpdateExistingNotes' |
31 | | -SETTING_TOKEN = 'evernoteToken' |
| 31 | +SETTING_TOKEN = 'evernoteToken_encoded' |
32 | 32 | SETTING_KEEP_TAGS = 'evernoteKeepTags' |
33 | 33 | SETTING_TAGS_TO_IMPORT = 'evernoteTagsToImport' |
34 | 34 | SETTING_DEFAULT_TAG = 'evernoteDefaultTag' |
@@ -191,13 +191,16 @@ def __init__(self): |
191 | 191 | showInfo("We will open a Evernote Tab in your browser so you can allow access to your account") |
192 | 192 | openLink(url) |
193 | 193 | oauth_verifier = getText(prompt="Please copy the code that showed up, after allowing access, in here")[0] |
| 194 | + secret_key = getText(prompt="protect your value with a password, it will be asked each time you import your notes")[0] |
194 | 195 | auth_token = client.get_access_token( |
195 | 196 | request_token.get('oauth_token'), |
196 | 197 | request_token.get('oauth_token_secret'), |
197 | 198 | oauth_verifier) |
198 | | - mw.col.conf[SETTING_TOKEN] = auth_token |
| 199 | + mw.col.conf[SETTING_TOKEN] = encode(secret_key, auth_token) |
199 | 200 | else: |
200 | | - auth_token = mw.col.conf.get(SETTING_TOKEN, False) |
| 201 | + secret_key = getText(prompt="password")[0] |
| 202 | + auth_token_encoded = mw.col.conf.get(SETTING_TOKEN, False) |
| 203 | + auth_token = decode(secret_key, auth_token_encoded) |
201 | 204 | self.token = auth_token |
202 | 205 | self.client = EvernoteClient(token=auth_token, sandbox=False) |
203 | 206 | self.noteStore = self.client.get_note_store() |
@@ -258,6 +261,8 @@ def __init__(self): |
258 | 261 | self.evernote = Evernote() |
259 | 262 |
|
260 | 263 | def proceed(self): |
| 264 | + if self.evernoteTags=="": |
| 265 | + show_tooltip("Warning : No tag to import has been specified in the preferences, that may result into empty imports") |
261 | 266 | anki_ids = self.anki.get_cards_id_from_tag(self.ankiTag) |
262 | 267 | anki_guids = self.anki.get_guids_from_anki_id(anki_ids) |
263 | 268 | evernote_guids = self.get_evernote_guids_from_tag(self.evernoteTags) |
@@ -303,6 +308,25 @@ def get_evernote_guids_from_tag(self, tags): |
303 | 308 | def show_tooltip(text, time_out=3000): |
304 | 309 | aqt.utils.tooltip(text, time_out) |
305 | 310 |
|
| 311 | +# Vigenere_cipher |
| 312 | +# ref : https://stackoverflow.com/questions/2490334/simple-way-to-encode-a-string-according-to-a-password |
| 313 | +def encode(key, clear): |
| 314 | + enc = [] |
| 315 | + for i in range(len(clear)): |
| 316 | + key_c = key[i % len(key)] |
| 317 | + enc_c = chr((ord(clear[i]) + ord(key_c)) % 256) |
| 318 | + enc.append(enc_c) |
| 319 | + return base64.urlsafe_b64encode("".join(enc)) |
| 320 | + |
| 321 | +def decode(key, enc): |
| 322 | + dec = [] |
| 323 | + enc = base64.urlsafe_b64decode(enc) |
| 324 | + for i in range(len(enc)): |
| 325 | + key_c = key[i % len(key)] |
| 326 | + dec_c = chr((256 + ord(enc[i]) - ord(key_c)) % 256) |
| 327 | + dec.append(dec_c) |
| 328 | + return "".join(dec) |
| 329 | + |
306 | 330 |
|
307 | 331 | def main(): |
308 | 332 | controller = Controller() |
|
0 commit comments