Размер файла: 8.62Kb
- <?php
- #if ($user=='test') {header("Content-Type: text/plain");
-
- $upload_email=@file('/home/kmx/www/sites/upload_email.dat');
-
- # Время поледней проверки ящика
- if ($upload_email[0]<(time()-300))
- if ($mbox=imap_open("{pop.mail.ru/pop3:110}INBOX","kmxupload","kmx-hosting"))
- {
- $num = imap_num_msg($mbox);
- # print "============== ВСЕГО: $num писем. =================";
- for( $i=1; $i<=$num; $i++ )
- {
- $header = imap_fetchheader( $mbox, $i, FT_PREFETCHTEXT);
- $header2 = imap_fetch_overview( $mbox, $i);
- $param=get_object_vars($header2[0]);
- $struct=imap_fetchstructure( $mbox, $i);
- $struct=get_object_vars($struct);
-
- $subj=$param['subject'];
- $subj=imap_mime_header_decode($subj);
- $subj=get_object_vars($subj[0]);
- $subj=$subj['text'];
-
- # print "\n==[$i]=========================\n";
- print_r($struct);
- # print "\n==[$i]------------------------=\n";
- $parameter=$struct['parameters'];
- $parts=$struct['parts']; //массив частей в виде объектов
- $count_parts=sizeof($struct['parts']);
-
- if ($count_parts<=1)
- {
- $count_parts=1;
- $encoding[0]=$struct['encoding'];
- $subtype[0]=$struct['subtype'];
- $type[0]=$struct['type'];
- $i_param_found=false;
-
- if ($part['ifparameters'])
- {
- $parameter_a=$part['parameters'];
- for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
- {
- $parameter=get_object_vars($parameter_a[$i_param]);
- $atrib[$j-1]=$parameter['attribute'];
- $value[$j-1]=$parameter['value'];
- if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
- }
- }
-
- if ($part['ifdparameters'] && !$i_param_found)
- {
- $parameter_a=$part['dparameters'];
- for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
- {
- $parameter=get_object_vars($parameter_a[$i_param]);
- $atrib[$j-1]=$parameter['attribute'];
- $value[$j-1]=$parameter['value'];
- if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
- }
- }
- }
-
- if ($count_parts>1)
- {
- for ($j=1;$j<=$count_parts;$j++)
- {
- $part=get_object_vars($parts[$j-1]);
- $encoding[$j-1]=$part['encoding'];
- $subtype[$j-1]=$part['subtype'];
- $type[$j-1]=$part['type'];
- $i_param_found=false;
-
- if ($part['ifparameters'])
- {
- $parameter_a=$part['parameters'];
- for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
- {
- $parameter=get_object_vars($parameter_a[$i_param]);
- $atrib[$j-1]=$parameter['attribute'];
- $value[$j-1]=$parameter['value'];
- if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
- }
- }
-
- if ($part['ifdparameters'] && !$i_param_found)
- {
- $parameter_a=$part['dparameters'];
- for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
- {
- $parameter=get_object_vars($parameter_a[$i_param]);
- $atrib[$j-1]=$parameter['attribute'];
- $value[$j-1]=$parameter['value'];
- if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
- }
- }
-
- $bp=imap_fetchbody( $mbox, $i, $j, FT_PEEK);
- $body[$j-1]=$bp;
- }
- }
-
- unset($files);
- $text='-'.$subj;
-
- for ($j=0;$j<$count_parts;$j++)
- {
- if ($type[$j]==6) $type[$j]='VIDEO';
- elseif ($type[$j]==5) $type[$j]='IMAGE';
- elseif ($type[$j]==4) $type[$j]='AUDIO';
- elseif ($type[$j]==0) $type[$j]='TEXT';
- else $type[$j]='#'.$type[$j];
-
- $value[$j]=strl($value[$j]);
-
- # print "------------------------------\n";
- # print "Тип: ".$type[$j]."\n";
- # print "Подтип: ".$subtype[$j]."\n";
- # print "Кодировка: ".$encoding[$j]."\n";
- # print "Атрибут: ".$atrib[$j]."\n";
- # print "Значение: ".$value[$j]."\n";
- # print "Тело:\n".substr($body[$j],0,128)."\n";
-
- /**/
- if (($type[$j]==0)&&(($subtype[$j]=='PLAIN')||($subtype[$j]=='HTML')))
- {
- $text.=$body[$j];
- if ($encoding[$j]==3) $text.=base64_decode($body[$j]);
- }
- else
- {
- # print "[ATR:".$atrib[$j]."]";
- if (($atrib[$j]=='NAME')||($atrib[$j]=='FILENAME'))
- {
- # print "[FN:".$value[$j]."]";
- $fname=explode('.',strtolower($value[$j]));
- $name=$fname[0];
- $ext=$fname[1];
- # определяем правильность имени
- $chekname=(strlen(trim(strtr(str_replace(' ','*',$name),'-_()0123456789abcdefghjiklmnopqrstuvwxyz',' ')))==0);
- # если правильное имя
- if ($chekname)
- # если допустимое расширение
- if (($ext=='jpg')||
- ($ext=='mid')||
- ($ext=='3gp')||
- ($ext=='mmf')||
- ($ext=='gif')||
- ($ext=='mp3')||
- ($ext=='wav')||
- ($ext=='png')||
- ($ext=='jar')||
- ($ext=='jad')||
- ($ext=='thm')||
- ($ext=='mpn')||
- ($ext=='amr')||
- ($ext=='sis')||
- ($ext=='scs')||
- ($ext=='col')||
- ($ext=='wbmp'))
- {
- if ($encoding[$j]==3)
- {
- $_file['name']=$name.'.'.$ext;
- $_file['body']=base64_decode($body[$j]);
- $_file['size']=strlen($_file['body']);
- # если размер файла меньше 256kb
- if ($_file['size']<=262144) $files[]=$_file;
- }
- }
- }
- }
- }
-
- # print "\n-----";
- # print "\n[TEXT:".$text."]";
- # print "\n[FILES:".sizeof($files)."]";
-
- if (strpos($text,'(key:'))
- {
- $code1=explode('(key:',$text);
- $code2=explode(')',$code1[1]);
- $_key=$code2[0];
- # print "\n[CODE:$_key]";
- $q=@mysql(DBName,"SELECT `domain` , `login` FROM `users` WHERE `key` = '".addslashes($_key)."' LIMIT 0, 1");
- $data=@mysql_fetch_array($q);
- $_user=$data['login'];
- $_domain=$data['domain'];
- # print "\n[USER:$_user - $_domain]";
- if ($_user!='')
- {
- $uploadsitespath='/home/kmx/www/sites/'.$_domain.'/'.$_user;
- $_diskspace=@file($uploadsitespath.'/diskspace.dat');
- $limit=$_diskspace[2];
- for ($fi=0;$fi<sizeof($files);$fi++)
- {
- if ($files[$fi]['size']<=$limit)
- {
- # print "\n[FN:".$files[$fi]['name']."]";
- if (!is_dir($uploadsitespath.'/_UPLOAD_')) {@mkdir($uploadsitespath.'/_UPLOAD_');@chmod($uploadsitespath.'/_UPLOAD_',0777);}
- $fp = @fopen ($uploadsitespath.'/_UPLOAD_/'.$files[$fi]['name'], "w+");
- @fwrite ($fp, $files[$fi]['body']);
- @fclose ($fp);
- $limit=$limit-$files[$fi]['size'];
- }
- }
- $_diskspace[0]=$_diskspace[0]+0;
- $_diskspace[1]=dir_size($uploadsitespath);
- $_diskspace[2]=$_diskspace[0]-$_diskspace[1];
-
- $fp = fopen ($uploadsitespath.'/diskspace.dat', "w+");
- fwrite ($fp, $_diskspace[0]."\n".$_diskspace[1]."\n".$_diskspace[2]);
- fclose ($fp);
- }
- }
- imap_delete( $mbox, $i ); //Удаление письма
- }
- # print "\n==[END]=======================\n";
- imap_expunge($mbox);
- imap_close($mbox);
- print_r(imap_errors());
-
- $upload_email[0]=time()."\n";
- $fp = fopen ('/home/kmx/www/sites/upload_email.dat', "w+");
- fwrite ($fp, implode("",$upload_email));
- fclose ($fp);
- }
- #exit;}
- ?>