From 3fc61a83c7156cb4f3dae6f36ebd54e26aa6f891 Mon Sep 17 00:00:00 2001 From: Calin Crisan Date: Thu, 25 Dec 2014 15:36:51 +0200 Subject: [PATCH] another eventrelay improvement --- eventrelay.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/eventrelay.py b/eventrelay.py index 8be6f76..8d66bb7 100755 --- a/eventrelay.py +++ b/eventrelay.py @@ -17,15 +17,16 @@ # along with this program. If not, see . import errno +import hashlib import logging import os.path import sys import urllib +import urlparse sys.path.append(os.path.join(os.path.dirname(sys.argv[0]),'src')) import settings -import utils from motioneye import _configure_settings, _configure_logging @@ -83,19 +84,31 @@ def get_admin_credentials(): line = line[1:].strip() if line.startswith('@admin_username'): parts = line.split(' ', 1) - admin_username = parts[1] + admin_username = parts[1] if len(parts) > 1 else '' continue if line.startswith('@admin_password'): parts = line.split(' ', 1) - admin_password = parts[1] + admin_password = parts[1] if len(parts) > 1 else '' continue return admin_username, admin_password +def compute_signature(method, uri, body, key): + parts = list(urlparse.urlsplit(uri)) + query = [q for q in urlparse.parse_qsl(parts[3]) if (q[0] != 'signature')] + query.sort(key=lambda q: q[0]) + query = urllib.urlencode(query) + parts[0] = parts[1] = '' + parts[3] = query + uri = urlparse.urlunsplit(parts) + + return hashlib.sha1('%s:%s:%s:%s' % (method, uri, body or '', key)).hexdigest().lower() + + if __name__ == '__main__': if len(sys.argv) < 3: print_usage() @@ -114,7 +127,7 @@ if __name__ == '__main__': 'camera_id': camera_id, 'event': event} - signature = utils.compute_signature('POST', uri, '', admin_password) + signature = compute_signature('POST', uri, '', admin_password) url = 'http://127.0.0.1:%(port)s' + uri + '&signature=' + signature url = url % {'port': settings.PORT} -- 2.39.5