Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bcae6b2

Browse files
committed
add option to disable ssl verification
1 parent 39b438a commit bcae6b2

File tree

8 files changed

+42
-31
lines changed

8 files changed

+42
-31
lines changed

clearblade/ClearBladeCore.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ def __exitcode(self):
1818
while self.users:
1919
self.users.pop(0).logout()
2020

21-
def __init__(self, systemKey, systemSecret, url="https://platform.clearblade.com", safe=True):
21+
def __init__(self, systemKey, systemSecret, url="https://platform.clearblade.com", safe=True, sslVerify=True):
2222
self.systemKey = systemKey
2323
self.systemSecret = systemSecret
2424
self.url = url
2525
self.users = []
2626
self.collections = []
2727
self.messagingClients = []
2828
self.devices = []
29+
self.sslVerify = sslVerify
30+
if not sslVerify:
31+
cbLogs.warn("You have disabled SSL verification, this should only be done if your ClearBlade Platform instance is leveraging self signed SSL certificates.")
2932
if safe:
3033
atexit.register(self.__exitcode)
3134

clearblade/Code.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ class Service():
77
def __init__(self, system, name):
88
self.name = name
99
self.url = system.url + "/api/v/1/code/" + system.systemKey + "/" + name
10+
self.sslVerify = system.sslVerify
1011

1112
def execute(self, authenticatedUser, params={}):
1213
cbLogs.info("Executing code service", self.name)
13-
resp = restcall.post(self.url, headers=authenticatedUser.headers, data=params)
14+
resp = restcall.post(self.url, headers=authenticatedUser.headers, data=params, sslVerify=self.sslVerify)
1415
return resp
1516

1617

