Просмотр файла includes/upload_file_from_email.php

Размер файла: 8.62Kb
  1. <?php
  2. #if ($user=='test') {header("Content-Type: text/plain");
  3.  
  4. $upload_email=@file('/home/kmx/www/sites/upload_email.dat');
  5.  
  6. # Время поледней проверки ящика
  7. if ($upload_email[0]<(time()-300))
  8. if ($mbox=imap_open("{pop.mail.ru/pop3:110}INBOX","kmxupload","kmx-hosting"))
  9. {
  10. $num = imap_num_msg($mbox);
  11. # print "============== ВСЕГО: $num писем. =================";
  12. for( $i=1; $i<=$num; $i++ )
  13. {
  14. $header = imap_fetchheader( $mbox, $i, FT_PREFETCHTEXT);
  15. $header2 = imap_fetch_overview( $mbox, $i);
  16. $param=get_object_vars($header2[0]);
  17. $struct=imap_fetchstructure( $mbox, $i);
  18. $struct=get_object_vars($struct);
  19.  
  20. $subj=$param['subject'];
  21. $subj=imap_mime_header_decode($subj);
  22. $subj=get_object_vars($subj[0]);
  23. $subj=$subj['text'];
  24.  
  25. # print "\n==[$i]=========================\n";
  26. print_r($struct);
  27. # print "\n==[$i]------------------------=\n";
  28. $parameter=$struct['parameters'];
  29. $parts=$struct['parts']; //массив частей в виде объектов
  30. $count_parts=sizeof($struct['parts']);
  31.  
  32. if ($count_parts<=1)
  33. {
  34. $count_parts=1;
  35. $encoding[0]=$struct['encoding'];
  36. $subtype[0]=$struct['subtype'];
  37. $type[0]=$struct['type'];
  38. $i_param_found=false;
  39.  
  40. if ($part['ifparameters'])
  41. {
  42. $parameter_a=$part['parameters'];
  43. for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
  44. {
  45. $parameter=get_object_vars($parameter_a[$i_param]);
  46. $atrib[$j-1]=$parameter['attribute'];
  47. $value[$j-1]=$parameter['value'];
  48. if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
  49. }
  50. }
  51.  
  52. if ($part['ifdparameters'] && !$i_param_found)
  53. {
  54. $parameter_a=$part['dparameters'];
  55. for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
  56. {
  57. $parameter=get_object_vars($parameter_a[$i_param]);
  58. $atrib[$j-1]=$parameter['attribute'];
  59. $value[$j-1]=$parameter['value'];
  60. if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
  61. }
  62. }
  63. }
  64.  
  65. if ($count_parts>1)
  66. {
  67. for ($j=1;$j<=$count_parts;$j++)
  68. {
  69. $part=get_object_vars($parts[$j-1]);
  70. $encoding[$j-1]=$part['encoding'];
  71. $subtype[$j-1]=$part['subtype'];
  72. $type[$j-1]=$part['type'];
  73. $i_param_found=false;
  74.  
  75. if ($part['ifparameters'])
  76. {
  77. $parameter_a=$part['parameters'];
  78. for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
  79. {
  80. $parameter=get_object_vars($parameter_a[$i_param]);
  81. $atrib[$j-1]=$parameter['attribute'];
  82. $value[$j-1]=$parameter['value'];
  83. if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
  84. }
  85. }
  86.  
  87. if ($part['ifdparameters'] && !$i_param_found)
  88. {
  89. $parameter_a=$part['dparameters'];
  90. for ($i_param=0;(($i_param<sizeof($parameter_a)) && !$i_param_found);$i_param++)
  91. {
  92. $parameter=get_object_vars($parameter_a[$i_param]);
  93. $atrib[$j-1]=$parameter['attribute'];
  94. $value[$j-1]=$parameter['value'];
  95. if (($atrib[$j-1]=='NAME')||($atrib[$j-1]=='FILENAME')) $i_param_found=true;
  96. }
  97. }
  98.  
  99. $bp=imap_fetchbody( $mbox, $i, $j, FT_PEEK);
  100. $body[$j-1]=$bp;
  101. }
  102. }
  103.  
  104. unset($files);
  105. $text='-'.$subj;
  106.  
  107. for ($j=0;$j<$count_parts;$j++)
  108. {
  109. if ($type[$j]==6) $type[$j]='VIDEO';
  110. elseif ($type[$j]==5) $type[$j]='IMAGE';
  111. elseif ($type[$j]==4) $type[$j]='AUDIO';
  112. elseif ($type[$j]==0) $type[$j]='TEXT';
  113. else $type[$j]='#'.$type[$j];
  114.  
  115. $value[$j]=strl($value[$j]);
  116.  
  117. # print "------------------------------\n";
  118. # print "Тип: ".$type[$j]."\n";
  119. # print "Подтип: ".$subtype[$j]."\n";
  120. # print "Кодировка: ".$encoding[$j]."\n";
  121. # print "Атрибут: ".$atrib[$j]."\n";
  122. # print "Значение: ".$value[$j]."\n";
  123. # print "Тело:\n".substr($body[$j],0,128)."\n";
  124.  
  125. /**/
  126. if (($type[$j]==0)&&(($subtype[$j]=='PLAIN')||($subtype[$j]=='HTML')))
  127. {
  128. $text.=$body[$j];
  129. if ($encoding[$j]==3) $text.=base64_decode($body[$j]);
  130. }
  131. else
  132. {
  133. # print "[ATR:".$atrib[$j]."]";
  134. if (($atrib[$j]=='NAME')||($atrib[$j]=='FILENAME'))
  135. {
  136. # print "[FN:".$value[$j]."]";
  137. $fname=explode('.',strtolower($value[$j]));
  138. $name=$fname[0];
  139. $ext=$fname[1];
  140. # определяем правильность имени
  141. $chekname=(strlen(trim(strtr(str_replace(' ','*',$name),'-_()0123456789abcdefghjiklmnopqrstuvwxyz',' ')))==0);
  142. # если правильное имя
  143. if ($chekname)
  144. # если допустимое расширение
  145. if (($ext=='jpg')||
  146. ($ext=='mid')||
  147. ($ext=='3gp')||
  148. ($ext=='mmf')||
  149. ($ext=='gif')||
  150. ($ext=='mp3')||
  151. ($ext=='wav')||
  152. ($ext=='png')||
  153. ($ext=='jar')||
  154. ($ext=='jad')||
  155. ($ext=='thm')||
  156. ($ext=='mpn')||
  157. ($ext=='amr')||
  158. ($ext=='sis')||
  159. ($ext=='scs')||
  160. ($ext=='col')||
  161. ($ext=='wbmp'))
  162. {
  163. if ($encoding[$j]==3)
  164. {
  165. $_file['name']=$name.'.'.$ext;
  166. $_file['body']=base64_decode($body[$j]);
  167. $_file['size']=strlen($_file['body']);
  168. # если размер файла меньше 256kb
  169. if ($_file['size']<=262144) $files[]=$_file;
  170. }
  171. }
  172. }
  173. }
  174. }
  175.  
  176. # print "\n-----";
  177. # print "\n[TEXT:".$text."]";
  178. # print "\n[FILES:".sizeof($files)."]";
  179.  
  180. if (strpos($text,'(key:'))
  181. {
  182. $code1=explode('(key:',$text);
  183. $code2=explode(')',$code1[1]);
  184. $_key=$code2[0];
  185. # print "\n[CODE:$_key]";
  186. $q=@mysql(DBName,"SELECT `domain` , `login` FROM `users` WHERE `key` = '".addslashes($_key)."' LIMIT 0, 1");
  187. $data=@mysql_fetch_array($q);
  188. $_user=$data['login'];
  189. $_domain=$data['domain'];
  190. # print "\n[USER:$_user - $_domain]";
  191. if ($_user!='')
  192. {
  193. $uploadsitespath='/home/kmx/www/sites/'.$_domain.'/'.$_user;
  194. $_diskspace=@file($uploadsitespath.'/diskspace.dat');
  195. $limit=$_diskspace[2];
  196. for ($fi=0;$fi<sizeof($files);$fi++)
  197. {
  198. if ($files[$fi]['size']<=$limit)
  199. {
  200. # print "\n[FN:".$files[$fi]['name']."]";
  201. if (!is_dir($uploadsitespath.'/_UPLOAD_')) {@mkdir($uploadsitespath.'/_UPLOAD_');@chmod($uploadsitespath.'/_UPLOAD_',0777);}
  202. $fp = @fopen ($uploadsitespath.'/_UPLOAD_/'.$files[$fi]['name'], "w+");
  203. @fwrite ($fp, $files[$fi]['body']);
  204. @fclose ($fp);
  205. $limit=$limit-$files[$fi]['size'];
  206. }
  207. }
  208. $_diskspace[0]=$_diskspace[0]+0;
  209. $_diskspace[1]=dir_size($uploadsitespath);
  210. $_diskspace[2]=$_diskspace[0]-$_diskspace[1];
  211.  
  212. $fp = fopen ($uploadsitespath.'/diskspace.dat', "w+");
  213. fwrite ($fp, $_diskspace[0]."\n".$_diskspace[1]."\n".$_diskspace[2]);
  214. fclose ($fp);
  215. }
  216. }
  217. imap_delete( $mbox, $i ); //Удаление письма
  218. }
  219. # print "\n==[END]=======================\n";
  220. imap_expunge($mbox);
  221. imap_close($mbox);
  222. print_r(imap_errors());
  223.  
  224. $upload_email[0]=time()."\n";
  225. $fp = fopen ('/home/kmx/www/sites/upload_email.dat', "w+");
  226. fwrite ($fp, implode("",$upload_email));
  227. fclose ($fp);
  228. }
  229. #exit;}
  230. ?>