Mercurial > kallithea
changeset 3126:703070153bc1 beta
added API method for checking IP
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 31 Dec 2012 01:51:30 +0100 |
parents | 9b92cf5a0cca |
children | 71ce052f8b6b |
files | docs/api/api.rst rhodecode/controllers/api/__init__.py rhodecode/controllers/api/api.py |
diffstat | 3 files changed, 55 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/docs/api/api.rst Sun Dec 30 23:06:03 2012 +0100 +++ b/docs/api/api.rst Mon Dec 31 01:51:30 2012 +0100 @@ -168,7 +168,6 @@ "repoid" : "<reponame or repo_id>" "userid" : "<user_id or username>", "locked" : "<bool true|false>" - } OUTPUT:: @@ -178,6 +177,40 @@ error : null +show_ip +------- + +Shows IP address as seen from RhodeCode server, together with all +defined IP addresses for given user. +This command can be executed only using api_key belonging to user with admin +rights. + +INPUT:: + + id : <id_for_response> + api_key : "<api_key>" + method : "show_ip" + args : { + "userid" : "<user_id or username>", + } + +OUTPUT:: + + id : <id_given_in_input> + result : { + "ip_addr_server": <ip_from_clien>", + "user_ips": [ + { + "ip_addr": "<ip_with_mask>", + "ip_range": ["<start_ip>", "<end_ip>"], + }, + ... + ] + } + + error : null + + get_user --------
--- a/rhodecode/controllers/api/__init__.py Sun Dec 30 23:06:03 2012 +0100 +++ b/rhodecode/controllers/api/__init__.py Mon Dec 31 01:51:30 2012 +0100 @@ -86,6 +86,9 @@ """ + def _get_ip_addr(self, environ): + return _get_ip_addr(environ) + def _get_method_args(self): """ Return `self._rpc_args` to dispatched controller method @@ -99,7 +102,7 @@ controller and if it exists, dispatch to it. """ start = time.time() - ip_addr = self._get_ip_addr(environ) + ip_addr = self.ip_addr = self._get_ip_addr(environ) self._req_id = None if 'CONTENT_LENGTH' not in environ: log.debug("No Content-Length")
--- a/rhodecode/controllers/api/api.py Sun Dec 30 23:06:03 2012 +0100 +++ b/rhodecode/controllers/api/api.py Mon Dec 31 01:51:30 2012 +0100 @@ -38,7 +38,7 @@ from rhodecode.model.user import UserModel from rhodecode.model.users_group import UsersGroupModel from rhodecode.model.permission import PermissionModel -from rhodecode.model.db import Repository, RhodeCodeSetting +from rhodecode.model.db import Repository, RhodeCodeSetting, UserIpMap log = logging.getLogger(__name__) @@ -140,9 +140,6 @@ errors that happens """ - def _get_ip_addr(self, environ): - from rhodecode.lib.base import _get_ip_addr - return _get_ip_addr(environ) @HasPermissionAllDecorator('hg.admin') def pull(self, apiuser, repoid): @@ -215,6 +212,22 @@ ) @HasPermissionAllDecorator('hg.admin') + def show_ip(self, apiuser, userid): + """ + Shows IP address as seen from RhodeCode server, together with all + defined IP addresses for given user + + :param apiuser: + :param userid: + """ + user = get_user_or_error(userid) + ips = UserIpMap.query().filter(UserIpMap.user == user).all() + return dict( + ip_addr_server=self.ip_addr, + user_ips=ips + ) + + @HasPermissionAllDecorator('hg.admin') def get_user(self, apiuser, userid): """" Get a user by username