Ejemplo n.º 1
0
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;
    }
}
Ejemplo n.º 2
0
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();
}