From: Calin Crisan Date: Sat, 12 Oct 2013 15:29:18 +0000 (+0300) Subject: implemented authentication for remote services X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=f97178661f628edd87d8cb3b3ed123cfe7904468;p=motioneye-debian implemented authentication for remote services --- diff --git a/src/handlers.py b/src/handlers.py index 51b0bea..6b85070 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -51,11 +51,18 @@ class BaseHandler(RequestHandler): main_config = config.get_main() if user == main_config.get('@admin_username') and pwd == main_config.get('@admin_password'): + logging.debug('authenticated as admin') + return 'admin' elif user == main_config.get('@normal_username') and pwd == main_config.get('@normal_password'): + logging.debug('authenticated as normal user') + return 'normal' + else: + logging.error('authentication failed for user %(user)s' % {'user': user}) + except: pass diff --git a/src/remote.py b/src/remote.py index f429648..b885432 100644 --- a/src/remote.py +++ b/src/remote.py @@ -5,7 +5,7 @@ import logging from tornado.httpclient import AsyncHTTPClient, HTTPClient, HTTPRequest -def _compose_url(host, port, username, password, uri, query=None): +def _make_request(host, port, username, password, uri, method='GET', data=None, query=None): url = '%(scheme)s://%(host)s:%(port)s%(uri)s' % { 'scheme': 'http', 'host': host, @@ -14,8 +14,10 @@ def _compose_url(host, port, username, password, uri, query=None): if query: url += '?' + '='.join(query.items()) + + request = HTTPRequest(url, method, body=data, auth_username=username, auth_password=password) - return url + return request def list_cameras(host, port, username, password, callback): @@ -23,7 +25,7 @@ def list_cameras(host, port, username, password, callback): 'host': host, 'port': port}) - url = _compose_url(host, port, username, password, '/config/list/') + request = _make_request(host, port, username, password, '/config/list/') def on_response(response): if response.error: @@ -48,7 +50,7 @@ def list_cameras(host, port, username, password, callback): return callback(response['cameras']) http_client = AsyncHTTPClient() - http_client.fetch(url, on_response) + http_client.fetch(request, on_response) def get_config(host, port, username, password, camera_id, callback): @@ -57,7 +59,7 @@ def get_config(host, port, username, password, camera_id, callback): 'host': host, 'port': port}) - url = _compose_url(host, port, username, password, '/config/%(id)s/get/' % {'id': camera_id}) + request = _make_request(host, port, username, password, '/config/%(id)s/get/' % {'id': camera_id}) def on_response(response): if response.error: @@ -83,7 +85,7 @@ def get_config(host, port, username, password, camera_id, callback): callback(response) http_client = AsyncHTTPClient() - http_client.fetch(url, on_response) + http_client.fetch(request, on_response) def set_config(host, port, username, password, camera_id, data): @@ -94,8 +96,7 @@ def set_config(host, port, username, password, camera_id, data): data = json.dumps(data) - url = _compose_url(host, port, username, password, '/config/%(id)s/set/' % {'id': camera_id}) - request = HTTPRequest(url, method='POST', body=data) + request = _make_request(host, port, username, password, '/config/%(id)s/set/' % {'id': camera_id}, method='POST', data=data) try: http_client = HTTPClient() @@ -121,7 +122,7 @@ def set_preview(host, port, username, password, camera_id, controls, callback): controls = json.dumps(controls) - url = _compose_url(host, port, username, password, '/config/%(id)s/set_preview/' % {'id': camera_id}) + request = _make_request(host, port, username, password, '/config/%(id)s/set_preview/' % {'id': camera_id}) def on_response(response): if response.error: @@ -136,7 +137,7 @@ def set_preview(host, port, username, password, camera_id, controls, callback): callback('') http_client = AsyncHTTPClient() - http_client.fetch(url, on_response) + http_client.fetch(request, on_response) def current_snapshot(host, port, username, password, camera_id, callback): @@ -145,7 +146,7 @@ def current_snapshot(host, port, username, password, camera_id, callback): 'host': host, 'port': port}) - url = _compose_url(host, port, username, password, '/snapshot/%(id)s/current/' % {'id': camera_id}) + request = _make_request(host, port, username, password, '/snapshot/%(id)s/current/' % {'id': camera_id}) def on_response(response): if response.error: @@ -160,4 +161,4 @@ def current_snapshot(host, port, username, password, camera_id, callback): callback(response.body) http_client = AsyncHTTPClient() - http_client.fetch(url, on_response) + http_client.fetch(request, on_response)