whoami7 - Manager
:
/
usr
/
local
/
bin
/
Upload File:
files >> //usr/local/bin/parse-php-messages
#!/usr/local/bin/php <?php date_default_timezone_set('Asia/Kolkata'); ini_set('display_errors',1); $email_providers_arr=array(); function getRecipientsCount($recipients_arr){ global $email_providers_arr; $recipients=count($recipients_arr); for($i=0;$i<count($email_providers_arr);$i++){ ${$email_providers_arr[$i].'_recipients'}=0; } for($i=0;$i<count($recipients_arr);$i++){ for($j=0;$j<count($email_providers_arr);$j++){ if(preg_match('#.*@'.$email_providers_arr[$j].'.*#',$recipients_arr[$i])){ ${$email_providers_arr[$j].'_recipients'}++; break; } } } $ret_arr=array(); $ret_arr['recipients']=$recipients; for($i=0;$i<count($email_providers_arr);$i++){ $ret_arr[$email_providers_arr[$i].'_recipients']=${$email_providers_arr[$i].'_recipients'}; } return $ret_arr; } $lines=explode("\n",file_get_contents('/usr/local/bin/parse-php-messages.limits')); for($i=0;$i<count($lines);$i++) if(strlen(trim($lines[$i]))>0){ $prts=explode(',',trim($lines[$i])); $prts[0]=trim($prts[0]); $prts[1]=trim($prts[1]); $prts[2]=trim($prts[2]); if($prts[0]=='GLOBAL'){ $hourly_limit=$prts[1]; $daily_limit=$prts[2]; continue; } $email_providers_arr[]=$prts[0]; ${$prts[0].'_hourly_limit'}=$prts[1]; ${$prts[0].'_daily_limit'}=$prts[2]; } /* echo "\n".$hourly_limit.", ".$daily_limit."\n"; for($i=0;$i<count($email_providers_arr);$i++) echo "\n".$email_providers_arr[$i].",".${$email_providers_arr[$i].'_hourly_limit'}.",".${$email_providers_arr[$i].'_daily_limit'}; echo "\n"; exit(1); */ $subject=''; $from_header=''; $to_header=''; $cc_header=''; $bcc_header=''; $path=''; $cpuser=''; $content=''; while($f = fgets(STDIN)){ $line=$f; $content.=$f; $line=trim($line); if($line=='') break; if(preg_match('#^Subject:\s*(.*)$#i',$line,$matches)){ $subject=trim($matches[1]); } if(preg_match('#^From:\s*(.*)$#i',$line,$matches)){ $from_header=trim($matches[1]); } if(preg_match('#^To:\s*(.*)$#i',$line,$matches)){ $to_header=trim($matches[1]); } if(preg_match('#^Cc:\s*(.*)$#i',$line,$matches)){ $cc_header=trim($matches[1]); } if(preg_match('#^Bcc:\s*(.*)$#i',$line,$matches)){ $bcc_header=trim($matches[1]); } if(preg_match('#^X-Additional-Path-Header:\s*(.*)$#i',$line,$matches)){ $path=trim($matches[1]); } } $recipients=0; for($i=0;$i<count($email_providers_arr);$i++){ ${$email_providers_arr[$i].'_recipients'}=0; } $rec_header_types=array('to_header','cc_header','bcc_header'); for($i=0;$i<count($rec_header_types);$i++){ if(strlen(${$rec_header_types[$i]})>0){ $recipients_arr=explode(',',${$rec_header_types[$i]}); $arr=getRecipientsCount($recipients_arr); $recipients+=$arr['recipients']; for($j=0;$j<count($email_providers_arr);$j++){ ${$email_providers_arr[$j].'_recipients'}+=$arr[$email_providers_arr[$j].'_recipients']; } } } $path_parts=explode('/',$path); if(count($path_parts)>=2 && $path_parts[1]=='home'){ $cpuser=$path_parts[2]; }else{ exit(0); } $mysqli = new mysqli('localhost', 'sendmail_php', '@dettol2018', 'sendmail_php'); if ($mysqli->connect_errno) { echo 'Failed to connect to MySQL: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error; } $resultset=$mysqli->query("select * from cpuser_override where cpuser='".$mysqli->real_escape_string($cpuser)."'"); if($resultset->num_rows==1){ $row = $resultset->fetch_array(); $hourly_limit=$row['hourly_limit']; $daily_limit=$row['daily_limit']; for($i=0;$i<count($email_providers_arr);$i++){ ${$email_providers_arr[$i].'_hourly_limit'}=$row[$email_providers_arr[$i].'_hourly_limit']; ${$email_providers_arr[$i].'_daily_limit'}=$row[$email_providers_arr[$i].'_daily_limit']; } } $sub_field_parts=array();; for($i=0;$i<count($email_providers_arr);$i++){ $sub_field_parts[]='ifnull(sum('.$email_providers_arr[$i].'_recipients),0) as '.$email_providers_arr[$i].'_ct'; } $sub_field_query=implode(',',$sub_field_parts); $query="select ifnull(sum(total_recipients),0) as ct,".$sub_field_query." from sendlog where cpuser='".$mysqli->real_escape_string($cpuser)."' and dated>='".date("Y-m-d H:00:00")."'"; //echo $query; //exit(1); $resultset_hourly=$mysqli->query($query); $row = $resultset_hourly->fetch_array(); $hourly_count=$row["ct"]; for($i=0;$i<count($email_providers_arr);$i++){ ${'hourly_'.$email_providers_arr[$i].'_count'}=$row[$email_providers_arr[$i].'_ct']; } $query="select ifnull(sum(total_recipients),0) as ct,".$sub_field_query." from sendlog where cpuser='".$mysqli->real_escape_string($cpuser)."' and dated>='".date("Y-m-d 00:00:00")."'"; $resultset_daily=$mysqli->query($query); $row = $resultset_daily->fetch_array(); $daily_count=$row["ct"]; for($i=0;$i<count($email_providers_arr);$i++){ ${'daily_'.$email_providers_arr[$i].'_count'}=$row[$email_providers_arr[$i].'_ct']; } //echo "Hourly Count: $hourly_count\nDaily Limit: $daily_count\n"; $ep_limit_breached=false; for($i=0;$i<count($email_providers_arr);$i++){ if( (${'daily_'.$email_providers_arr[$i].'_count'}+${$email_providers_arr[$i].'_recipients'})>${$email_providers_arr[$i].'_daily_limit'} || (${'hourly_'.$email_providers_arr[$i].'_count'}+${$email_providers_arr[$i].'_recipients'})>${$email_providers_arr[$i].'_hourly_limit'} ){ $ep_limit_breached=true; break; } } if(!$ep_limit_breached && ($hourly_count+$recipients)<=$hourly_limit && ($daily_count+$recipients)<=$daily_limit){ $sub_query_parts=array(); for($i=0;$i<count($email_providers_arr);$i++){ $sub_query_parts[]=$email_providers_arr[$i]."_recipients='".$mysqli->real_escape_string(${$email_providers_arr[$i]."_recipients"})."'"; } $sub_query=implode(',',$sub_query_parts); $query="insert into sendlog set cpuser='".$mysqli->real_escape_string($cpuser)."', from_header='".$mysqli->real_escape_string($from_header)."', to_header='".$mysqli->real_escape_string($to_header)."', cc_header='".$mysqli->real_escape_string($cc_header)."', bcc_header='".$mysqli->real_escape_string($bcc_header)."', subject='".$mysqli->real_escape_string($subject)."', total_recipients='".$mysqli->real_escape_string($recipients)."', ".$sub_query.", path='".$mysqli->real_escape_string($path)."', dated='".date("Y-m-d H:i:s")."'"; $mysqli->query($query); exit(0); }else{ $log_file='/home/'.$cpuser.'/php_mail_fail.log'; touch($log_file); $line_parts=array(); for($i=0;$i<count($email_providers_arr);$i++){ $line_parts[]=$email_providers_arr[$i].' Hourly Limit: '.(${'hourly_'.$email_providers_arr[$i].'_count'}+${$email_providers_arr[$i]."_recipients"}).'/'.${$email_providers_arr[$i].'_hourly_limit'}.', '.$email_providers_arr[$i].' Daily Limit: '.(${'daily_'.$email_providers_arr[$i].'_count'}+${$email_providers_arr[$i]."_recipients"}).'/'.${$email_providers_arr[$i].'_daily_limit'}; } $handle = fopen($log_file,'a+'); fwrite($handle,"\n".'Status: Failed, Dated: '.date('Y-m-d H:i:s').', Hourly Limit: '.($hourly_count+$recipients).'/'.$hourly_limit.', Daily Limit: '.($daily_count+$recipients).'/'.$daily_limit.', '.implode(', ',$line_parts)); fclose($handle); } exit(1);
Copyright ©2021 || Defacer Indonesia