clearblade/Collections.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def __init__(self, system, authenticatedUser, collectionID="", collectionName=""
1818
self.nextPageURL = None
1919
self.prevPageURL = None
2020
self.items = []
21+
self.sslVerify = system.sslVerify
2122

2223
def getItems(self, query=None, pagesize=100, pagenum=1, url=""):
2324
url = self.url + url
@@ -29,7 +30,7 @@ def getItems(self, query=None, pagesize=100, pagenum=1, url=""):
2930
params["FILTERS"] = query.filters
3031
params["SORT"] = query.sorting
3132

32-
resp = restcall.get(url, headers=self.headers, params={"query": json.dumps(params)})
33+
resp = restcall.get(url, headers=self.headers, params={"query": json.dumps(params)}, sslVerify=self.sslVerify)
3334

3435
self.currentPage = resp["CURRENTPAGE"]
3536
self.nextPageURL = resp["NEXTPAGEURL"]
@@ -57,14 +58,14 @@ def getPrevPage(self):
5758
cbLogs.info("No previous page!")
5859

5960
def createItem(self, data):
60-
return restcall.post(self.url, headers=self.headers, data=data)
61+
return restcall.post(self.url, headers=self.headers, data=data, sslVerify=self.sslVerify)
6162

6263
def updateItems(self, query, data):
6364
payload = {
6465
"query": query.filters,
6566
"$set": data
6667
}
67-
return restcall.put(self.url, headers=self.headers, data=payload)
68+
return restcall.put(self.url, headers=self.headers, data=payload, sslVerify=self.sslVerify)
6869

6970
def deleteItems(self, query):
70-
return restcall.delete(self.url, headers=self.headers, params={"query": json.dumps(query.filters)})
71+
return restcall.delete(self.url, headers=self.headers, params={"query": json.dumps(query.filters)}, sslVerify=self.sslVerify)

clearblade/Developers.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def registerDev(fname, lname, org, email, password, url="https://platform.clearb
3030

3131

3232
class Developer:
33-
def __init__(self, email, password, url="https://platform.clearblade.com"):
33+
def __init__(self, email, password, url="https://platform.clearblade.com", sslVerify=True):
3434
self.credentials = {
3535
"email": email,
3636
"password": password
@@ -41,17 +41,20 @@ def __init__(self, email, password, url="https://platform.clearblade.com"):
4141
}
4242
self.url = url
4343
self.token = ""
44+
self.sslVerify = sslVerify
45+
if not sslVerify:
46+
cbLogs.warn("You have disabled SSL verification, this should only be done if your ClearBlade Platform instance is leveraging self signed SSL certificates.")
4447
self.authenticate()
4548

4649
def authenticate(self):
4750
cbLogs.info("Authenticating", self.credentials["email"], "as a developer...")
48-
resp = restcall.post(self.url + "/admin/auth", headers=self.headers, data=self.credentials)
51+
resp = restcall.post(self.url + "/admin/auth", headers=self.headers, data=self.credentials, sslVerify=self.sslVerify)
4952
self.token = str(resp["dev_token"])
5053
self.headers["ClearBlade-DevToken"] = self.token
5154
cbLogs.info("Successfully authenticated!")
5255

5356
def logout(self):
54-
restcall.post(self.url + "/admin/logout", headers=self.headers)
57+
restcall.post(self.url + "/admin/logout", headers=self.headers, sslVerify=self.sslVerify)
5558
if self in self.system.users:
5659
self.system.users.remove(self)
5760
cbLogs.info(self.credentials["email"], "(developer) has been logged out.")

clearblade/Devices.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ def getDevices(system, authenticatedUser, query=None):
1313
else:
1414
params = ""
1515
url = system.url + "/api/v/2/devices/" + system.systemKey
16-
resp = restcall.get(url, headers=authenticatedUser.headers, params=params)
16+
resp = restcall.get(url, headers=authenticatedUser.headers, params=params, sslVerify=system.sslVerify)
1717
return resp
1818

1919

2020
def getDevice(system, authenticatedUser, name):
2121
url = system.url + "/api/v/2/devices/" + system.systemKey + "/" + name
22-
resp = restcall.get(url, headers=authenticatedUser.headers)
22+
resp = restcall.get(url, headers=authenticatedUser.headers, sslVerify=system.sslVerify)
2323
return resp
2424

2525

@@ -46,7 +46,7 @@ def authorize(self, key):
4646
"deviceName": self.name,
4747
"activeKey": key
4848
}
49-
resp = restcall.post(self.url + "/auth", headers=self.headers, data=credentials)
49+
resp = restcall.post(self.url + "/auth", headers=self.headers, data=credentials, sslVerify=self.system.sslVerify)
5050
self.token = str(resp["deviceToken"])
5151
self.headers["ClearBlade-DeviceToken"] = self.token
5252
cbLogs.info("Successfully authenticated!")
@@ -57,7 +57,7 @@ def update(self, info):
5757
json.loads(payload)
5858
except TypeError:
5959
payload = json.dumps(payload)
60-
restcall.put(self.url + "/" + self.name, headers=self.headers, data=payload)
60+
restcall.put(self.url + "/" + self.name, headers=self.headers, data=payload, sslVerify=self.system.sslVerify)
6161
cbLogs.info("Successfully updated", self.name)
6262

6363

@@ -79,7 +79,7 @@ def DEVnewDevice(developer, system, name, enabled=True, type="", state="", activ
7979
"state": state,
8080
"type": type
8181
}
82-
resp = restcall.post(url, headers=developer.headers, data=data)
82+
resp = restcall.post(url, headers=developer.headers, data=data, sslVerify=system.sslVerify)
8383
cbLogs.info("Successfully created", name, "as a device.")
8484
return resp
8585

@@ -93,25 +93,25 @@ def DEVgetDevices(developer, system, query=None):
9393
else:
9494
params = ""
9595
url = system.url + "/api/v/2/devices/" + system.systemKey
96-
resp = restcall.get(url, headers=developer.headers, params=params)
96+
resp = restcall.get(url, headers=developer.headers, params=params, sslVerify=system.sslVerify)
9797
return resp
9898

9999

100100
def DEVgetDevice(developer, system, name):
101101
url = system.url + "/api/v/2/devices/" + system.systemKey + "/" + name
102-
resp = restcall.get(url, headers=developer.headers)
102+
resp = restcall.get(url, headers=developer.headers, sslVerify=system.sslVerify)
103103
return resp
104104

105105

106106
def DEVupdateDevice(developer, system, name, updates):
107107
url = system.url + "/api/v/2/devices/" + system.systemKey + "/" + name
108-
resp = restcall.put(url, headers=developer.headers, data=updates)
108+
resp = restcall.put(url, headers=developer.headers, data=updates, sslVerify=system.sslVerify)
109109
cbLogs.info("Successfully updated device:", name + ".")
110110
return resp
111111

112112

113113
def DEVdeleteDevice(developer, system, name):
114114
url = system.url + "/api/v/2/devices/" + system.systemKey + "/" + name
115-
resp = restcall.delete(url, headers=developer.headers)
115+
resp = restcall.delete(url, headers=developer.headers, sslVerify=system.sslVerify)
116116
cbLogs.info("Successfully deleted device:", name + ".")
117117
return resp

clearblade/Users.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def registerUser(system, authenticatedUser, email, password):
99
"password": password
1010
}
1111
cbLogs.info("Registering", email + "...")
12-
resp = restcall.post(authenticatedUser.url + "/reg", headers=authenticatedUser.headers, data=newUserCredentials, silent=True)
12+
resp = restcall.post(authenticatedUser.url + "/reg", headers=authenticatedUser.headers, data=newUserCredentials, silent=True, sslVerify=system.sslVerify)
1313
try:
1414
newUser = User(system, email, password)
1515
newUser.token = str(resp["user_token"])
@@ -37,18 +37,18 @@ def authenticate(self):
3737
self.headers.pop("ClearBlade-UserToken", None)
3838
try:
3939
cbLogs.info("Authenticating", self.credentials["email"], "as a user...")
40-
resp = restcall.post(self.url + "/auth", headers=self.headers, data=self.credentials)
40+
resp = restcall.post(self.url + "/auth", headers=self.headers, data=self.credentials, sslVerify=self.system.sslVerify)
4141
except AttributeError:
4242
cbLogs.info("Authenticating as anonymous...")
43-
resp = restcall.post(self.url + "/anon", headers=self.headers)
43+
resp = restcall.post(self.url + "/anon", headers=self.headers, sslVerify=self.system.sslVerify)
4444
self.token = str(resp["user_token"])
4545
self.headers["ClearBlade-UserToken"] = self.token
4646
if self not in self.system.users:
4747
self.system.users.append(self)
4848
cbLogs.info("Successfully authenticated!")
4949

