Вход Регистрация
Файл: includes/upload_file_from_email.php
Строк: 114
<?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$iFT_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$jFT_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 ($fpimplode("",$upload_email));
    
fclose ($fp);
    }
#exit;}
?>
Онлайн: 0
Реклама