//------------------------------------------------------------ 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; } //---------------------------------- //******************************************************************************