import time
import datetime
from myslice.configengine import ConfigEngine
+from myslice.settings import logger
+
config = ConfigEngine()
if config.activity and config.activity.apikey :
server = config.activity.server
else :
# default log server
- server = "http://athos.ipv6.lip6.fr/log"
+ server = "http://athos.ipv6.lip6.fr/activity/push/log"
-def logWrite(request, action, message):
+def logWrite(request, action, message, objects = None):
if not apikey :
- print "===============>> activity: no apikey"
+ logger.info("===============>> activity: no apikey")
return
if not secret :
- print "===============>> activity: no secret"
+ logger.info("===============>> activity: no secret")
return
timestamp = time.mktime(datetime.datetime.today().timetuple())
"action" : action,
"message" : message,
"apikey" : apikey,
- "signature" : sign(secret, "%s%s%s%s" % (timestamp, ip, request.user, action))
+ "signature" : sign(secret, "%s%s%s%s" % (timestamp, ip, request.user, action)),
+ "slice" : None,
+ "resource" : None,
+ "resource_type" : None,
+ "facility" : None,
+ "testbed" : None,
}
+
+ if objects is not None:
+ for o in objects :
+ if (o in log) :
+ log[o] = objects[o]
+
try :
result = urllib2.urlopen(server, urllib.urlencode(log))
+ logger.info("===============>> activity: {} <{}> {}".format(action, request.user,message))
content = result.read()
except urllib2.URLError as e:
- print "===============>> activity: connection to " + url + " impossible, could not log action"
+ logger.error("===============>> activity: connection to {} impossible, could not log action".format(server))
+ logger.error(e.strerror)
-def log(request, action, message):
+def log(request, action, message, objects = None):
# Create a new thread in Daemon mode to send the log entry
- t = threading.Thread(target=logWrite, args=(request, action, message))
+ t = threading.Thread(target=logWrite, args=(request, action, message, objects))
t.setDaemon(True)
t.start()
def getClientIp(request):
- x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
- if x_forwarded_for:
+ try :
+ x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
ip = x_forwarded_for.split(',')[0]
- else:
+ except:
ip = request.META.get('REMOTE_ADDR')
return ip
#
# sign the request with the secret key
def sign(secret, message):
- return hmac.new(secret, msg=message, digestmod=hashlib.sha256).hexdigest()
\ No newline at end of file
+ return hmac.new(secret, msg=message, digestmod=hashlib.sha256).hexdigest()