File: //lib/python2.7/site-packages/lap/http_mechanize.py
import base64
import socket
import mechanize
def __run__(params):
try:
settimeout = int(params.get("timeout", 5))
socket.setdefaulttimeout(settimeout)
br = mechanize.Browser()
if params.get("host_header"):
br.addheaders.append(("Host", str(params.get("host_header")).strip()))
if params.get("basicauth_user"):
br.addheaders.append(("Authorization", "Basic %s" % base64.encodestring("%s:%s" %\
(params.get("basicauth_user", ""), params.get("basicauth_passwd", ""))).strip()))
br.set_handle_robots(params.get("robots"))
br.open(params.get("url"), timeout=settimeout)
if params.get("formname"):
br.select_form(name=params.get("formname"))
for field in params.get("formfields").split():
br[field] = params.get(field)
else:
br.select_form(nr=0)
for field in params.get("formfields").split():
br[field] = params.get(field)
result = br.submit().read()
tokens = params.get("token", "").strip()
if tokens:
status = 0
for token in tokens.split("|"):
if token in result:
status = 1
if not status: raise NameError("token %s is missing, found %s" % (tokens, result.replace("!", "\!")))
except socket.timeout:
return [2, "CRITICAL: Socket timeout"]
except socket.gaierror:
return [2, "CRITICAL: Unable to resolve domain"]
except Exception, e:
return [2,"CRITICAL: %s" % repr(e)]
else:
return [0, "OK"]