Your IP : 172.28.240.42


Current Path : /var/www/html/clients/nkpgkx11.e-nk.ru/bitrix/modules/citrus.tszhdemo/
Upload File :
Current File : /var/www/html/clients/nkpgkx11.e-nk.ru/bitrix/modules/citrus.tszhdemo/include.php

<?
define("TSZHDEMO_MODULE_ID", 'citrus.tszhdemo');

// ïîêëþ÷åíèå ÿçûêîâûõ ôàéëîâ
IncludeModuleLangFile(__file__);

CModule::AddAutoloadClasses(
	TSZHDEMO_MODULE_ID,
	array(
		"CTszhDemoPublicHelper" => "public.php",
	)
);



function tszhPostRequest($url, $data, $referer='') {

    $data = http_build_query($data);
    $url = parse_url($url);

    if ($url['scheme'] != 'http') { 
        die('Error: Only HTTP request are supported !');
    }

    $host = $url['host'];
    $path = $url['path'];

    $fp = fsockopen($host, 80, $errno, $errstr, 3);

    if ($fp){
 
        fputs($fp, "POST $path HTTP/1.1\r\n");
        fputs($fp, "Host: $host\r\n");
 
        if ($referer != '')
            fputs($fp, "Referer: $referer\r\n");
 
        fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
        fputs($fp, "Content-Length: ". strlen($data) ."\r\n");
        fputs($fp, "Connection: Close\r\n\r\n");
        fputs($fp, $data);
 
        $result = ''; 
        while(!feof($fp)) {
            $result .= fgets($fp, 128);
        }
    }
    else
	{
	    $ar = array(
	        'status' => 'error',
	        'no' => $errno,
	        'text' => $errstr
	    );
		return false;
	}

    fclose($fp);

    $result = explode("\r\n\r\n", $result, 2);

    $header = isset($result[0]) ? $result[0] : '';
    $content = isset($result[1]) ? $result[1] : '';

    return array(
        'status' => 'ok',
        'header' => $header,
        'content' => $content
    );
}

