Update user middleware.
authorAntony Chazapis <chazapis@gmail.com>
Thu, 5 Jan 2012 13:07:05 +0000 (15:07 +0200)
committerAntony Chazapis <chazapis@gmail.com>
Thu, 5 Jan 2012 13:07:05 +0000 (15:07 +0200)
pithos/lib/client.py
pithos/middleware/__init__.py
pithos/middleware/user.py [moved from pithos/middleware/astakos.py with 70% similarity]
pithos/settings.d/00-apps.conf
pithos/settings.d/20-users.conf

index d3b5498..45a18d8 100644 (file)
@@ -953,15 +953,3 @@ def _handle_response(response, verbose=False, debug=False):
     
     #print '**',  response.status, headers, data, '\n'
     return response.status, headers, data
-
-def authenticate(authentication_host, token):
-    con = HTTPConnection(authentication_host)
-    kwargs = {}
-    kwargs['headers'] = {}
-    kwargs['headers']['X-Auth-Token'] = token
-    kwargs['headers']['Content-Length'] = 0
-    
-    path = '/im/authenticate'
-    con.request('GET', path, **kwargs)
-    response = con.getresponse()
-    return _handle_response(response)
\ No newline at end of file
index f442c21..cd04a1d 100644 (file)
@@ -1,3 +1,3 @@
 from log import LoggingConfigMiddleware
 from secure import SecureMiddleware
-from astakos import AstakosMiddleware
+from user import UserMiddleware
similarity index 70%
rename from pithos/middleware/astakos.py
rename to pithos/middleware/user.py
index ec289eb..c932e9c 100644 (file)
 # or implied, of GRNET S.A.
 
 from time import time, mktime
+from httplib import HTTPConnection
 from urllib import quote, unquote
+
 from django.conf import settings
 from django.utils import simplejson as json
 
-from pithos.lib.client import authenticate, Fault
+
+def authenticate(authentication_host, token):
+    con = HTTPConnection(authentication_host)
+    kwargs = {}
+    kwargs['headers'] = {}
+    kwargs['headers']['X-Auth-Token'] = token
+    kwargs['headers']['Content-Length'] = 0
+    
+    path = '/im/authenticate'
+    con.request('GET', path, **kwargs)
+    response = con.getresponse()
+    
+    headers = response.getheaders()
+    headers = dict((unquote(h), unquote(v)) for h,v in headers)
+    length = response.getheader('content-length', None)
+    data = response.read(length)
+    status = int(response.status)
+    
+    if status < 200 or status >= 300:
+        raise Exception(data, int(response.status))
+    
+    return json.loads(data)
 
 def get_user_from_token(token):
     if not token:
         return None
     
+    users = settings.AUTHENTICATION_USERS
+    if users is not None:
+        try:
+            return {'id': 0, 'uniq': users[token]}
+        except:
+            return None
+    
     host = settings.AUTHENTICATION_HOST
     try:
-        status, headers, user = authenticate(host, token)
-        return json.loads(user)
+        return authenticate(host, token)
     except:
         return None
 
-class AstakosMiddleware(object):
+class UserMiddleware(object):
     def process_request(self, request):
         request.user = None
         request.user_uniq = None
index ac14d2d..518e96c 100644 (file)
@@ -8,7 +8,7 @@ MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'pithos.middleware.LoggingConfigMiddleware',
     'pithos.middleware.SecureMiddleware',
-    'pithos.middleware.AstakosMiddleware'
+    'pithos.middleware.UserMiddleware'
 )
 
 ROOT_URLCONF = 'pithos.urls'
index 082840e..b805284 100644 (file)
@@ -1,2 +1,19 @@
+#coding=utf8
+
+# Either set local users here, or a remote host.
+# To disable local users set to None.
+AUTHENTICATION_USERS = {
+    '0000': 'test',
+    '0001': 'verigak',
+    '0002': 'chazapis',
+    '0003': 'gtsouk',
+    '0004': 'papagian',
+    '0005': 'louridas',
+    '0006': 'chstath',
+    '0007': 'pkanavos',
+    '0008': 'mvasilak',
+    '0009': 'διογένης'
+}
+
 # Where astakos is hosted.
 AUTHENTICATION_HOST = '127.0.0.1:10000'