function wifidog_register_sms_perform() { session_start(); $page = CurrentPageName(); $tpl = new templates(); $autocreate_confirmed = 0; if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Starting wifidog_register_sms_perform()"); } $wifidog_build_uri = wifidog_build_uri(); $uriext = $wifidog_build_uri[0]; $HiddenFields = $wifidog_build_uri[1]; $sock = new wifidog_settings($_SESSION["WIFIDOG_RULES"]); $mobile = $_POST["mobile"]; $mobile = str_replace(" ", "", $mobile); $mobile = str_replace(".", "", $mobile); $mobile = str_replace(";", "", $mobile); $mobile = str_replace("-", "", $mobile); $ArticaSplashHotSpotEndTime = intval($sock->GET_INFO("ArticaSplashHotSpotEndTime")); $autocreate_maxttl = $ArticaSplashHotSpotEndTime; $wifidog_templates = new wifidog_templates($_SESSION["WIFIDOG_RULES"]); $gateway_addr = $_REQUEST["gw_address"]; $gw_port = $_REQUEST["gw_port"]; $gw_id = $_REQUEST["gw_id"]; $MAC = $_REQUEST["mac"]; $url = $_REQUEST["url"]; $token = $_REQUEST["token"]; $ruleid = $_REQUEST["ruleid"]; if ($ruleid == 0) { if (isset($_SESSION["WIFIDOG_RULES"])) { $ruleid = $_SESSION["WIFIDOG_RULES"]; } } $LOGIN = $_POST["mobile"]; $IPADDR = null; $HOST = gethostbyaddr($IPADDR); $URI = $url; $Credsarray["LOGIN"] = $LOGIN; $Credsarray["IPADDR"] = null; $Credsarray["MAC"] = $MAC; $Credsarray["ARP"] = $MAC; $Credsarray["HOST"] = $HOST; $Credsarray["token"] = $token; $Credsarray["ruleid"] = $ruleid; if ($mobile == null) { return wifidog_register_sms("{please_give_your_phone_number}"); } $q = new mysql_hotspot(); $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT uid,autocreate,password,sessionkey FROM hotspot_members WHERE `uid`='{$mobile}'")); $VerifPassord = $ligne["password"]; if ($ligne["uid"] == null) { $CODE_NUMBER = substr(number_format(time() * mt_rand(), 0, '', ''), 0, 4); $password = md5($CODE_NUMBER); $creationtime = time(); $sessionkey = md5($password . $creationtime . $mobile); $_SESSION["MEM_MOBILE"] = $mobile; if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Create new member {$mobile},{$CODE_NUMBER},TTL:{$ArticaSplashHotSpotEndTime} in line:" . __LINE__); } $sql = "INSERT IGNORE INTO hotspot_members\n\t\t(uid,username,token,ruleid,ttl,sessiontime,password,enabled,creationtime,autocreate,autocreate_confirmed,autocreate_maxttl,sessionkey,MAC) VALUES\n\t\t('{$mobile}','{$mobile}','{$token}','{$_SESSION["WIFIDOG_RULES"]}','{$ArticaSplashHotSpotEndTime}','','{$password}',1,'{$creationtime}',0,'{$autocreate_confirmed}',{$autocreate_maxttl},'{$sessionkey}','{$MAC}')"; $q->QUERY_SQL($sql); if (!$q->ok) { events(0, "SMS: Register failed mobile: {$mobile} (MySQL error)", "{$q->mysql_error}"); return wifidog_register_sms($q->mysql_error); } events(2, "SMS: Register success mobile: {$mobile}", null); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_BODY = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("\n", "\r\n", $wifidog_templates->SMS_SMTP_BODY); $smtp_sender = $sock->GET_INFO("sms_smtp_sender"); $smtp_senderTR = explode("@", $smtp_sender); $instance = $smtp_senderTR[1]; $sms_smtp_recipient = $sock->GET_INFO("sms_smtp_recipient"); $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$instance}"; $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$wifidog_templates->SMS_SMTP_SUBJECT}"; $body[] = "To: {$sms_smtp_recipient}"; $body[] = "Auto-Submitted: auto-replied"; $body[] = "MIME-Version: 1.0"; $body[] = "Content-Type: multipart/mixed;"; $body[] = "\tboundary=\"{$boundary}\""; $body[] = "Content-Transfer-Encoding: 8bit"; $body[] = "Message-Id: <{$random_hash}@{$instance}>"; $body[] = "--{$boundary}"; $body[] = "Content-Description: Notification"; $body[] = "Content-Type: text/plain; charset=us-ascii"; $body[] = ""; $body[] = $wifidog_templates->SMS_SMTP_BODY; $body[] = ""; $body[] = ""; $body[] = "--{$boundary}"; $finalbody = @implode("\r\n", $body); include_once dirname(__FILE__) . "/ressources/class.webauth-sms-msmtp.inc"; $webauth_msmtp = new webauth_sms_msmtp($finalbody, $_SESSION["WIFIDOG_RULES"]); if (!$webauth_msmtp->Send()) { events(0, "SMS: Method(1) Send eMail failed from {$smtp_sender} to {$sms_smtp_recipient}", "{$smtp->error_number}\n{$smtp->error_text}"); $smtp = new smtp(); if ($sock->GET_INFO("sms_smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("sms_smtp_auth_user"); $params["pass"] = $sock->GET_INFO("sms_smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("sms_smtp_server_name"); $params["port"] = $sock->GET_INFO("sms_smtp_server_port"); if (!$smtp->connect($params)) { $q->QUERY_SQL("DELETE FROM hotspot_members WHERE `sessionkey`='{$sessionkey}'"); events(0, "SMS: Method(2) Send eMail failed from {$smtp_sender} to {$sms_smtp_recipient}", "{$smtp->error_number}\n{$smtp->error_text}"); return wifidog_register_sms("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $sms_smtp_recipient, "body" => $finalbody, "headers" => null))) { $smtp->quit(); events(0, "SMS: Method(3) Send eMail failed from {$smtp_sender} to {$sms_smtp_recipient}", "{$smtp->error_number}\n{$smtp->error_text}"); return wifidog_register("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("From: {$smtp_sender} to {$sms_smtp_recipient} {$wifidog_templates->REGISTER_SUBJECT} success"); } $smtp->quit(); } events(2, "SMS: Send Code: {$CODE_NUMBER} Success from {$smtp_sender} to {$sms_smtp_recipient}", "{$smtp->error_number}\n{$smtp->error_text}"); return wifidog_register_sms($wifidog_templates->char($wifidog_templates->SMS_CONFIRM_MESSAGE)); } if ($_POST["SMS_CODE"] == null) { if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("No Code submited!", __FUNCTION__, __LINE__); } events(1, "SMS: mobile: {$mobile} no SMS code returned", null); return wifidog_register_sms($wifidog_templates->SMS_CODE_ERROR); } if (preg_match("#([0-9]+)#", $_POST["SMS_CODE"], $re)) { $_POST["SMS_CODE"] = $re[1]; } $VerifPassord2 = md5(trim($_POST["SMS_CODE"])); if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Saved Code: {$VerifPassord}, returned code {$_POST["SMS_CODE"]}/{$VerifPassord2}", __FUNCTION__, __LINE__); } if ($VerifPassord != $VerifPassord2) { return wifidog_register_sms($wifidog_templates->SMS_CODE_ERROR); } $ENABLED_META_LOGIN = intval($sock->GET_INFO("ENABLED_META_LOGIN")); wifidog_logs("Ruleid: {$_SESSION["WIFIDOG_RULES"]} Endtime: {$ArticaSplashHotSpotEndTime}"); if ($ENABLED_META_LOGIN == 1) { $sql = "CREATE TABLE IF NOT EXISTS `squidlogs`.`hotspot_members_meta` ( `uid` VARCHAR( 128 ) NOT NULL , `creationtime` INT UNSIGNED NOT NULL, PRIMARY KEY ( `uid` ) , INDEX ( `creationtime`) ) ENGINE = MYISAM;"; $q->QUERY_SQL($sql); $sql = "INSERT IGNORE INTO `hotspot_members_meta` (uid,creationtime) VALUES ('{$mobile}','" . time() . "')"; $q->QUERY_SQL($sql); } if (UnLock($Credsarray, false)) { events(2, "SMS: mobile: {$mobile} success to register establishing a new session", null); wifidog_redirect_after_login(); return; } else { events(1, "SMS: mobile: {$mobile} failed to register with code {$_POST["SMS_CODE"]} ", $GLOBALS["UnLockError"]); wifidog_register_sms($GLOBALS["UnLockError"]); return; } }
function tests_smtp() { ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); ini_set('error_prepend_string', null); ini_set('error_append_string', null); $tpl = new templates(); $sock = new sockets(); $sock = new wifidog_settings($_POST["ruleid"]); $mobile = $_POST["mobile"]; $CODE_NUMBER = "1234"; $wifidog_templates = new wifidog_templates($_POST["ruleid"]); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_BODY = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("\n", "\r\n", $wifidog_templates->SMS_SMTP_BODY); echo "Rule: {$_POST["ruleid"]}\n"; $smtp_sender = $sock->GET_INFO("sms_smtp_sender"); $smtp_senderTR = explode("@", $smtp_sender); $instance = $smtp_senderTR[1]; $sms_smtp_recipient = $sock->GET_INFO("sms_smtp_recipient"); $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$instance}"; $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$wifidog_templates->SMS_SMTP_SUBJECT}"; $body[] = "To: {$sms_smtp_recipient}"; $body[] = "Auto-Submitted: auto-replied"; $body[] = "MIME-Version: 1.0"; $body[] = "Content-Type: multipart/mixed;"; $body[] = "\tboundary=\"{$boundary}\""; $body[] = "Content-Transfer-Encoding: 8bit"; $body[] = "Message-Id: <{$random_hash}@{$instance}>"; $body[] = "--{$boundary}"; $body[] = "Content-Description: Notification"; $body[] = "Content-Type: text/plain; charset=us-ascii"; $body[] = ""; $body[] = $wifidog_templates->SMS_SMTP_BODY; $body[] = ""; $body[] = ""; $body[] = "--{$boundary}"; $finalbody = @implode("\r\n", $body); include_once dirname(__FILE__) . "/ressources/class.webauth-sms-msmtp.inc"; $webauth_msmtp = new webauth_sms_msmtp($finalbody, $_POST["ruleid"]); if ($webauth_msmtp->Send()) { echo $tpl->javascript_parse_text("{$wifidog_templates->SMS_SMTP_SUBJECT}\nTo {$sms_smtp_recipient}: {success}", 1); return; } $smtp = new smtp(); if ($sock->GET_INFO("sms_smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("sms_smtp_auth_user"); $params["pass"] = $sock->GET_INFO("sms_smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("sms_smtp_server_name"); $params["port"] = $sock->GET_INFO("sms_smtp_server_port"); if (!$smtp->connect($params)) { echo $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}", 1); return; } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $sms_smtp_recipient, "body" => $finalbody, "headers" => null))) { $smtp->quit(); echo $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}", 1); return; } echo $tpl->javascript_parse_text("{$wifidog_templates->SMS_SMTP_SUBJECT}\nTo {$sms_smtp_recipient}: {success}", 1); $smtp->quit(); }