@@ -105,16 +105,30 @@ if args.url is not None:
105105 client = requests .Session ()
106106
107107 # Retrieve the CSRF token first
108- r = client .get (login_url , verify = False )
108+ try :
109+ r = client .get (login_url , verify = False )
110+ except requests .exceptions .ConnectionError as e :
111+ print (f'Failed to connect to { login_url } : { e } ' , file = sys .stderr )
112+ sys .exit (1 )
113+
109114 csrf = re .search (".*name='__csrf_magic' value=\" ([^\" ]+)\" .*" , r .text , flags = re .MULTILINE ).group (1 )
110115
111116 # Login to the web interface
112117 login_data = dict (login = 'Login' , usernamefld = args .user , passwordfld = args .password , __csrf_magic = csrf )
113118 r = client .post (login_url , data = login_data , verify = False )
114- csrf = re .search (".*name='__csrf_magic' value=\" ([^\" ]+)\" .*" , r .text , flags = re .MULTILINE ).group (1 )
119+ if (args .verbose >= 4 ):
120+ print (f'Login URL returned { r } { r .text } ' )
121+ html = lxml .html .fromstring (r .text )
122+ # <div class="col-sm-4 nowarning msgbox text-center text-danger"><h4>Username or Password incorrect</h4></div>
123+ alert = html .xpath ('//div[contains(@class,"text-danger")]/*[1]/text()' )
124+ if len (alert ) > 0 :
125+ print (f'Login failed with "{ alert [0 ]} "' , file = sys .stderr )
126+ sys .exit (1 )
115127
116128 # Retrieve the configuration web page and parse it
117129 r = client .get (args .url , verify = False )
130+ if (args .verbose >= 4 ):
131+ print (f'{ args .url } returned { r } { r .text } ' )
118132 html = lxml .html .fromstring (r .text )
119133
120134elif args .urlfile is not None :
0 commit comments