function UFDGUARD_UNLOCKED($url)
{
    if (trim($url) == null) {
        if ($GLOBALS["DEBUG_UNLOCK"]) {
            WLOG("UFDGUARD_UNLOCKED::URL is null");
            return false;
        }
    }
    if (strpos(" {$url}", "127.0.0.1 00:00:00:00:00:00") > 0) {
        return false;
    }
    if ($GLOBALS["DEBUG_UNLOCK"]) {
        WLOG("UFDGUARD_UNLOCKED::Call api_mysql_COUNT_ROWS");
    }
    if (api_mysql_COUNT_ROWS("ufdbunlock") == 0) {
        return false;
    }
    $values = explode(" ", $url);
    $IPADDR = $values[0];
    $MAC = $values[1];
    $XFORWARD = $values[2];
    $WWW = $values[3];
    $IPADDR = str_replace("%25", "-", $IPADDR);
    $MAC = str_replace("%25", "-", $MAC);
    $XFORWARD = str_replace("%25", "-", $XFORWARD);
    if ($XFORWARD == "-") {
        $XFORWARD = null;
    }
    if ($MAC == "00:00:00:00:00:00") {
        $MAC = null;
    }
    if ($MAC == "-") {
        $MAC = null;
    }
    if ($GLOBALS["DEBUG_UNLOCK"]) {
        WLOG("UFDGUARD_UNLOCKED::Call IPCalls");
    }
    $IPCalls = new IP();
    if ($IPCalls->isIPAddress($XFORWARD)) {
        $IPADDR = $XFORWARD;
    }
    if (preg_match("#(.+?):[0-9]+#", $WWW, $re)) {
        $WWW = $re[1];
    }
    if (preg_match("#^www\\.(.+)#", $WWW, $re)) {
        $WWW = $re[1];
    }
    if ($GLOBALS["DEBUG_UNLOCK"]) {
        WLOG("UFDGUARD_UNLOCKED::{$WWW}");
    }
    $WWW = api_GetFamilySites($WWW);
    if ($GLOBALS["DEBUG_UNLOCK"]) {
        WLOG("api_GetFamilySites::{$WWW}");
    }
    if (!isset($GLOBALS["ufdbunlock_c"])) {
        $GLOBALS["ufdbunlock_c"] = 0;
    }
    if ($GLOBALS["ufdbunlock_c"] > 90) {
        QUERY_MYSQL("DELETE FROM ufdbunlock WHERE `finaltime` <" . time());
        //if(!$q->ok){WLOG("$q->mysql_error");}
        $GLOBALS["ufdbunlock_c"] = 0;
    }
    if ($MAC != null) {
        if ($GLOBALS["DEBUG_UNLOCK"]) {
            WLOG("SELECT md5,finaltime FROM ufdbunlock WHERE `www`='{$WWW}' AND MAC='{$MAC}'");
        }
        $ligne = mysql_fetch_array(QUERY_MYSQL("SELECT md5,finaltime FROM ufdbunlock WHERE `www`='{$WWW}' AND MAC='{$MAC}'"));
        if ($ligne["md5"] != null) {
            if ($ligne["finaltime"] < time()) {
                return false;
            }
            if ($IPADDR != null) {
                QUERY_MYSQL("UPDATE ufdbunlock SET ipaddr='{$IPADDR}' WHERE MAC='{$MAC}'");
            }
            return true;
        }
    }
    if ($IPADDR != null) {
        if ($GLOBALS["DEBUG_UNLOCK"]) {
            WLOG("SELECT md5,finaltime FROM ufdbunlock WHERE `www`='{$WWW}' AND ipaddr='{$IPADDR}'");
        }
        $ligne = mysql_fetch_array(QUERY_MYSQL("SELECT md5,finaltime FROM ufdbunlock WHERE `www`='{$WWW}' AND ipaddr='{$IPADDR}'"));
        $time = time();
        if ($ligne["md5"] != null) {
            if ($ligne["finaltime"] < time()) {
                WLOG("{$ligne["finaltime"]} < {$time} -> FALSE");
                return false;
            }
            if ($MAC != null) {
                QUERY_MYSQL("UPDATE ufdbunlock SET MAC='{$MAC}' WHERE ipaddr='{$IPADDR}'");
            }
            return true;
        }
    }
}
示例#2
0
function ngx_mail_auth($username, $ip, $proto, $rcptto)
{
    $HTTP_CLIENT_IP_NET = explode(".", $ip);
    $HTTP_CLIENT_NET = "{$HTTP_CLIENT_IP_NET[0]}.{$HTTP_CLIENT_IP_NET[1]}.{$HTTP_CLIENT_IP_NET[1]}.0";
    $username = mysql_escape_string3($username);
    $sql = "SELECT backend,backend_port FROM reverse_mailauth WHERE\n\t\t\tusername='******'\n\t\t\t\tAND ipsrc='{$ip}'\n\t\t\t\tAND protocol='{$proto}'\n\t\t\t\tAND enabled=1";
    $ligne = mysql_fetch_array(QUERY_MYSQL($sql));
    if ($ligne["backend"] != null) {
        return array($ligne["backend"], $ligne["backend_port"]);
    }
    ngx_mail_events("[NONE]: {$username} {$ip} {$proto} ", __LINE__);
    $sql = "SELECT backend,backend_port FROM reverse_mailauth WHERE\n\tusername='******'\n\tAND ipsrc='{$HTTP_CLIENT_NET}'\n\tAND protocol='{$proto}'\n\tAND enabled=1";
    $ligne = mysql_fetch_array(QUERY_MYSQL($sql));
    if ($ligne["backend"] != null) {
        return array($ligne["backend"], $ligne["backend_port"]);
    }
    ngx_mail_events("[NONE]: {$username} {$HTTP_CLIENT_NET} {$proto} ", __LINE__);
    $sql = "SELECT backend,backend_port FROM reverse_mailauth WHERE\n\tusername='******'\n\tAND protocol='{$proto}'\n\tAND enabled=1";
    $ligne = mysql_fetch_array(QUERY_MYSQL($sql));
    if ($ligne["backend"] != null) {
        return array($ligne["backend"], $ligne["backend_port"]);
    }
    ngx_mail_events("[FAILED]: {$username} {$proto} ", __LINE__);
    return false;
}