From 3dae361a46538f16eff254628a44bcf5d865c5e4 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 12 Feb 2009 01:56:18 -0500 Subject: [PATCH] jirabot2 that can log in. --- jirabot2.py | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/jirabot2.py b/jirabot2.py index 9e66d8e..1187bde 100644 --- a/jirabot2.py +++ b/jirabot2.py @@ -1,30 +1,16 @@ -import httplib import mechanize -def make_cert_handler(key_file=None, cert_file=None): - if cert_file is None: - cert_file = key_file - - class HTTPSCertConnection(httplib.HTTPSConnection): - def __init__(self, host): - httplib.HTTPSConnection.__init__(self, host, - key_file=key_file, - cert_file=cert_file) - - class HTTPSCertHandler(mechanize.HTTPSHandler): - def https_open(self, req): - return self.do_open(HTTPSCertConnection, req) - - return HTTPSCertHandler - -cj = mechanize.CookieJar() - -cert_handler = make_cert_handler("cert.pem") -opener = mechanize.build_opener(mechanize.HTTPRedirectHandler, cert_handler, mechanize.HTTPCookieProcessor(cj)) -mechanize.install_opener(opener) - b = mechanize.Browser() b.set_handle_robots(False) +b.add_client_certificate("https://idp.mit.edu:9443", "cert.pem", "cert.pem") b.addheaders = [("Accept-Language", "en-us,en;q=0.5"),] -b.open("https://jira.mit.edu/jira/secure/Dashboard.jsp://jira.mit.edu/jira/secure/Dashboard.jspa") +b.open("https://jira.mit.edu/jira/secure/Dashboard.jspa") b.follow_link(text="MIT Touchstone") +b.select_form("wayfForm1") +b.submit() +b.select_form(predicate=lambda f: any(c.name == 'login_certificate' + for c in f.controls)) +b.submit() +b.select_form(nr=0) +b.submit() +print b.response().read() -- 2.45.1