[Kimchi-devel] [PATCH] [Wok 4/6] Log failed login/logout attempts
Lucio Correia
luciojhc at linux.vnet.ibm.com
Wed Jun 8 19:27:13 UTC 2016
Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
---
src/wok/root.py | 44 +++++++++++++++++++++++++++++++-------------
1 file changed, 31 insertions(+), 13 deletions(-)
diff --git a/src/wok/root.py b/src/wok/root.py
index 902e203..e2b9216 100644
--- a/src/wok/root.py
+++ b/src/wok/root.py
@@ -31,10 +31,9 @@ from wok.config import paths as wok_paths
from wok.control import sub_nodes
from wok.control.base import Resource
from wok.control.utils import parse_request
-from wok.exception import MissingParameter, OperationFailed
+from wok.exception import MissingParameter
from wok.message import WokMessage
from wok.reqlogger import RequestRecord
-from wok.utils import get_plugin_from_request
ROOT_REQUESTS = {
@@ -152,28 +151,43 @@ class WokRoot(Root):
@cherrypy.expose
def login(self, *args):
+ method = 'POST'
+ code = self.getRequestMessage(method, 'login')
+ app = 'wok'
+ ip = cherrypy.request.remote.ip
+
try:
params = parse_request()
+ msg = WokMessage(code, params).get_text(prepend_code=False)
username = params['username']
password = params['password']
except KeyError, item:
+ RequestRecord(
+ msg,
+ app=app,
+ req=method,
+ status=400,
+ user='N/A',
+ ip=ip
+ ).log()
+
e = MissingParameter('WOKAUTH0003E', {'item': str(item)})
raise cherrypy.HTTPError(400, e.message)
try:
+ status = 200
user_info = auth.login(username, password)
- except OperationFailed:
- raise cherrypy.HTTPError(401)
+ except cherrypy.HTTPError, e:
+ status = e.status
+ raise
finally:
- method = 'POST'
- code = self.getRequestMessage(method, 'login')
- msg = WokMessage(code, params).get_text(prepend_code=False)
RequestRecord(
msg,
- app=get_plugin_from_request(),
+ app=app,
req=method,
- user=cherrypy.session.get(auth.USER_NAME, 'N/A'),
- ip=cherrypy.request.remote.ip
+ status=status,
+ user='N/A',
+ ip=ip
).log()
return json.dumps(user_info)
@@ -184,13 +198,17 @@ class WokRoot(Root):
code = self.getRequestMessage(method, 'logout')
params = {'username': cherrypy.session.get(auth.USER_NAME, 'N/A')}
msg = WokMessage(code, params).get_text(prepend_code=False)
+ ip = cherrypy.request.remote.ip
+
+ auth.logout()
+
RequestRecord(
msg,
- app=get_plugin_from_request(),
+ app='wok',
req=method,
+ status=200,
user=params['username'],
- ip=cherrypy.request.remote.ip
+ ip=ip
).log()
- auth.logout()
return '{}'
--
1.9.1
More information about the Kimchi-devel
mailing list