" . $msg . ""; } function httpsRedirect() { if( headers_sent() ) { echo "ssl_redirect: Headers already sent."; return; } if( !isHttps() ) { if(!isset($_SERVER['REQUEST_URI']) OR !isset($_SERVER['HTTP_HOST'])) { echo " Your browser doesn't support HTTP 1.1 requests.\n"; echo " Please use https:// instead of http://\n"; return; } header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit; } } function isHttps() { $headerHttps = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != "off"; $headerHttpHttps = isset($_SERVER['HTTP_HTTPS']) && $_SERVER['HTTP_HTTPS'] != "off"; return $headerHttps || $headerHttpHttps; } function getRemoteAddress() { if( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { return $_SERVER["HTTP_X_FORWARDED_FOR"]; }elseif( isset($_SERVER["REMOTE_ADDR"]) ) { return $_SERVER["REMOTE_ADDR"]; }else { return NULL; } } function mayLogin(IDB $db, $username) { $queryBuilder = new QueryBuilder($db, "logins"); $queryBuilder->addField(new DBMethodCount("id"), "count"); $matchRemoteAddress = new DBWhereEquals("remoteaddress", getRemoteAddress()); if( $username == null ) { $queryBuilder->addWhere($matchRemoteAddress); }else { $queryBuilder->addWhere(new DBWhereOr(new DBWhereEquals("username", $_POST['username'])), $matchRemoteAddress); } $queryBuilder->addWhere(new DBWhereGreaterEquals("date", date("Y-m-d H:i:s", strtotime("-1 hour")))); $queryBuilder->addWhere(new DBWhereNotEquals("result", "success")); $queryBuilder->addOrderDesc("date"); if( $db->select($queryBuilder->toQuery()) == 1 ) { $row = $db->fetchAssoc(); return $row['count'] < 3; }else { return false; } } function registerLogin(IDB $db, $username, $result) { $data = array(); $data['username'] = $username; $data['remoteaddress'] = getRemoteAddress(); $data['date'] = date("Y-m-d H:i:s"); $data['result'] = $result; $db->insert("logins", $data); } function mayGetPromotionCode(IDB $db, $username) { $queryBuilder = new QueryBuilder($db, MYSQL_TABLE_CODES); $queryBuilder->addField(new DBMethodCount("id"), "count"); $queryBuilder->addWhere(new DBWhereEquals("username", $username)); if( defined("QUOTA_DAYS") ) { $queryBuilder->addWhere(new DBWhereGreaterEquals("handedout", date("Y-m-d H:i:s", strtotime("-" . QUOTA_DAYS ." days")))); } if( $db->select($queryBuilder->toQuery()) == 1 ) { $row = $db->fetchAssoc(); return $row['count'] < QUOTA_AMOUNT; }else { return false; } } function getPromotionCode(IDB $db, $username) { $queryBuilder = new QueryBuilder($db, MYSQL_TABLE_CODES); $queryBuilder->addWhere(new DBWhereIsNull("username")); $queryBuilder->addWhere(new DBWhereIsNull("handedout")); $queryBuilder->addOrderAsc("id"); $queryBuilder->setLimit(1); if( $db->select($queryBuilder->toQuery()) == 1 ) { $row = $db->fetchAssoc(); $update = array(); $update['username'] = $username; $update['handedout'] = date("Y-m-d H:i:s"); if( $db->update(MYSQL_TABLE_CODES, $row['id'], $update) ) { return $row['code']; } } return null; } function getAvailableCodeCount(IDB $db) { return getCodeCount($db, false); } function getUsedCodeCount(IDB $db) { return getCodeCount($db, true); } function getCodeCount(IDB $db, $used) { $queryBuilder = new QueryBuilder($db, MYSQL_TABLE_CODES); $queryBuilder->addField(new DBMethodCount("id"), "count"); if( $used ) { $queryBuilder->addWhere(new DBWhereIsNotNull("username")); }else { $queryBuilder->addWhere(new DBWhereIsNull("username")); } if( $db->select($queryBuilder->toquery()) == 1 ) { $row = $db->fetchAssoc(); return $row['count']; }else { return "Unknown"; } } httpsRedirect(); require_once dirname(__FILE__) . "/config.php"; require_once dirname(__FILE__) . "/include/db/MySQL.php"; require_once dirname(__FILE__) . "/include/db/QueryBuilder.php"; require_once dirname(__FILE__) . "/include/auth/AuthIntranet.php"; require_once dirname(__FILE__) . "/include/Mail.php"; $db = new MySQL(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB); ?> AEGEE-Europe | European Students' Forum

= DATE_START) && (!defined("DATE_END") || date("Y-m-d") <= DATE_END) ) { $showLogin = true; $username = isset($_POST['username']) && strlen($_POST['username']) > 0 ? trim($_POST['username']) : null; if( $_SERVER['REQUEST_METHOD'] == "POST" && $username != null && strlen($_POST['password']) > 0 ) { if( mayLogin($db, $username) ) { $ldap = new AuthIntranet(); if( $ldap->auth($username, $_POST['password']) ) { registerLogin($db, $username, "success"); $showLogin = false; if( mayGetPromotionCode($db, $username) ) { $ldapData = $ldap->getData(array("mail", "givenname")); $promotionCode = getPromotionCode($db, $username); $mailBody = "Hello " . $ldapData['givenname'] . ",\n\n"; $mailBody .= str_replace("%PROMOTIONCODE%", $promotionCode, MAIL_BODY) . "\n\n"; $mailBody .= "Kind regards,\n\n"; $mailBody .= "AEGEE discount code robot"; $mail = new Mail("noreply@zeus-aegee.snt.utwente.nl", $ldapData['mail']); $mail->setSubject(TITLE); $mail->setMessage($mailBody); if( $mail->send() == Mail::MAIL_OK ) { echo "
You have received " . DESCRIPTION_SHORT . " on your email address registered in the AEGEE intranet (" . $ldapData['mail'] . ").
In case you would like to change your email address, please go to intranet and introduce your new email address. Please note that it can take an hour for the new e-mail address to become visible here. The discount code that has just been sent now cannot be recovered.
"; }else { echo "
Failed mailing discount code. Please make sure your e-mail address as registered in the intranet (" . $ldapData['mail'] . ") is valid. Note that after you change your e-mail address in intranet, it can take an hour for it to become visible here.
"; } }else { echo "
" . MESSAGE_OVER_QUOTA . "
"; } }else { registerLogin($db, $username, "failed"); echo "
Login failed, username and/or password do not match.
"; } }else { registerLogin($db, $username, "blocked"); $showLogin = false; echo "
Login failed, too many authentication failures for your IP and/or username. Come back in one hour.
"; } } if( $showLogin ) { if( mayLogin($db, null) ) { ?>

You have to log in with your AEGEE intranet account.

Username: "/>
Password:

Too many authentication failures from your IP. Come back in one hour.
"; } } }else { if( !defined("DATE_START") ) { echo "
This discount ended " . date("d-m-Y", strtotime(DATE_END)) . ".
"; }elseif( !defined("DATE_END") ) { echo "
This discount will start on " . date("d-m-Y", strtotime(DATE_START)) . ".
"; }else { echo "
This discount will start on " . date("d-m-Y", strtotime(DATE_START)) . " and last until " . date("d-m-Y", strtotime(DATE_END)) . ".
"; } echo "

" . EXPLANATION . "

"; } ?>