Skip to content

Commit 69cb33a

Browse files
author
Julian Barnett
committed
adding support for optional path to a valid SSL cert or defaulting to system level cert or falling back to unverified SSL context
1 parent e973036 commit 69cb33a

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

rac.py

+16-7
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
#!/usr/bin/env python
22

33
import urllib2
4+
import ssl
45

56
class RAC(object):
67

7-
def __init__(self, host, username, password):
8+
def __init__(self, host, username, password, certfile=None):
89
self.sid = None
910
self.host = host
1011
self.username = username
1112
self.password = password
13+
self.certfile = certfile
1214

1315
def __enter__(self):
1416
return self
@@ -35,11 +37,19 @@ def _extract_cmd_output(self, data):
3537
return self._extract_value(data, 'CMDOUTPUT')
3638

3739
def _make_request(self, uri, data=None):
38-
opener = urllib2.build_opener()
40+
req = urllib2.Request('https://%s/cgi-bin/%s' % (self.host, uri), data=self._inject_header(data))
3941
if self.sid:
40-
opener.addheaders.append(('Cookie', 'sid=%s' % self.sid))
41-
return opener.open('https://%s/cgi-bin/%s' % (self.host, uri),
42-
self._inject_header(data)).read()
42+
req.add_header('Cookie', 'sid=%s' % self.sid)
43+
if self.certfile is None:
44+
try:
45+
return urllib2.urlopen(req).read()
46+
except urllib2.URLError:
47+
ctx = ssl.create_default_context()
48+
ctx.check_hostname = False
49+
ctx.verify_mode = ssl.CERT_NONE
50+
return urllib2.urlopen(req, context=ctx).read()
51+
else:
52+
return urllib2.urlopen(req, cafile=self.certfile).read()
4353

4454
def _login(self):
4555
data = '<LOGIN><REQ><USERNAME>%s</USERNAME><PASSWORD>%s</PASSWORD></REQ></LOGIN>' % (self.username, self.password)
@@ -73,5 +83,4 @@ def powerdown(self):
7383
return self.run_command('serveraction powerdown')
7484

7585
def powerup(self):
76-
return self.run_command('serveraction powerup')
77-
86+
return self.run_command('serveraction powerup')

0 commit comments

Comments
 (0)