return ret
+ def get_ssh_key_by_hash_md5(self, hash_md5):
+ for key in self.ssh_keys:
+ if not key.hash_md5() == hash_md5:
+ continue
+
+ return key
+
+
if __name__ == "__main__":
a = Accounts()
(r"/users/(\w+)/edit", people.UserEditHandler),
(r"/users/(\w+)/passwd", people.UserPasswdHandler),
(r"/users/(\w+)/ssh-keys", people.SSHKeysIndexHandler),
+ (r"/users/(\w+)/ssh-keys/(MD5\:.*)", people.SSHKeysDownloadHandler),
(r"/users/(\w+)/sip", people.SIPHandler),
] + authentication_handlers)
self.render("people/ssh-keys/index.html", account=account)
+class SSHKeysDownloadHandler(base.BaseHandler):
+ @tornado.web.authenticated
+ def get(self, uid, hash_md5):
+ account = self.backend.accounts.get_by_uid(uid)
+ if not account:
+ raise tornado.web.HTTPError(404, "Could not find account %s" % uid)
+
+ # Get SSH key
+ key = account.get_ssh_key_by_hash_md5(hash_md5)
+ if not key:
+ raise tornado.web.HTTPError(404, "Could not find key: %s" % hash_md5)
+
+ # Set HTTP Headers
+ self.add_header("Content-Type", "text/plain")
+
+ self.finish(key.keydata)
+
+
class SIPHandler(base.BaseHandler):
@tornado.web.authenticated
def get(self, uid):