Another silly error.
[invirt/packages/invirt-vnc-server.git] / invirt-vnc-authtoken
index c542d5e..4600afb 100755 (executable)
@@ -8,18 +8,23 @@ import sha
 import time
 import base64
 from invirt.vnc import getTokenKey
 import time
 import base64
 from invirt.vnc import getTokenKey
+from invirt.config import structs as config
 
 def getAuthToken(username, machine, lifetime=5*60):
     data = {}
     data['user'] = username
     data['machine'] = machine
     data['expires'] = time.time() + lifetime
 
 def getAuthToken(username, machine, lifetime=5*60):
     data = {}
     data['user'] = username
     data['machine'] = machine
     data['expires'] = time.time() + lifetime
+    data['connect_host'] = config.web.hostname
+    try:
+        data['connect_port'] = 10003 + [h.hostname for h in
+                                        config.hosts].index(os.uname()[1])
+    except:
+        data['connect_port'] = 5900
     pickled_data = cPickle.dumps(data)
     m = hmac.new(getTokenKey(), digestmod=sha)
     m.update(pickled_data)
     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)
+    token = ".".join(map(base64.urlsafe_b64encode, (pickled_data, m.digest())))
     return token
 
 def main():
     return token
 
 def main():