File: //usr/lib/python2.7/site-packages/lap/ig_auth.py
import socket
import requests
socket.setdefaulttimeout(5)
def try_remote_auth(username, password, protocol="imap"):
headers = {'Auth-Pass': password, 'Auth-User': username, 'Auth-Protocol': protocol, 'X-Forwarded-For': socket.gethostbyname(socket.gethostname())}
_, domain = username.split("@", 1)
response = requests.post("https://login.%s/mail/signin" % domain, headers=headers, verify=False)
status = response.headers.get('auth-status') or response.headers.get('Auth-Status')
if status and 'OK' in status:
return True
return False
def __run__(params):
username = params.get("username")
password = params.get("password")
protocol = params.get("protocol", "imap")
try:
response = try_remote_auth(username, password, protocol)
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:
if response:
return [0, "OK"]
else:
return [2, "Invalid login or password"]