11import urllib3
2- from bs4 import BeautifulSoup
3- import csv
2+ from bs4 import BeautifulSoup
43import requests
54import base64
65import re
@@ -54,23 +53,27 @@ def auth(self):
5453 self .session = requests .session ()
5554 self .session .adapters .pop ("https://" , None )
5655 self .session .mount ("https://" , CustomSSLContextHTTPAdapter (ctx ))
56+ self .basicAuth = ('Polycom' , self .pw )
5757 authstring = bytes (f"Polycom:{ self .pw } " , encoding = "utf-8" )
5858 # Check if password works
5959 resp = self .session .get (endpointJs , verify = False )
6060 js = resp .text
6161 authType = re .search (r'type: .*' , js , re .MULTILINE ).group (0 )
6262 authType = self .charReplace (["'" , '"' , "," ], authType )
63+ authType = authType .replace ('type: ' , '' )
6364 authType = authType .strip ().lower ()
65+ authEndpoint = authType .replace ('url: ' , '' )
6466 authEndpoint = re .search (r'url: .*.htm' , js , re .MULTILINE ).group (0 )
6567 authEndpoint = self .charReplace (["'" , '"' , "," ], authEndpoint )
68+ authEndpoint = authEndpoint .replace ('url: ' , '' )
6669 authEndpoint = endpointBase + authEndpoint .strip ()
6770 if authType == 'get' :
68- resp = self .session .post (authEndpoint , auth = ( 'Polycom' , self .pw ) , verify = False )
71+ resp = self .session .get (authEndpoint , auth = self .basicAuth , verify = False )
6972 if authType == 'post' :
70- resp = self .session .post (authEndpoint , auth = ( 'Polycom' , self .pw ) , verify = False )
71- if "INVALID" in resp .text :
72- return False
73- if resp .status_code == 200 :
73+ resp = self .session .post (authEndpoint , auth = self .basicAuth , verify = False )
74+ if "INVALID" in resp .text or "Failed" in resp . text :
75+ return False
76+ elif resp .status_code == 200 :
7477 # return the session to simplify usage later.
7578 self .session .cookies = resp .cookies
7679 if not self .session .cookies :
@@ -84,7 +87,7 @@ def parseNames(self):
8487
8588 configKeys = {}
8689 endpoint = f'https://{ self .ip } /provConf.htm'
87- resp = self .session .get (endpoint , cookies = self .session .cookies , verify = False )
90+ resp = self .session .get (endpoint , auth = self . basicAuth , cookies = self .session .cookies , verify = False )
8891 soup = BeautifulSoup (resp .text , 'xml' )
8992 for index , key in self .paramKeys .items ():
9093 tag = soup .find ('input' , {"paramName" : key })
@@ -108,7 +111,7 @@ def setProvisioning(self):
108111 if self [key ]:
109112 #Only pull values we do have
110113 data [index ] = self [key ]
111- resp = self .session .post (f'https://{ self .ip } /form-submit' , cookies = self .session .cookies , verify = False , data = data )
114+ resp = self .session .post (f'https://{ self .ip } /form-submit' , auth = self . basicAuth , cookies = self .session .cookies , verify = False , data = data )
112115 if "CONF_CHANGE" in resp .text :
113116 return True
114117 else :
0 commit comments