From 8bf9f9c6208091f61cb0f2694b4a64320bfa57ec Mon Sep 17 00:00:00 2001 From: Jason Secula Date: Wed, 3 Jun 2026 21:33:25 +0200 Subject: [PATCH] Added Proxy parameter to allow usage of proxy configuration --- AirwatchAPI.py | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/AirwatchAPI.py b/AirwatchAPI.py index 6d9bc8c..1408b1d 100644 --- a/AirwatchAPI.py +++ b/AirwatchAPI.py @@ -4,10 +4,11 @@ from cryptography.hazmat.primitives.serialization import pkcs12, pkcs7 from cryptography.hazmat.primitives import hashes, serialization class AirwatchAPI: - def __init__(self, Server, APIKey, AuthMethod, APIUser=None, APIPassword=None, CertPath=None, CertPass=""): + def __init__(self, Server, APIKey, AuthMethod, APIUser=None, APIPassword=None, CertPath=None, CertPass="", Proxy={}): self.Server = Server self.APIKey = APIKey self.AuthMethod = (AuthMethod).upper() + self.Proxy = Proxy if(self.AuthMethod == "PASSWORD"): self.APIUser = APIUser @@ -45,7 +46,7 @@ class AirwatchAPI: cmdURI = f'/API/system/users/search?username={username}' airwatchHeaders = self.GetHeaders(cmdURI) uri = f"{self.Server}{cmdURI}" - user = requests.get(uri, headers=airwatchHeaders) + user = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) if(user.status_code == 200): return AirwatchUser(user.json()["Users"][0]) @@ -60,24 +61,36 @@ class AirwatchAPI: pageNum = 0 devices = [] uri = f"{self.Server}{cmdURI}{pageNum}" - result = requests.get(uri, headers=airwatchHeaders) + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) if(result.status_code == 200): deviceTotalCount = result.json()["Total"] while(len(devices) != deviceTotalCount): uri = f"{self.Server}{cmdURI}{pageNum}" - result = requests.get(uri, headers=airwatchHeaders).json()["Devices"] + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy).json()["Devices"] for device in result: devices += [AirwatchDevice(device)] pageNum += 1 return devices return None + def GetBitlocker(self, deviceUuid): + cmdURI = f"/api/mdm//devices/{deviceUuid}/bitlocker/drives" + airwatchHeaders = self.GetHeaders(cmdURI) + uri = f"{self.Server}{cmdURI}" + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) + bitlocker_info = {} + return result + if(result.status_code == 200): + bitlocker_info = result.json()["drive_information"][0] + return bitlocker_info + + def GetTagDevices(self, tagID): cmdURI = f"/api/mdm/tags/{tagID}/devices" airwatchHeaders = self.GetHeaders(cmdURI) uri = f"{self.Server}{cmdURI}" - result = requests.get(uri, headers=airwatchHeaders) + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) devices = [] if(result.status_code == 200): for dev in result.json()["Device"]: @@ -90,7 +103,7 @@ class AirwatchAPI: airwatchHeaders = self.GetHeaders(cmdURI) uri = f"{self.Server}{cmdURI}" apps = [] - result = requests.get(uri, headers=airwatchHeaders) + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) if(result.status_code == 200): for app in result.json()["app_items"]: apps += [AirwatchApplication(app)] @@ -101,7 +114,7 @@ class AirwatchAPI: cmdURI = f"/API/mdm/dep/groups/{groupUuid}/devices" uri = f"{self.Server}{cmdURI}" airwatchHeaders = self.GetHeaders(cmdURI) - result = requests.get(uri, headers=airwatchHeaders) + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) if(result.status_code == 200): for device in result.json(): if (device["enrollmentStatus"] != "Unenrolled"): @@ -109,7 +122,7 @@ class AirwatchAPI: assignDEPProfileURI = f"/API/mdm/dep/profiles/{device['profileUuid']}/devices/{device['deviceSerialNumber']}?action=Assign" uri = f"{airwatchServer}{assignDEPProfileURI}" airwatchHeaders = self.GetHeaders(assignDEPProfileURI) - requests.put(uri, headers=airwatchHeaders) + requests.put(uri, headers=airwatchHeaders, proxies=self.Proxy) return True return False @@ -117,7 +130,7 @@ class AirwatchAPI: cmdURI = f"/API/mdm/groups/{groupUuid}/enrollment-tokens?device_type={deviceType}&page_size=500" uri = f"{self.Server}{cmdURI}" airwatchHeaders = self.GetHeaders(cmdURI) - result = requests.get(uri, headers=airwatchHeaders) + result = requests.get(uri, headers=airwatchHeaders, proxies=self.Proxy) return result.json()["tokens"] def UpdateUserOnEnrollmentTokens(self, groupUuid,user, serialnumber): @@ -137,13 +150,13 @@ class AirwatchAPI: airwatchHeaders["Accept"] = "application/json;version=2" uri = f"{self.Server}{cmdURI}" print(uri) - return requests.post(uri, headers=airwatchHeaders, json=body) + return requests.post(uri, headers=airwatchHeaders, json=body, proxies=self.Proxy) def SyncDEPDevices(self, groupUuid): cmdURI = f"/API/mdm/dep/groups/{groupUuid}/devices?action=sync" uri = f"{self.Server}{cmdURI}" airwatchHeaders = self.GetHeaders(cmdURI) - return requests.put(uri, headers=airwatchHeaders).status_code + return requests.put(uri, headers=airwatchHeaders, proxies=self.Proxy).status_code def AddDevicesToTag(self, tagID, devices): cmdURI = f"/API/mdm/tags/{tagID}/adddevices" @@ -154,7 +167,7 @@ class AirwatchAPI: "Value": devices } } - return requests.post(uri, headers=airwatchHeaders, json=body).status_code + return requests.post(uri, headers=airwatchHeaders, json=body, proxies=self.Proxy).status_code def SetDeviceFriendlyName(self, device, friendlyName): cmdURI = f"/API/mdm/devices/{device.Id}" @@ -163,19 +176,19 @@ class AirwatchAPI: body = { "DeviceFriendlyName":friendlyName } - return requests.put(uri, headers=airwatchHeaders, json=body).status_code + return requests.put(uri, headers=airwatchHeaders, json=body, proxies=self.Proxy).status_code def SetDeviceUser(self, device, airwatchUser): cmdURI = f'/API/mdm/devices/{device.Id}/enrollmentuser/{airwatchUser.Id}' uri = f"{self.Server}{cmdURI}" airwatchHeaders = self.GetHeaders(cmdURI) - return requests.patch(uri, headers=airwatchHeaders).status_code + return requests.patch(uri, headers=airwatchHeaders, proxies=self.Proxy).status_code def DeleteDevice(self, device): cmdURI = f"/API/mdm/devices/{device.Id}" airwatchHeaders = self.GetHeaders(cmdURI) uri = f"{self.Server}{cmdURI}" - return requests.delete(uri, headers=airwatchHeaders).status_code + return requests.delete(uri, headers=airwatchHeaders, proxies=self.Proxy).status_code class AirwatchUser: