@@ -10,7 +10,7 @@ except:
|
|||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
import logging
|
import logging
|
||||||
import thread
|
from threading import Lock
|
||||||
import random
|
import random
|
||||||
from gluon import current
|
from gluon import current
|
||||||
from gluon.cache import CacheAbstract
|
from gluon.cache import CacheAbstract
|
||||||
@@ -19,7 +19,7 @@ from gluon.contrib.redis_utils import register_release_lock, RConnectionError
|
|||||||
|
|
||||||
logger = logging.getLogger("web2py.cache.redis")
|
logger = logging.getLogger("web2py.cache.redis")
|
||||||
|
|
||||||
locker = thread.allocate_lock()
|
locker = Lock()
|
||||||
|
|
||||||
|
|
||||||
def RedisCache(redis_conn=None, debug=False, with_lock=False, fail_gracefully=False, db=None):
|
def RedisCache(redis_conn=None, debug=False, with_lock=False, fail_gracefully=False, db=None):
|
||||||
|
|||||||
@@ -8,15 +8,16 @@ Redis-backed sessions
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import thread
|
from threading import Lock
|
||||||
from gluon import current
|
from gluon import current
|
||||||
from gluon.storage import Storage
|
from gluon.storage import Storage
|
||||||
from gluon.contrib.redis_utils import acquire_lock, release_lock
|
from gluon.contrib.redis_utils import acquire_lock, release_lock
|
||||||
from gluon.contrib.redis_utils import register_release_lock
|
from gluon.contrib.redis_utils import register_release_lock
|
||||||
|
from gluon._compat import to_bytes
|
||||||
|
|
||||||
logger = logging.getLogger("web2py.session.redis")
|
logger = logging.getLogger("web2py.session.redis")
|
||||||
|
|
||||||
locker = thread.allocate_lock()
|
locker = Lock()
|
||||||
|
|
||||||
|
|
||||||
def RedisSession(redis_conn, session_expiry=False, with_lock=False, db=None):
|
def RedisSession(redis_conn, session_expiry=False, with_lock=False, db=None):
|
||||||
@@ -185,8 +186,8 @@ class MockQuery(object):
|
|||||||
if rtn:
|
if rtn:
|
||||||
if self.unique_key:
|
if self.unique_key:
|
||||||
# make sure the id and unique_key are correct
|
# make sure the id and unique_key are correct
|
||||||
if rtn['unique_key'] == self.unique_key:
|
if rtn[b'unique_key'] == to_bytes(self.unique_key):
|
||||||
rtn['update_record'] = self.update # update record support
|
rtn[b'update_record'] = self.update # update record support
|
||||||
else:
|
else:
|
||||||
rtn = None
|
rtn = None
|
||||||
return [Storage(rtn)] if rtn else []
|
return [Storage(rtn)] if rtn else []
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ to ensure compatibility with another - similar - library
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import thread
|
from threading import Lock
|
||||||
import time
|
import time
|
||||||
from gluon import current
|
from gluon import current
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ except ImportError:
|
|||||||
raise RuntimeError('Needs redis library to work')
|
raise RuntimeError('Needs redis library to work')
|
||||||
|
|
||||||
|
|
||||||
locker = thread.allocate_lock()
|
locker = Lock()
|
||||||
|
|
||||||
|
|
||||||
def RConn(*args, **vars):
|
def RConn(*args, **vars):
|
||||||
|
|||||||
+4
-4
@@ -14,7 +14,7 @@ Contains the classes for the global used variables:
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
from gluon._compat import pickle, StringIO, copyreg, Cookie, urlparse, PY2, iteritems, to_unicode, to_native, \
|
from gluon._compat import pickle, StringIO, copyreg, Cookie, urlparse, PY2, iteritems, to_unicode, to_native, \
|
||||||
unicodeT, long, hashlib_md5, urllib_quote
|
to_bytes, unicodeT, long, hashlib_md5, urllib_quote
|
||||||
from gluon.storage import Storage, List
|
from gluon.storage import Storage, List
|
||||||
from gluon.streamer import streamer, stream_file_or_304_or_206, DEFAULT_CHUNK_SIZE
|
from gluon.streamer import streamer, stream_file_or_304_or_206, DEFAULT_CHUNK_SIZE
|
||||||
from gluon.contenttype import contenttype
|
from gluon.contenttype import contenttype
|
||||||
@@ -967,7 +967,7 @@ class Session(Storage):
|
|||||||
if row:
|
if row:
|
||||||
# rows[0].update_record(locked=True)
|
# rows[0].update_record(locked=True)
|
||||||
# Unpickle the data
|
# Unpickle the data
|
||||||
session_data = pickle.loads(row.session_data)
|
session_data = pickle.loads(row[b'session_data'])
|
||||||
self.update(session_data)
|
self.update(session_data)
|
||||||
response.session_new = False
|
response.session_new = False
|
||||||
else:
|
else:
|
||||||
@@ -1049,7 +1049,7 @@ class Session(Storage):
|
|||||||
if record_id.isdigit() and long(record_id) > 0:
|
if record_id.isdigit() and long(record_id) > 0:
|
||||||
new_unique_key = web2py_uuid()
|
new_unique_key = web2py_uuid()
|
||||||
row = table(record_id)
|
row = table(record_id)
|
||||||
if row and row.unique_key == unique_key:
|
if row and row[b'unique_key'] == to_bytes(unique_key):
|
||||||
table._db(table.id == record_id).update(unique_key=new_unique_key)
|
table._db(table.id == record_id).update(unique_key=new_unique_key)
|
||||||
else:
|
else:
|
||||||
record_id = None
|
record_id = None
|
||||||
@@ -1167,7 +1167,7 @@ class Session(Storage):
|
|||||||
compression_level=compression_level)
|
compression_level=compression_level)
|
||||||
rcookies = response.cookies
|
rcookies = response.cookies
|
||||||
rcookies.pop(name, None)
|
rcookies.pop(name, None)
|
||||||
rcookies[name] = value
|
rcookies[name] = to_native(value)
|
||||||
rcookies[name]['path'] = '/'
|
rcookies[name]['path'] = '/'
|
||||||
expires = response.session_cookie_expires
|
expires = response.session_cookie_expires
|
||||||
if isinstance(expires, datetime.datetime):
|
if isinstance(expires, datetime.datetime):
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ def secure_dumps(data, encryption_key, hash_key=None, compression_level=None):
|
|||||||
|
|
||||||
|
|
||||||
def secure_loads(data, encryption_key, hash_key=None, compression_level=None):
|
def secure_loads(data, encryption_key, hash_key=None, compression_level=None):
|
||||||
|
data = to_bytes(data)
|
||||||
components = data.count(b':')
|
components = data.count(b':')
|
||||||
if components == 1:
|
if components == 1:
|
||||||
return secure_loads_deprecated(data, encryption_key, hash_key, compression_level)
|
return secure_loads_deprecated(data, encryption_key, hash_key, compression_level)
|
||||||
|
|||||||
Reference in New Issue
Block a user