function tszhSendUsage($siteID, $toEmail)
{
	global $DB, $APPLICATION;
	
	if (COption::GetOptionString('main', 'wizard_solution', false, SITE_ID) != 'citrus_tszhdemo')
		return;
	
	$arSendInfo = Array('v' => 2, 'code' => 'citrus.tszhdemo', 'encoding' => SITE_CHARSET);
	
	$arSendInfo["sites"] = Array();
	$rsSites = CSite::GetList($by="sort", $order="desc", Array());
	while ($arSite = $rsSites->Fetch()) {
		$strSiteInfo = "[{$arSite['LID']}] {$arSite['NAME']} ({$arSite['DIR']}) ";
		$strSiteInfo .= trim(", " . implode(', ', Array($arSite["SERVER_NAME"], $arSite["EMAIL"],	$arSite["DOMAINS"])), ', ');
		$arSendInfo["sites"][$arSite["LID"]] = $strSiteInfo;
	}

	include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/update_client_partner.php");
	if (class_exists('CUpdateClientPartner'))
	{
		$arSendInfo['key_code'] = md5("BITRIX".CUpdateClientPartner::GetLicenseKey()."LICENCE");
	}
	
	$arSendInfo['server']['IP'] = $_SERVER['SERVER_ADDR'];
	$arSendInfo['server']['Host'] = $_SERVER['HTTP_HOST'];
	$arSendInfo['server']['E-Mail'] = $_SERVER['SERVER_ADMIN'];
	$arSendInfo['server']['Name'] = $_SERVER['SERVER_NAME'];
	$arSendInfo['server']['Software'] = $_SERVER['SERVER_SOFTWARE'];
		
	
	$arModuleStatus = Array(
		MODULE_NOT_FOUND => 'Not found',
		MODULE_INSTALLED => 'Installed',
		MODULE_DEMO => 'Demo',
		MODULE_DEMO_EXPIRED => 'Expired demo',
	);
	
	$arSendInfo["modules"] = Array();
	$rsInstalledModules = CModule::GetList();
	while ($ar = $rsInstalledModules->Fetch()) {
		
		$moduleID = $ar["ID"];
		
		$arModuleInfo = Array();
		$arModuleInfo["ID"] = $moduleID;
		$arModuleInfo["Date installed"] = $ar["DATE_ACTIVE"];
		
		$nModuleStatus = CModule::IncludeModuleEx($moduleID);
		if (array_key_exists($nModuleStatus, $arModuleStatus)) 
		{
			$obModule = CModule::CreateModuleObject($moduleID);
			if (is_object($obModule)) {
				$arModuleInfo["Name"] = $obModule->MODULE_NAME . " (" . $obModule->MODULE_VERSION . ")";
			}
			$arModuleInfo["Status"] = $arModuleStatus[$nModuleStatus];
		}
		else
		{
			$arModuleInfo["Status"] = 'unknown';
		}
		
		$arSendInfo["modules"][] = $arModuleInfo;
	}
	
	$arSite = $APPLICATION->GetSiteByDir();
	$defaultEmail = $arSendInfo['mail'] = strlen($arSite['EMAIL']) > 0 ? $arSite['EMAIL'] : COption::GetOptionString("main", "email_from");
	
	$arSendInfo['options'] = Array();
	$rsOptions = $DB->Query("select module_id, name, value from b_option where module_id = 'citrus.tszhdemo' or (module_id='main' and (name like 'new_%' or name like 'server_%')) order by module_id, name asc", true);
	while (is_object($rsOptions) && $arOption = $rsOptions->Fetch())
		$arSendInfo['options'][] = $arOption;
	
	$arPostRequest = tszhPostRequest('http://jkh.citrus-soft.ru/lic.php', Array('notify' => 1, 'info' => serialize(array_merge($arSendInfo, Array('server' => $_SERVER)))));
	$bSent = is_array($arPostRequest) && $arPostRequest['status'] == 'ok' && $arPostRequest['content'] == 'ok';
//	return $bSent; 
	
	ob_start();
	
	echo "<h3>Bitrix license code key</h3>";
	echo "<p>{$arSendInfo['key_code']}</p>";

	if (is_array($arSendInfo['sites']) && count($arSendInfo['sites']) > 0)
	{
		echo "<h3>Sites</h3><ul>";
		foreach ($arSendInfo['sites'] as $code => $value)
			echo "<li>" . $value . '</li>';
		echo '</ul>';
	}
	
	
	echo '<h3>Server info</h3><dl>';
	foreach ($arSendInfo['server'] as $key => $value)
	{
		?>
			<dt><?=$key?></dt>
			<dd><?=$value?></dd>
		<?
	}
	echo '</dl>';
	
	echo '<h3>Installed modules</h3><dl>';
	foreach ($arSendInfo['modules'] as $arModule)
	{
	?>
		<dt><?=$arModule["ID"]?></dt>
		<dd><?=implode(' ', Array($arModule["Date installed"], $arModule["Status"], $arModule["Name"]))?></dd>
	<?
	}
	echo '</dl>';
	
	$html = ob_get_contents();
	ob_end_clean();

	$subject = '[citrus.tszhdemo] installation: ' . $_SERVER['HTTP_HOST'];
	$headers  = "From: $defaultEmail\r\n";
    $headers .= "Content-type: text/html; charset=" . SITE_CHARSET . "\r\n";
	return mail ($toEmail, $subject, $html, $headers) && $bSent;
	
}

function tszhNotify($siteID)
{
	if (strlen($siteID) <= 0)
		return;
	$bSent = COption::GetOptionString('citrus.tszhdemo', 'tszh.notify.domains', false, $siteID);
	$nLastTry = abs(COption::GetOptionInt('citrus.tszhdemo', 'tszh.notify.lasttry', 0, $siteID));
	$bNextTry = 
		time() - $nLastTry >= 2*60*60 ||
		$nLastTry > time() ||
		$nLastTry == 0;
		
	if (!$bSent && $bNextTry) {
		
		COption::SetOptionInt('citrus.tszhdemo', 'tszh.notify.lasttry', time(), '', $siteID);

		if (tszhSendUsage($siteID, 'jkh@citrus-soft.ru'))
		{
			COption::SetOptionString('citrus.tszhdemo', 'tszh.notify.domains', 1, '', $siteID);
		}
		

	}
}



if (!defined("ADMIN_SECTION")) {
	tszhNotify(SITE_ID);
}

?>