function Crypt_Decode($String, $Key = HOST_ID) { /****************************************************************************/ $__args_types = array('string', 'string'); #----------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /****************************************************************************/ $String = Base64_Decode($String); #----------------------------------------------------------------------------- if (empty($String)) { return $String; } #----------------------------------------------------------------------------- if (Extension_Loaded('mcrypt')) { #--------------------------------------------------------------------------- $Module =& Link_Get('Crypt'); #--------------------------------------------------------------------------- if (!Is_Resource($Module)) { #------------------------------------------------------------------------- $Module = @MCrypt_Module_Open(MCRYPT_DES, '', MCRYPT_MODE_ECB, ''); if (!Is_Resource($Module)) { return ERROR | @Trigger_Error('[Crypt_Decode]: не удалось открыть дескриптор'); } #------------------------------------------------------------------------- $Iv = @MCrypt_Create_Iv(MCrypt_Enc_Get_Iv_Size($Module), MCRYPT_RAND); if (!$Iv) { return ERROR | @Trigger_Error('[Crypt_Decode]: не удалось создать IV'); } #------------------------------------------------------------------------- $Key = SubStr($Key, 0, MCrypt_Enc_Get_Key_Size($Module)); #Debug(SPrintF("[system/libs/auto/Crypt]: Decode Key = %s",$Key)); #------------------------------------------------------------------------- $IsInit = @MCrypt_Generic_Init($Module, $Key, $Iv); if (!Is_Integer($IsInit)) { return ERROR | @Trigger_Error('[Crypt_Decode]: не удалось инициализовать модуль дешифрования'); } } #--------------------------------------------------------------------------- $String = @MDecrypt_Generic($Module, $String); if (!Is_String($String)) { return ERROR | @Trigger_Error('[Crypt_Decode]: не удалось дешифровать данные'); } #--------------------------------------------------------------------------- $String = Trim($String); #--------------------------------------------------------------------------- } #----------------------------------------------------------------------------- return $String; }
function HTTP_Send($Target, $Settings, $Get = array(), $Post = array(), $Addins = array()) { /******************************************************************************/ $__args_types = array('string', 'array', 'array', 'string,array', 'array'); #------------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /******************************************************************************/ $Default = array('Protocol' => 'tcp', 'Address' => 'localhost', 'Port' => 8080, 'Host' => 'localhost', 'Basic' => '', 'Charset' => 'UTF-8', 'Hidden' => '', 'IsLogging' => TRUE); #------------------------------------------------------------------------------- Array_Union($Default, $Settings); #------------------------------------------------------------------------------- $IsLogging = (bool) $Default['IsLogging']; #------------------------------------------------------------------------------- $Tmp = System_Element('tmp'); if (Is_Error($Tmp)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось определить путь временной директории'); } #------------------------------------------------------------------------------- $Config = Config(); #------------------------------------------------------------------------------- $Address = $Default['Address']; #------------------------------------------------------------------------------- Debug(SPrintF('[HTTP_Send]: соединяемся с (%s:%u)', $Address, $Default['Port'])); #------------------------------------------------------------------------------- # https://bugs.php.net/bug.php?id=52913 # пришлось заменить: $Address -> $Default['Host'] $Socket = @FsockOpen(SPrintF('%s://%s', $Protocol = $Default['Protocol'], $Default['Host']), $Port = $Default['Port'], $nError, $sError, $Config['Other']['Libs']['HTTP']['SocketTimeout']); if (!Is_Resource($Socket)) { #------------------------------------------------------------------------------- $IsWrite = IO_Write(SPrintF('%s/logs/http-send.log', $Tmp), SPrintF("%s://%s:%u ошибка соединения\n\n", $Protocol, $Address, $Port)); if (Is_Error($IsWrite)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать данные в лог файл'); } #------------------------------------------------------------------------------- return ERROR | @Trigger_Error('[HTTP_Send]: не удалось соединиться с удаленным хостом'); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- # added by lissyara, 2012-01-04 in 08:42:54 MSK, for JBS-130 Stream_Set_TimeOut($Socket, $Config['Other']['Libs']['HTTP']['StreamTimeout']); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Charset = $Default['Charset']; #------------------------------------------------------------------------------- $Method = Count($Post) > 0 ? 'POST' : 'GET'; #------------------------------------------------------------------------------- $Hidden = $Default['Hidden']; #------------------------------------------------------------------------------- if (Count($Get)) { $Target .= SPrintF('?%s', HTTP_Query($Get, $Charset, $Hidden, $IsLogging)); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Headers[] = SPrintF('%s %s HTTP/1.0', $Method, $Target); #------------------------------------------------------------------------------- $Headers[] = SPrintF('Host: %s', $Default['Host']); #------------------------------------------------------------------------------- $Headers[] = 'Connection: close'; #------------------------------------------------------------------------------- $Headers = Array_Merge($Headers, $Addins); #------------------------------------------------------------------------------- if ($Basic = $Default['Basic']) { #------------------------------------------------------------------------------- $Basic = Base64_Encode($Basic); #------------------------------------------------------------------------------- $Headers[] = SPrintF('Authorization: Basic %s', $Basic); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $Body = ''; #------------------------------------------------------------------------------- if ($Post) { #------------------------------------------------------------------------------- if (Is_Array($Post)) { #------------------------------------------------------------------------------- if (Count($Post) > 0) { #------------------------------------------------------------------------------- $Headers[] = 'Content-Type: application/x-www-form-urlencoded'; #------------------------------------------------------------------------------- $Body = HTTP_Query($Post, $Charset, $Hidden, $IsLogging); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Body = Mb_Convert_Encoding($Post, $Charset); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if ($Length = MB_StrLen($Body, 'ASCII')) { $Headers[] = SPrintF('Content-Length: %u', $Length); } #------------------------------------------------------------------------------- $Query = SPrintF("%s\r\n\r\n%s", Implode("\r\n", $Headers), $Body); #------------------------------------------------------------------------------- Debug(SPrintF("[HTTP_Send]: делаем запрос:\n%s", $Query)); #------------------------------------------------------------------------------- if (!@Fwrite($Socket, $Query)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать в сокет'); } #------------------------------------------------------------------------------- # added by lissyara, 2014-01-28 in 14:19:08 MSK, for JBS-130 Stream_Set_TimeOut($Socket, $Config['Other']['Libs']['HTTP']['StreamTimeout']); #------------------------------------------------------------------------------- $Receive = ''; #------------------------------------------------------------------------------- do { #------------------------------------------------------------------------------- $Bytes = @FGets($Socket); #------------------------------------------------------------------------------- $Receive .= $Bytes; #------------------------------------------------------------------------------- } while ($Bytes); #------------------------------------------------------------------------------- @Fclose($Socket); #------------------------------------------------------------------------------- if (Preg_Match('/Content-Type:[\\sa-zA-Z0-9\\/\\-\\;]+charset\\=([a-zA-Z0-9\\-]+)/i', $Receive, $Matches)) { #------------------------------------------------------------------------------- $Receive = Mb_Convert_Encoding($Receive, 'UTF-8', Next($Matches)); #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Receive = Mb_Convert_Encoding($Receive, 'UTF-8', $Default['Charset']); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- Debug(SPrintF("[HTTP_Send]: получили ответ:\n%s", $Receive)); #------------------------------------------------------------------------------- $Log = SPrintF("%s://%s:%u [%s]\n%s\n%s\n\n", $Protocol, $Address, $Port, Date('r'), $Query, $Receive); #------------------------------------------------------------------------------- if ($Hidden) { #------------------------------------------------------------------------------- if (!Is_Array($Hidden)) { $Hidden = array($Hidden); } #------------------------------------------------------------------------------- foreach ($Hidden as $Pattern) { #------------------------------------------------------------------------------- $Pattern = UrlEncode(Mb_Convert_Encoding($Pattern, $Charset)); #------------------------------------------------------------------------------- $Log = Str_Replace($Pattern, SPrintF('[HIDDEN=(%u)]', StrLen($Pattern)), $Log); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if ($Default['IsLogging']) { #------------------------------------------------------------------------------- $IsWrite = IO_Write(SPrintF('%s/logs/http-send.log', $Tmp), $Log); if (Is_Error($IsWrite)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать данные в лог файл'); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Heads = $Body = array(); #------------------------------------------------------------------------------- foreach (Explode("\r\n\r\n", $Receive) as $Chunk) { #------------------------------------------------------------------------------- if (Preg_Match('#^HTTP/1\\.*#', $Chunk)) { #------------------------------------------------------------------------------- $Heads[] = $Chunk; #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Body[] = $Chunk; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if (SizeOf($Body) < 1) { return ERROR | @Trigger_Error('[HTTP_Send]: ответ от сервера не верен'); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- return array('Heads' => Implode("\r\n\r\n", $Heads), 'Body' => Implode("\r\n\r\n", $Body)); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #$Receive = Preg_Split('/\r\n\r\n/',$Receive,PREG_SPLIT_DELIM_CAPTURE); #------------------------------------------------------------------------------- #if(Count($Receive) < 2) # return ERROR | @Trigger_Error('[HTTP_Send]: ответ от сервера не верен'); #------------------------------------------------------------------------------- #$Receive = Array_Combine(Array('Heads','Body'),$Receive); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #return $Receive; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- }
function AddConnection() { if (Is_Resource($sock = stream_socket_accept($this->sockServer, 0, $ip))) { $this->lastClientId++; $id = $this->lastClientId; $this->WriteToLog("Client connected (" . $id . ", " . $ip . ", " . $sock . ")", 5); stream_set_timeout($sock, 5); $this->arClients[$id] = new CSMTPConnection($id, $sock, $this); $this->arClients[$id]->ip = $ip; $this->arSockets[$id] = $sock; $this->conCount++; return true; } return false; }
function HTMLDoc_CreatePDF($ModeID, $HTML, $Prefix = '/') { /****************************************************************************/ $__args_types = array('string', 'string,object', 'string'); #----------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /****************************************************************************/ if (Is_Object($HTML)) { #--------------------------------------------------------------------------- $Tables = $HTML->GetByTagName('TABLE'); #--------------------------------------------------------------------------- for ($i = 0; $i < Count($Tables); $i++) { #------------------------------------------------------------------------- $Table =& $Tables[$i]; #------------------------------------------------------------------------- switch (@$Table->Attribs['class']) { case 'Standard': $Table->AddAttribs(array('border' => 2, 'cellspacing' => 0, 'cellpadding' => 5), TRUE); break; default: # No more... } } #--------------------------------------------------------------------------- $Tds = $HTML->GetByTagName('TD'); #--------------------------------------------------------------------------- for ($i = 0; $i < Count($Tds); $i++) { #------------------------------------------------------------------------- $Td =& $Tds[$i]; #------------------------------------------------------------------------- switch (@$Td->Attribs['class']) { case 'Head': $Td->AddAttribs(array('bgcolor' => '#ADC1F0'), TRUE); break; case 'Separator': $Td->AddAttribs(array('bgcolor' => '#EAEAEA'), TRUE); break; default: # No more... } } #--------------------------------------------------------------------------- $Imgs = $HTML->GetByTagName('IMG'); #--------------------------------------------------------------------------- for ($i = 0; $i < Count($Imgs); $i++) { #------------------------------------------------------------------------- $Img =& $Imgs[$i]; #------------------------------------------------------------------------- $Img->AddAttribs(array('src' => SPrintF('%s/%s', $Prefix, $Img->Attribs['src'])), TRUE); } #--------------------------------------------------------------------------- $HTML = $HTML->Build(); } #----------------------------------------------------------------------------- $Config = Config(); #----------------------------------------------------------------------------- $Settings = $Config['HTMLDOC']; #----------------------------------------------------------------------------- $Modes = $Settings['Modes']; #----------------------------------------------------------------------------- $Mode = isset($Modes[$ModeID]) ? $Modes[$ModeID] : $ModeID; #----------------------------------------------------------------------------- $Tmp = System_Element('tmp'); if (Is_Error($Tmp)) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: временная папка не найдена'); } #----------------------------------------------------------------------------- $Logs = SPrintF('%s/logs', $Tmp); #----------------------------------------------------------------------------- if (!File_Exists($Logs)) { #--------------------------------------------------------------------------- if (!@MkDir($Logs, 0777, TRUE)) { return ERROR | @Trigger_Error(500); } } #----------------------------------------------------------------------------- $HTML = @Mb_Convert_Encoding($HTML, $Settings['ConvertToCharset']); if (!$HTML) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: не удалось преобразовать кодировку'); } #----------------------------------------------------------------------------- $UniqID = UniqID('HTMLDOC'); #----------------------------------------------------------------------------- $File = IO_Write($Path = SPrintF('%s/%s', $Tmp, $UniqID), $HTML); Debug($File); if (Is_Error($File)) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: не удалось создать временный файл'); } #----------------------------------------------------------------------------- $Command = SPrintF('htmldoc %s %s', $Mode, $Path); #----------------------------------------------------------------------------- Debug($Command); #----------------------------------------------------------------------------- if (!PutENV('HTMLDOC_NOCGI=1')) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: не удалось установить переменную окружения HTMLDOC_NOCGI'); } #----------------------------------------------------------------------------- $HTMLDOC = @Proc_Open($Command, array(array('pipe', 'r'), array('pipe', 'w'), array('file', $Log = SPrintF('%s/HTMLDOC.log', $Logs), 'a')), $Pipes); if (!Is_Resource($HTMLDOC)) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: не удалось открыть процесс'); } #----------------------------------------------------------------------------- $StdOut =& $Pipes[1]; #----------------------------------------------------------------------------- $Result = ''; #----------------------------------------------------------------------------- while (!Feof($StdOut)) { $Result .= FRead($StdOut, 1024); } #----------------------------------------------------------------------------- Proc_Close($HTMLDOC); #----------------------------------------------------------------------------- if (!UnLink($Path)) { return ERROR | @Trigger_Error('[HTMLDoc_CreatePDF]: не удалось удалить временный файл'); } #----------------------------------------------------------------------------- if (!$Result) { return ERROR | @Trigger_Error(SPrintF('[HTMLDoc_CreatePDF]: ошибка формирования PDF, смотрите (%s)', $Log)); } #----------------------------------------------------------------------------- return $Result; }
static function Result($Resourse) { #------------------------------------------------------------------------------- if (!Is_Resource($Resourse)) { return ERROR | @Trigger_Error('[MySQL->Result]: параметр не является ресурсом'); } #------------------------------------------------------------------------------- $Result = array(); #------------------------------------------------------------------------------- while ($Row = Mysql_Fetch_Assoc($Resourse)) { $Result[] = $Row; } #------------------------------------------------------------------------------- return $Result; #------------------------------------------------------------------------------- }
$Socket = @FsockOpen($Server['Address'], $Port, $nError, $sError, $Settings['SocketTimeout']); #------------------------------------------------------------------------------- if (!Is_Resource($Socket)) { #------------------------------------------------------------------------------- #Debug(SPrintF('[comp/Tasks/ServersUpTime]: cannot connect %s:%u with error: %s (%s)',$Server['Address'],$Port,$sError,$nError)); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $IPage = array('TestDate' => Time(), 'ServerID' => $Server['ID'], 'Service' => Trim($ServiceName), 'UpTime' => Is_Resource($Socket) ? 100 : 0, 'Day' => Date('d'), 'Month' => Date('m'), 'Year' => Date('Y')); #------------------------------------------------------------------------------- $IsInsert = DB_Insert('ServersUpTime', $IPage); if (Is_Error($IsInsert)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- if (Is_Resource($Socket)) { FClose($Socket); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- # рассчиытваем значение IsOK $UpTimes = DB_Select('ServersUpTime', array('(SUM(`UpTime`*`Count`)/SUM(`Count`)) as `UpTime`'), array('UNIQ', 'Where' => SPrintF('`TestDate` > UNIX_TIMESTAMP() - %u * 24 * 60 *60 AND `ServerID` = %u', $Settings['DaysAgregate'] ? $Settings['DaysAgregate'] : 1, $Server['ID']))); switch (ValueOf($Server)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return ERROR | @Trigger_Error(400); case 'array': break; default:
return ERROR | @Trigger_Error(500); } #----------------------------------------------------------------- $UniqID = UniqID('ImageMagick'); #----------------------------------------------------------------- $File = IO_Write($PDF = SPrintF('%s/%s.pdf', $Tmp, $UniqID), $File); if (Is_Error($File)) { return ERROR | @Trigger_Error(500); } #----------------------------------------------------------------- $Command = SPrintF('convert -density 120 -compress group4 %s %s', $PDF, $Tiff = SPrintF('%s/%s.tiff', $Tmp, $UniqID)); #----------------------------------------------------------------- Debug($Command); #----------------------------------------------------------------- $ImageMagick = @Proc_Open($Command, array(array('pipe', 'r'), array('pipe', 'w'), array('file', SPrintF('%s/logs/ImageMagic.log', $Tmp), 'a')), $Pipes); if (!Is_Resource($ImageMagick)) { return ERROR | @Trigger_Error(500); } #----------------------------------------------------------------- Proc_Close($ImageMagick); #----------------------------------------------------------------- UnLink($PDF); #----------------------------------------------------------------- $File = IO_Read($Tiff); if (Is_Error($File)) { return ERROR | @Trigger_Error(500); } #----------------------------------------------------------------- UnLink($Tiff); #----------------------------------------------------------------- $Extension = 'tiff';
#--------------------------------------------------------------------- break; } else { #--------------------------------------------------------------------- if ($ClientID == Count($Clients) - 1) { Debug('[Debugger]: слишком много подключений'); } } } } #--------------------------------------------------------------------------- for ($ClientID = 0; $ClientID < Count($Clients); $ClientID++) { #------------------------------------------------------------------------- $Client =& $Clients[$ClientID]; #------------------------------------------------------------------------- if (!Is_Resource($Client->Stream)) { continue; } #------------------------------------------------------------------------- if (In_Array($Client->Stream, $Read)) { #----------------------------------------------------------------------- $Input = @Socket_Read($Client->Stream, 64); #----------------------------------------------------------------------- if (!$Input) { #--------------------------------------------------------------------- $Client->Disconnect(); #--------------------------------------------------------------------- Debug('[Debugger]: соединение закрыто'); } else { echo $Input; }
function Image_Get_Size($Source) { /****************************************************************************/ $__args_types = array('string'); #----------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /****************************************************************************/ if (!Function_Exists('ImageCreateFromString')) { return ERROR | Trigger_Error('[Image_Get_Size]: модуль работы с изображениями не установлен'); } #----------------------------------------------------------------------------- $Real = @ImageCreateFromString($Source); if (!Is_Resource($Real)) { return ERROR | @Trigger_Error("[Image_Get_Size]: не возможно создать изображение"); } #----------------------------------------------------------------------------- $Sx = @ImageSx($Real); if (!$Sx) { return ERROR | @Trigger_Error("[Image_Get_Size]: не возможно получить ширину изображения"); } #----------------------------------------------------------------------------- $Sy = @ImageSy($Real); if (!$Sy) { return ERROR | @Trigger_Error("[Image_Get_Size]: не возможно получить высоту изображения"); } #----------------------------------------------------------------------------- return array('Width' => $Sx, 'Height' => $Sy); }