[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