Password replay works for biblio vincennes
This commit is contained in:
parent
4cf4f02350
commit
df2bb7d0e6
|
@ -19,7 +19,7 @@ hosts = {
|
|||
(r'/', Dispatcher('http://www.sfdiabete.org')),
|
||||
],
|
||||
'linuxfr.local:8088': [
|
||||
(r'/', Dispatcher('http://www.linuxfr.org')),
|
||||
(r'/', Dispatcher('http://linuxfr.org')),
|
||||
],
|
||||
'biblio.local:8088': [
|
||||
(r'/', VincennesBiblioDispatcher('http://biblio.vincennes.fr')),
|
||||
|
|
|
@ -19,22 +19,21 @@ class BiblioAuthForm(object):
|
|||
import urllib, httplib
|
||||
import cookielib
|
||||
values = { 'user': "754443",
|
||||
'password': "lecteur",
|
||||
'password': "XXXXX",
|
||||
'op': "Se connecter",
|
||||
'form_id': 'dk_opac15_login_form' }
|
||||
action = "/sezhame/page/connexion-abonne?destination=user"
|
||||
url = 'http://biblio.vincennes.fr/sezhame/page/connexion-abonne'
|
||||
action = "/sezhame/page/connexion-abonne"
|
||||
#url = 'http://biblio.vincennes.fr/sezhame/page/connexion-abonne'
|
||||
params = urllib.urlencode(values)
|
||||
params = 'user=754443&password=lecteur&op=Se+connecter&form_id=dk_opac15_login_form'
|
||||
headers = { 'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
||||
#'Cookie': request.cookies.output(header="")
|
||||
'Cookie': request.cookies.output(header="", sep=",")
|
||||
}
|
||||
conn = httplib.HTTPConnection(self.target.hostname)
|
||||
conn.request("POST", action, params, headers)
|
||||
res = conn.getresponse()
|
||||
#ipdb.set_trace() ########## Breakpoint ##########
|
||||
return res.getheader('set-cookie')
|
||||
return res.msg.getheaders('set-cookie')
|
||||
|
||||
class VincennesBiblioDispatcher(Dispatcher):
|
||||
|
||||
|
@ -45,20 +44,20 @@ class VincennesBiblioDispatcher(Dispatcher):
|
|||
def mod_response(self, request, response):
|
||||
"""
|
||||
"""
|
||||
#response.msg = self.filter.response_msg(response.msg)
|
||||
# response.msg = self.filter.response_msg(response.msg)
|
||||
if "/sezhame/page/connexion-abonne" in self.env['PATH_INFO']:
|
||||
if self.auth.is_auth(response):
|
||||
print "jy souis authentifie"
|
||||
else:
|
||||
# TODO: contat toto
|
||||
setcookies = self.auth.auth(1, request)
|
||||
print setcookies
|
||||
import Cookie
|
||||
response.cookies = Cookie.BaseCookie()
|
||||
response.cookies.load(setcookies)
|
||||
print response.cookies.values()
|
||||
# #import Cookie
|
||||
#response.cookies = Cookie.BaseCookie()
|
||||
for setcookie in setcookies:
|
||||
response.cookies.load(setcookie)
|
||||
print response.cookies
|
||||
#print response.cookies.values()
|
||||
response.cookies = self.filter.response_cookies(response.cookies)
|
||||
print response.cookies
|
||||
response.headers = self.filter.response_headers(response.headers)
|
||||
return response
|
||||
|
||||
|
|
|
@ -54,11 +54,14 @@ class MandayeFilter(object):
|
|||
blacklist = ['transfer-encoding']
|
||||
for key, value in headers.iteritems():
|
||||
if key == 'location':
|
||||
print headers['location']
|
||||
location = value[0].replace(self.target.hostname,
|
||||
self.env["HTTP_HOST"])
|
||||
headers.addheader(key, location)
|
||||
if key in blacklist:
|
||||
del headers[key]
|
||||
print headers['location']
|
||||
for name in blacklist:
|
||||
if headers.has_key(name):
|
||||
del headers[name]
|
||||
return headers
|
||||
|
||||
def response_msg(self, msg):
|
||||
|
|
|
@ -2,13 +2,20 @@
|
|||
Default urllib2 handlers for Mandaye
|
||||
'''
|
||||
|
||||
import urllib
|
||||
import urllib2
|
||||
import urllib
|
||||
|
||||
class MandayeRedirectHandler(urllib2.HTTPRedirectHandler):
|
||||
|
||||
def http_error_301(self, req, fp, code, msg, headers):
|
||||
""" Disable the auto redirect """
|
||||
infourl = urllib.addinfourl(fp, headers, req.get_full_url())
|
||||
infourl.code = code
|
||||
infourl.msg = msg
|
||||
return infourl
|
||||
|
||||
def http_error_302(self, req, fp, code, msg, headers):
|
||||
""" Disable the auto """
|
||||
""" Disable the auto redirect """
|
||||
infourl = urllib.addinfourl(fp, headers, req.get_full_url())
|
||||
infourl.code = code
|
||||
infourl.msg = msg
|
||||
|
|
|
@ -33,11 +33,11 @@ class HTTPHeader(dict):
|
|||
else:
|
||||
return None
|
||||
|
||||
def getheaders(self, name):
|
||||
if self.has_key(name):
|
||||
return self[name]
|
||||
else:
|
||||
return None
|
||||
def getheaders(self):
|
||||
res = {}
|
||||
for key, values in self.iteritems():
|
||||
res[key] = ', '.join(values)
|
||||
return res
|
||||
|
||||
def addsetcookies(self, cookies):
|
||||
""" cookies: Cookie.SimpleCookie object """
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
# gevent patching
|
||||
from gevent import monkey
|
||||
monkey.patch_all()
|
||||
#monkey.patch_all()
|
||||
|
||||
import Cookie
|
||||
import config
|
||||
|
@ -20,7 +19,7 @@ from mandaye.http import HTTPHeader, HTTPRequest, HTTPResponse
|
|||
from mandaye.response import _404, _502
|
||||
|
||||
# Init poster
|
||||
opener = poster.streaminghttp.register_openers()
|
||||
#opener = poster.streaminghttp.register_openers()
|
||||
|
||||
class RequestApp(object):
|
||||
|
||||
|
@ -65,6 +64,7 @@ class RequestApp(object):
|
|||
headers.addheader(name, value)
|
||||
|
||||
if self.env.has_key('HTTP_COOKIE'):
|
||||
print self.env['HTTP_COOKIE']
|
||||
cookies = Cookie.BaseCookie(self.env['HTTP_COOKIE'])
|
||||
else:
|
||||
cookies = Cookie.BaseCookie()
|
||||
|
@ -82,14 +82,14 @@ class RequestApp(object):
|
|||
mrequest = self.dispatcher.mod_request(mrequest)
|
||||
url = self.dispatcher.get_target_url()
|
||||
if self.env['REQUEST_METHOD'] == 'POST':
|
||||
req = urllib2.Request(url, mrequest.msg, mrequest.headers)
|
||||
data = self.env['wsgi.input'].read()
|
||||
req = urllib2.Request(url, data, mrequest.headers.getheaders())
|
||||
else:
|
||||
req = urllib2.Request(url, headers=mrequest.headers)
|
||||
req = urllib2.Request(url, headers=mrequest.headers.getheaders())
|
||||
# Load the cookies
|
||||
for cookie in mrequest.cookies.values():
|
||||
req.add_header('cookie', cookie.output(header=""))
|
||||
req.add_header('cookie', mrequest.cookies.output(sep=',', header=''))
|
||||
try:
|
||||
opener = urllib2.build_opener(MandayeRedirectHandler, MandayeErrorHandler)
|
||||
opener = urllib2.build_opener(MandayeErrorHandler, MandayeRedirectHandler)
|
||||
response = opener.open(req)
|
||||
except Exception:
|
||||
# TODO: enable this only if we are in debug and cleaning the code
|
||||
|
|
Reference in New Issue