[Kimchi-devel] [PATCH] [Wok 1/2] Include user IP address in request log messages
Aline Manera
alinefm at linux.vnet.ibm.com
Wed Jun 8 01:44:48 UTC 2016
Hi Lucio,
The patch looks good! But please, update API.md documentation and if
possible, add/change test cases to confirm the API keeps working as
expected.
Thanks,
Aline Manera
On 06/03/2016 06:40 PM, Lucio Correia wrote:
> * Allow advanced log searches by IP address
> * Add RECORD_TEMPLATE_DICT to avoid versioning errors
> with older log entries, which don't have IP address.
> * Remove duplicated comment line
>
> Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
> ---
> src/wok/control/base.py | 10 ++++++----
> src/wok/reqlogger.py | 17 ++++++++++++++---
> src/wok/root.py | 6 ++++--
> 3 files changed, 24 insertions(+), 9 deletions(-)
>
> diff --git a/src/wok/control/base.py b/src/wok/control/base.py
> index 4b459ed..419179a 100644
> --- a/src/wok/control/base.py
> +++ b/src/wok/control/base.py
> @@ -146,7 +146,8 @@ class Resource(object):
> msg,
> app=get_plugin_from_request(),
> req=method,
> - user=cherrypy.session.get(USER_NAME, 'N/A')
> + user=cherrypy.session.get(USER_NAME, 'N/A'),
> + ip=cherrypy.request.remote.ip
> ).log()
>
> if destructive is False or \
> @@ -227,7 +228,8 @@ class Resource(object):
> msg,
> app=get_plugin_from_request(),
> req=method,
> - user=cherrypy.session.get(USER_NAME, 'N/A')
> + user=cherrypy.session.get(USER_NAME, 'N/A'),
> + ip=cherrypy.request.remote.ip
> ).log()
>
> return result
> @@ -374,7 +376,6 @@ class Collection(object):
> except Exception as e:
> # In case of errors when fetching a resource info, pass and
> # log the error, so, other resources are returned
> - # log the error, so, other resources are returned.
> # Encoding error message as ident is also encoded value.
> # This has to be done to avoid unicode error,
> # as combination of encoded and unicode value results into
> @@ -455,7 +456,8 @@ class Collection(object):
> msg,
> app=get_plugin_from_request(),
> req=method,
> - user=cherrypy.session.get(USER_NAME, 'N/A')
> + user=cherrypy.session.get(USER_NAME, 'N/A'),
> + ip=cherrypy.request.remote.ip
> ).log()
>
> return result
> diff --git a/src/wok/reqlogger.py b/src/wok/reqlogger.py
> index bbd1bd0..2ec62b8 100644
> --- a/src/wok/reqlogger.py
> +++ b/src/wok/reqlogger.py
> @@ -34,10 +34,20 @@ from wok.utils import ascii_dict, remove_old_files
>
>
> # Log search setup
> -FILTER_FIELDS = ['app', 'date', 'download', 'req', 'user', 'time']
> +FILTER_FIELDS = ['app', 'date', 'download', 'ip', 'req', 'user', 'time']
> LOG_DOWNLOAD_URI = "/data/logs/%s"
> LOG_DOWNLOAD_TIMEOUT = 6
> -LOG_FORMAT = "[%(date)s %(time)s] %(req)-6s %(app)-11s %(user)s: %(message)s\n"
> +LOG_FORMAT = "[%(date)s %(time)s] %(req)-6s %(app)-11s %(ip)-15s %(user)s: " \
> + "%(message)s\n"
> +RECORD_TEMPLATE_DICT = {
> + 'date': '',
> + 'time': '',
> + 'req': '',
> + 'app': '',
> + 'ip': '',
> + 'user': '',
> + 'message': '',
> +}
> SECONDS_PER_HOUR = 360
>
> # Log handler setup
> @@ -86,7 +96,8 @@ class RequestParser(object):
>
> with fd:
> for record in sortedList:
> - asciiRecord = ascii_dict(record)
> + asciiRecord = RECORD_TEMPLATE_DICT
> + asciiRecord.update(ascii_dict(record))
> fd.write(LOG_FORMAT % asciiRecord)
>
> fd.close()
> diff --git a/src/wok/root.py b/src/wok/root.py
> index 29ea657..902e203 100644
> --- a/src/wok/root.py
> +++ b/src/wok/root.py
> @@ -172,7 +172,8 @@ class WokRoot(Root):
> msg,
> app=get_plugin_from_request(),
> req=method,
> - user=cherrypy.session.get(auth.USER_NAME, 'N/A')
> + user=cherrypy.session.get(auth.USER_NAME, 'N/A'),
> + ip=cherrypy.request.remote.ip
> ).log()
>
> return json.dumps(user_info)
> @@ -187,7 +188,8 @@ class WokRoot(Root):
> msg,
> app=get_plugin_from_request(),
> req=method,
> - user=params['username']
> + user=params['username'],
> + ip=cherrypy.request.remote.ip
> ).log()
>
> auth.logout()
More information about the Kimchi-devel
mailing list