better SSL error handling (especially, distinguish cert from non-cert errors)
This commit is contained in:
parent
10e4628f35
commit
dae4360c38
@ -7,6 +7,7 @@ import urllib
|
|||||||
import requests
|
import requests
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
import os
|
import os
|
||||||
|
import ssl
|
||||||
|
|
||||||
from shlex import quote
|
from shlex import quote
|
||||||
from sys import stderr
|
from sys import stderr
|
||||||
@ -126,7 +127,23 @@ if __name__ == "__main__":
|
|||||||
sam, uri, html = 'URI', args.server, None
|
sam, uri, html = 'URI', args.server, None
|
||||||
else:
|
else:
|
||||||
endpoint = 'https://{}/{}/prelogin.esp'.format(args.server, ('global-protect' if args.portal else 'ssl-vpn'))
|
endpoint = 'https://{}/{}/prelogin.esp'.format(args.server, ('global-protect' if args.portal else 'ssl-vpn'))
|
||||||
res = s.post(endpoint, verify=args.verify, data=args.extra)
|
print("Looking for SAML auth tags in response to %s..." % endpoint, file=stderr)
|
||||||
|
try:
|
||||||
|
res = s.post(endpoint, verify=args.verify, data=args.extra)
|
||||||
|
except Exception as ex:
|
||||||
|
rootex = ex
|
||||||
|
while True:
|
||||||
|
if isinstance(rootex, ssl.SSLError):
|
||||||
|
break
|
||||||
|
elif not rootex.__cause__ and not rootex.__context__:
|
||||||
|
break
|
||||||
|
rootex = rootex.__cause__ or rootex.__context__
|
||||||
|
if isinstance(rootex, ssl.CertificateError):
|
||||||
|
p.error("SSL certificate error (try --no-verify to ignore): %s" % rootex)
|
||||||
|
elif isinstance(rootex, ssl.SSLError):
|
||||||
|
p.error("SSL error: %s" % rootex)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
xml = ET.fromstring(res.content)
|
xml = ET.fromstring(res.content)
|
||||||
sam = xml.find('saml-auth-method')
|
sam = xml.find('saml-auth-method')
|
||||||
sr = xml.find('saml-request')
|
sr = xml.find('saml-request')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user