<?php
//Author: Dilyan.Palauzov@aegee.org
//11 November 2008

require_once "Net/SMTP.php";
require_once "Net/DNS.php";

  function resolve_domain($domain) {
        $resolver = new Net_DNS_Resolver();
        $hosts = array();
        $packet = $resolver->query($domain, "MX");
        if ($packet) { //MX records are presented
                foreach($packet->answer as $rr)
                        array_push($hosts, $rr->exchange);
                return $hosts;
        }
  }

  function check_subscription($email, $lists) {
	$output = array();
	$domains = resolve_domain("lists.aegee.org");
	foreach($domains as $server) {
		$smtp = new Net_SMTP($server, 25, "mail.aegee.org");
		if (PEAR::isError($e = $smtp->connect(5))) {
			echo $smtp->getResponse();
			$smtp->disconnect();
			continue;
		};
        	if (PEAR::isError($e = $smtp->mailFrom($email))) {
			echo $smtp->getResponse();
		}

		foreach($lists as $list) {
			$smtp->rcptTo($list. "-check-subscription@aegee.org");
			$res = $smtp->getResponse();
//			echo $list . " = " . $res[0] . $res[1]. "\n";
			if (strcmp($res[1], "address not deliverable") == 0)
				$output[$list] = -2;
			else
				$output[$list] = ($res[0] < 500 ) ? 1 : -1;
		}
		$smtp->disconnect();
		break;
	}
	return $output;
  }
$lists = array("aegee-event-l", "aegee-agora-l", "aegee-l", "aegee-su-l", "announce-l");
$output = check_subscription($_GET["email"], $lists);

//needed for PHP below 5.2
require "Services/JSON.php";
$json = new Services_JSON();
echo "(" . $json->encode($output) . ")";
//for PHP 5.2 or above
//echo "(" . json_encode($output) . ");";
?>
