//------------------------------------------------------------
function MyMd5($String)
{
$String.=strlen($String);
$String.=md5($String);
$String.=strlen($String);
return md5($String);
}
//------------------------------------------------------------
//------------------------------------------------------------
//функция делающая обратное преобразование строки из урл текста в обычный формат
function mydecodeurl($Text)
{
$result='';
$Mass=explode('z',$Text);
// т.к. первый элемент в строке и есть разделитель то
// первый элемент в массиве пустой и начинаем считать с 1
for ($i=1;$i<count($Mass);$i++)
{
$result.=chr(hexdec($Mass[$i]));
}
return $result;
}
//------------------------------------------------------------
function myDecodeurl($Text)
{
/*
функция делающая обратное преобразование строки из урл текста в обычный формат
*/
$result='';
$Mass=explode('z',$Text);
// т.к. первый элемент в строке и есть разделитель то
// первый элемент в массиве пустой и начинаем считать с 1
for ($i=1;$i<count($Mass);$i++)
{
$result.=chr(hexdec($Mass[$i]));
}
return $result;
}
function giveImageLatex($LatexText)
{
$Hash=MyMd5($LatexText);
$CodeUrl= myCodeurl($LatexText);
return "<dl><dd><img src='http://integraloff.net/latex/index.php?f=$CodeUrl&h=$Hash' ></dd></dl>";
}
function MyMd5($String)
{
$String.=strlen($String);
$String.=md5($String);
$String.=strlen($String);
return md5($String);
}
function myCodeurl($Text)
{
/*
функция делающая преобразование строки для того чтобы ее
можно было передать в урл строке
*/
$result='';
for ($i=0;$i<strlen($Text);$i++)
{
$ASC=ord($Text[$i]); // получили ацки код символа в 10
$r1=floor($ASC/16); // старший hex разряд
$r0=$ASC-16*$r1; // младший hex разряд
$result.="z".dechex($r1).dechex($r0);
}
return $result;
}
function GetFromSpecTag2($Text,$Tag)
{
// вырезаем текс из спец тегов - нужно чтобы теги встречались всего один раз!!!
$TagStart="<$Tag>";
$TagEnd="</$Tag>";
$s='';
$start=strpos($Text,$TagStart)+strlen($TagStart);
$end=strpos($Text,$TagEnd,$start)-1;
//echo $start.'<br>';
//echo $end.'<br>';
for ($i=$start;$i<=$end;$i++)
{
$s.=$Text[$i] ;
}
return $s;
}
//*******************************************
function DataOut($data)
{
echo iconv('cp1251','UTF-8', $data);
}
//*******************************************
//*******************************************
// do check /* valid*/ access key
function checkAccessKey ($key)
{
// curl to AntiSpam Server
$StringRequest='check_access_key='.$key;
$url = "http://127.0.0.1/?$StringRequest";
//$url = "http://192.168.0.95/?$StringRequest";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // times out after 4s
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 4.6 (build 01425); .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_PORT, 8080);
// !!
//curl_setopt($ch, CURLOPT_POSTFIELDS, "Arg1=0&Arg2=$FuncMod&Arg3=$Arg"); // add POST fields
//curl_setopt($ch, CURLOPT_POSTFIELDS, $StringRequest); // add POST fields
$result = curl_exec($ch); // run the whole process
//echo curl_error($ch);
curl_close($ch);
//echo "key result:".$result;
if (GetFromSpecTag2($result,'result')=='true')
{
return true;
}
else
{
return false;
}
//return $result;
}
//*******************************************
//*******************************************
function DoCommand_mathW ($Command)
{
$url = "http://192.168.0.231/mathW/index.php";
$StringRequest='comm='.myCodeurl($Command);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // times out after 4s
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 4.6 (build 01425); .NET CLR 1.1.4322)');
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
// !!
//curl_setopt($ch, CURLOPT_POSTFIELDS, "Arg1=0&Arg2=$FuncMod&Arg3=$Arg"); // add POST fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $StringRequest); // add POST fields
$result = curl_exec($ch); // run the whole process
curl_close($ch);
return $result;
}
//*******************************************
//*******************************************
//*******************************************
/**
* в $txt встерчаются пары <comm>...</com> <imag>...</img>
* надо:
* из <comm> вытащить текст и сделать обратное z-code
* из <img> вытащить текст и latex-img
*/
function GetMultiTag($str)
{
global $buff;
$commRecord=false;
$imgRecord=false;
$buff='000000'; // start value
$finalText='';
$len=strlen($str);
for ($i=0;$i<$len;$i++)
{
$chr=$str[$i];
$localBuff= BuffIn($chr);
//echo $localBuff.'<br>';
//**********************************************
if ($localBuff=='</com>')
{
// comm record stop
$commRecord=false;
// сейчас в $commTXT='....</com'
$commTXT=str_replace('</com','',$commTXT);
//$finalText.="undoComm(".$commTXT.')';
$finalText.= myDecodeurl($commTXT).chr(13).chr(10);
}
if ($commRecord)
{
$commTXT.=$chr;
}
if ($localBuff=='<comm>') // в буффере лежит открывающий тег '<comm>'
{
// comm record start
$commTXT='';
$commRecord=true;
}
//**********************************************
//**********************************************
if ($localBuff=='</img>')
{
// comm record stop
$imgRecord=false;
// сейчас в $imgTXT='....</img'
$imgTXT=str_replace('</img','',$imgTXT);
$finalText.= giveImageLatex($imgTXT).chr(13).chr(10);;
}
if ($imgRecord)
{
$imgTXT.=$chr;
}
if ($localBuff=='<imag>') // в буффере лежит открывающий тег '<comm>'
{
// comm record start
$imgTXT='';
$imgRecord=true;
}
//**********************************************
}
return $finalText;
}
//*******************************************
function BuffIn($chr)
{
// буффер-данных который анализируем
global $buff;
$buff[0]=$buff[1];
$buff[1]=$buff[2];
$buff[2]=$buff[3];
$buff[3]=$buff[4];
$buff[4]=$buff[5];
$buff[5]=$chr;
return $buff;
}
//*******************************************
//*******************************************
//-------------------------------------------------------
function MakeBakcLink($func)
{
$funcz=myCodeurl($func);
$hash=MyMd5($funcz);
return "f=$funcz&h=$hash";
}
//-------------------------------------------------------
//-------------------------------------------------------
class DataOut
{
var $result;
var $check_result;
var $content;
var $text_comment;
var $back_link;
function OutData()
{
$data=<<<AAAA
<result>$this->result</result>
<check_result>$this->check_result</check_result>
<content>$this->content</content>
<text_comment>$this->text_comment</text_comment>
<back_link>$this->back_link</back_link>
AAAA;
echo iconv('cp1251','UTF-8', $data);
}
}
//-------------------------------------------------------
//******************************************************************************
// делает шифрование текста
function myCodeKey($Text,$key)
{
//----------------------------------
$len=strlen($Text); // длина кодированного текста
//----------------------------------
$seq='';
$flag=true;
while ($flag or (strlen($seq)<$len))
{
$flag=false;
$seq.=md5(md5($key).'sequence') ;
}
//----------------------------------
$result='';
for ($i=0;$i<$len;$i++)
{
$ASC= ( ord($Text[$i]) ^ ord($seq[$i]) ); // делаем скремблирование, побитовый xor
$r1=floor($ASC/16); // старший hex разряд
$r0=$ASC-16*$r1; // младший hex разряд
$result.=dechex($r1).dechex($r0);
}
return 'H'.$result;
}
//******************************************************************************
//******************************************************************************
// делает распаковку закрытого текста
function myDecodeKey($HText,$key)
{
$lenOrigin=(strlen($HText)-1)/2;
//----------------------------------
$seq='';
while (strlen($seq)<$lenOrigin)
{
$seq.=md5(md5($key).'sequence') ;
}
//----------------------------------
$result='';
$len=strlen($HText);
for ($i=1; $i<$len;$i=$i+2)
{
$r1= hexdec($HText[$i]);
$r0= hexdec($HText[$i+1]);
$ASC=(($r1*16)+$r0) ^ ord($seq[($i-1)/2]);
$result.=chr($ASC);
}
return $result;
}
//----------------------------------
//******************************************************************************