user activity monitoring
authorCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Tue, 15 Jul 2014 16:18:58 +0000 (18:18 +0200)
committerCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Tue, 15 Jul 2014 16:18:58 +0000 (18:18 +0200)
activity/__init__.py [new file with mode: 0644]

diff --git a/activity/__init__.py b/activity/__init__.py
new file mode 100644 (file)
index 0000000..d570662
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Activity monitor
+#
+
+import urllib, urllib2
+import threading
+from datetime import datetime
+
+
+def logWrite(request, action, message):
+    url = "http://localhost:5000/log"
+    log = {
+        "date" : datetime.today(),
+        "client_ip" : getClientIp(request),
+        "host" : request.get_host(),
+        "referrer" : request.META.get('HTTP_REFERER'),
+        "user" : request.user
+    }
+    
+    try :
+        result = urllib2.urlopen(url, urllib.urlencode(log))
+        content = result.read()
+    except urllib2.URLError as e:
+        print "Error: connection to " + url + " impossible, logging disabled"
+
+def spawnThread(request, action, message):
+    print "aaaaaaaaa"
+    # Create a new thread in Daemon mode to send the log entry
+    t = threading.Thread(target=logWrite, args=(request, action, message))
+    t.setDaemon(True)
+    t.start()
+
+def userLogin(request):
+    spawnThread(request, 'userlogin', 'User logged in')
+
+def userLogout(request):
+    spawnThread(request, 'userlogout', 'User logged out')
+
+def userRegistration(request):
+    spawnThread(request, 'userregistration', 'User registered')
+
+def userSliceRequest(request):
+    spawnThread(request, 'userslicerequest', 'User requested a slice')
+
+def userContactSupport(request):
+    spawnThread(request, 'usercontactsupport', 'User contacted suppport')
+
+def userAddResource(request):
+    spawnThread(request, 'useraddresource', 'User added resource to slice')
+
+def userDelResource(request):
+    spawnThread(request, 'userdelresource', 'User removed resource from slice')
+
+
+def getClientIp(request):
+    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
+    if x_forwarded_for:
+        ip = x_forwarded_for.split(',')[0]
+    else:
+        ip = request.META.get('REMOTE_ADDR')
+    return ip
\ No newline at end of file