Procházet zdrojové kódy

Small RAM session handler implementation

Yann Weber před 7 roky
rodič
revize
60a1176728
2 změnil soubory, kde provedl 57 přidání a 0 odebrání
  1. 15
    0
      plugins/ram_sessions/__init__.py
  2. 42
    0
      plugins/ram_sessions/main.py

+ 15
- 0
plugins/ram_sessions/__init__.py Zobrazit soubor

@@ -0,0 +1,15 @@
1
+from lodel.settings.validator import SettingValidator
2
+
3
+__plugin_name__ = 'ram_session'
4
+__version__ = [0,0,1]
5
+__type__ = 'session_handler'
6
+__loader__ = 'main.py'
7
+__author__ = "Lodel2 dev team"
8
+__fullname__ = "RAM Session Store Plugin"
9
+
10
+CONFSPEC = {
11
+    'lodel2.sessions':{
12
+        'expiration': (900, SettingValidator('int')),
13
+        'token_size': (512, SettingValidator('int')),
14
+    }
15
+}

+ 42
- 0
plugins/ram_sessions/main.py Zobrazit soubor

@@ -0,0 +1,42 @@
1
+#-*- coding: utf-8 -*-
2
+import os
3
+import copy
4
+
5
+from lodel.settings import Settings
6
+from lodel.auth.exceptions import *
7
+
8
+__sessions = dict()
9
+
10
+def _check_token(token):
11
+    if len(token) != Settings.sessions.token_size:
12
+        raise ClientAuthenticationFailure("Malformed session token")
13
+    if token not in __sessions:
14
+        raise ClientAuthenticationFailure("No session with this token")
15
+
16
+def start_session():
17
+    token = os.urandom(Settings.sessions.token_size)
18
+    __sessions[token] = dict()
19
+    return token
20
+
21
+def destroy_session(token):
22
+    _check_token(token)
23
+    del(__sessions[token])
24
+
25
+def restore_session(token):
26
+    _check_token(token)
27
+    return __sessions[token]
28
+
29
+def save_session(token, datas):
30
+    _check_token(token)
31
+    __sessions[token] = copy.copy(datas)
32
+
33
+
34
+def get_value(token, name):
35
+    _check_token(token)
36
+    return __sessions[token][name]
37
+
38
+def del_value(token, name):
39
+    _check_token(token)
40
+    if name in __sessions[token]:
41
+        del(__sessions[token][name])
42
+

Loading…
Zrušit
Uložit