From 714abc13b25a88c7eec15efda49f9a4b93d32b0c Mon Sep 17 00:00:00 2001 From: Evan Broder Date: Tue, 28 Oct 2008 20:00:20 -0400 Subject: [PATCH 1/1] Add a script for generating VNC auth tokens, to be exposed over remctl svn path=/trunk/packages/invirt-vnc-server/; revision=1389 --- config.todo | 1 - debian/changelog | 3 ++- invirt-vnc-authtoken | 34 ++++++++++++++++++++++++++++++++++ setup.py | 2 +- 4 files changed, 37 insertions(+), 3 deletions(-) delete mode 100644 config.todo create mode 100755 invirt-vnc-authtoken diff --git a/config.todo b/config.todo deleted file mode 100644 index 8fa7ee8..0000000 --- a/config.todo +++ /dev/null @@ -1 +0,0 @@ -code/vncexternalauth.py: TOKEN_KEY? diff --git a/debian/changelog b/debian/changelog index da167fb..3fbac8d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,9 @@ invirt-vnc-server (0.0.1) unstable; urgency=low * sipb-xen-vnc-server -> invirt-vnc-server * Generate the VNC token key at install-time instead of hard-coding + * Add a script for generating VNC auth tokens, to be exposed over remctl - -- Evan Broder Tue, 28 Oct 2008 19:44:04 -0400 + -- Evan Broder Tue, 28 Oct 2008 19:45:35 -0400 sipb-xen-vnc-server (1.2) unstable; urgency=low diff --git a/invirt-vnc-authtoken b/invirt-vnc-authtoken new file mode 100755 index 0000000..c542d5e --- /dev/null +++ b/invirt-vnc-authtoken @@ -0,0 +1,34 @@ +#!/usr/bin/python + +import os +import sys +import hmac +import cPickle +import sha +import time +import base64 +from invirt.vnc import getTokenKey + +def getAuthToken(username, machine, lifetime=5*60): + data = {} + data['user'] = username + data['machine'] = machine + data['expires'] = time.time() + lifetime + pickled_data = cPickle.dumps(data) + m = hmac.new(getTokenKey(), digestmod=sha) + m.update(pickled_data) + token = {'data': pickled_data, 'digest': m.digest()} + token = cPickle.dumps(token) + token = base64.urlsafe_b64encode(token) + return token + +def main(): + try: + username = os.environ['REMOTE_USER'] + except KeyError: + username = None + machine = sys.argv[1] + print getAuthToken(username, machine) + +if __name__ == '__main__': + main() diff --git a/setup.py b/setup.py index 98c3dee..4e11026 100755 --- a/setup.py +++ b/setup.py @@ -20,5 +20,5 @@ setup( packages = ['invirt.vnc'], package_dir = {'invirt': 'python'}, - scripts=['invirt-vnc-server'] + scripts=['invirt-vnc-server', 'invirt-vnc-authtoken'] ) -- 1.7.9.5