Define skey once when creating user session, not each time when beginning media sync.

This commit is contained in:
Christoph Mack 2016-01-22 23:27:32 +01:00 committed by jdoe0
parent 1b1a3d8e22
commit 87ee726d25

View File

@ -22,6 +22,8 @@ from webob import Response
import os
import hashlib
import logging
import random
import string
import ankisyncd
@ -201,7 +203,7 @@ class SyncMediaHandler(MediaSyncer):
class SyncUserSession(object):
def __init__(self, name, path, collection_manager, setup_new_collection=None):
import time
self.skey = None
self.skey = self._generate_session_key()
self.name = name
self.path = path
self.collection_manager = collection_manager
@ -217,6 +219,9 @@ class SyncUserSession(object):
self.collection_handler = None
self.media_handler = None
def _generate_session_key(self):
return checksum(str(random.random()))[:8]
def get_collection_path(self):
return os.path.realpath(os.path.join(self.path, 'collection.anki2'))
@ -518,11 +523,7 @@ class SyncApp(object):
if url not in self.valid_urls:
raise HTTPNotFound()
if url == 'begin':
skey = checksum(str(random.random()))[:8]
data['skey'] = skey
session.skey = skey
elif url == 'mediaChanges' or url == 'uploadChanges':
if url == 'begin' or url == 'mediaChanges' or url == 'uploadChanges':
data['skey'] = session.skey
return self._execute_handler_method_in_thread(url, data, session)