5050
def logout(self):
51-
restcall.post(self.url + "/logout", headers=self.headers)
51+
restcall.post(self.url + "/logout", headers=self.headers, sslVerify=self.system.sslVerify)
5252
if self in self.system.users:
5353
self.system.users.remove(self)
5454
try:
@@ -57,7 +57,7 @@ def logout(self):
5757
cbLogs.info("Anonymous user has been logged out.")
5858

5959
def checkAuth(self):
60-
resp = restcall.post(self.url + "/checkauth", headers=self.headers, silent=True)
60+
resp = restcall.post(self.url + "/checkauth", headers=self.headers, silent=True, sslVerify=self.system.sslVerify)
6161
try:
6262
return resp["is_authenticated"]
6363
except TypeError:

clearblade/cbLogs.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ def error(*args):
2323
# Errors should always be shown
2424
print(prettyText.bold + prettyText.red + "CB Error:" + prettyText.endColor, " ".join(args))
2525

26+
def warn(*args):
27+
# Warnings should always be shown
28+
print(prettyText.bold + prettyText.yellow + "CB Warning: " + prettyText.endColor, " ".join(args))
2629

2730
def info(*args):
2831
if DEBUG: # extra info should not always be shown

clearblade/restcall.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ def panicmessage(resp, reqtype, url, headers, params="", data=""):
2424
print("")
2525

2626

27-
def get(url, headers={}, params={}, silent=False):
27+
def get(url, headers={}, params={}, silent=False, sslVerify=True):
2828
# try our request
2929
try:
30-
resp = requests.get(url, headers=headers, params=params)
30+
resp = requests.get(url, headers=headers, params=params, verify=sslVerify)
3131
except ConnectionError:
3232
cbLogs.error("Connection error. Check that", url, "is up and accepting requests.")
3333
exit(-1)
@@ -46,7 +46,7 @@ def get(url, headers={}, params={}, silent=False):
4646
return resp
4747

4848

49-
def post(url, headers={}, data={}, silent=False):
49+
def post(url, headers={}, data={}, silent=False, sslVerify=True):
5050
# make sure our data is valid json
5151
try:
5252
json.loads(data)
@@ -55,7 +55,7 @@ def post(url, headers={}, data={}, silent=False):
5555

5656
# try our request
5757
try:
58-
resp = requests.post(url, headers=headers, data=data)
58+
resp = requests.post(url, headers=headers, data=data, verify=sslVerify)
5959
except ConnectionError:
6060
cbLogs.error("Connection error. Check that", url, "is up and accepting requests.")
6161
exit(-1)
@@ -74,7 +74,7 @@ def post(url, headers={}, data={}, silent=False):
7474
return resp
7575

7676

77-
def put(url, headers={}, data={}, silent=False):
77+
def put(url, headers={}, data={}, silent=False, sslVerify=True):
7878
# make sure our data is valid json
7979
try:
8080
json.loads(data)
@@ -83,7 +83,7 @@ def put(url, headers={}, data={}, silent=False):
8383

8484
# try our request
8585
try:
86-
resp = requests.put(url, headers=headers, data=data)
86+
resp = requests.put(url, headers=headers, data=data, verify=sslVerify)
8787
except ConnectionError:
8888
cbLogs.error("Connection error. Check that", url, "is up and accepting requests.")
8989
exit(-1)
@@ -102,10 +102,10 @@ def put(url, headers={}, data={}, silent=False):
102102
return resp
103103

104104

105-
def delete(url, headers={}, params={}, silent=False):
105+
def delete(url, headers={}, params={}, silent=False, sslVerify=True):
106106
# try our request
107107
try:
108-
resp = requests.delete(url, headers=headers, params=params)
108+
resp = requests.delete(url, headers=headers, params=params, verify=sslVerify)
109109
except ConnectionError:
110110
cbLogs.error("Connection error. Check that", url, "is up and accepting requests.")
111111
exit(-1)

0 commit comments

Comments
 (0)