MINI Sh3ll
Path : /var/www/html/crons/ |
|
Current File : /var/www/html/crons/common-functions.php |
<?
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
function startsWith($haystack, $needle)
{
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
function endsWith($haystack, $needle)
{
$length = strlen($needle);
if ($length == 0) {
return true;
}
return (substr($haystack, -$length) === $needle);
}
function logRequest(&$request = '')
{
$request['logtype'] = 'request';
$request['request_id'] = insertSMSRequest($request);
$json_request = json_encode($request);
if($json_request != '')
{
$logPath = getcwd().'/logger/'.strtolower(date('F-Y')).'/requests-'.date('dmY').'.log';
if(!file_exists($logPath))
mkdir(dirname($logPath), 0775, true);
//print $logPath.PHP_EOL;
file_put_contents($logPath, $json_request.PHP_EOL, LOCK_EX | FILE_APPEND);
}
}
function logResponse(&$request = '')
{
$request['logtype'] = 'response';
$request['response_id'] = insertSMSResponse($request);
//print_r($request);
//die;
$json_request = json_encode($request);
if($json_request != '')
{
$logPath = getcwd().'/logger/'.strtolower(date('F-Y')).'/responses-'.date('dmY').'.log';
if(!file_exists($logPath))
mkdir(dirname($logPath), 0775, true);
//print 'Response : '.$logPath.PHP_EOL;
file_put_contents($logPath, $json_request.PHP_EOL, LOCK_EX | FILE_APPEND);
}$mail = new PHPMailer\PHPMailer\PHPMailer();
}
function logXMLResponse(&$request = '')
{
$request['logtype'] = 'response';
//$request = json_encode($request);
if($request != '')
{
$logPath = getcwd().'/logger/'.strtolower(date('F-Y')).'/xml-responses-'.date('dmY').'.log';
if(!file_exists($logPath))
mkdir(dirname($logPath), 0775, true);
//print 'Response : '.$logPath.PHP_EOL;
file_put_contents($logPath, $request.PHP_EOL, LOCK_EX | FILE_APPEND);
}
}
function logRawData($request = '')
{
//$request['logtype'] = 'raw';
//$request = json_encode($request);
if($request != '')
{
$logPath = getcwd().'/logger/'.strtolower(date('F-Y')).'/input-'.date('dmY').'.log';
if(!file_exists($logPath))
mkdir(dirname($logPath), 0775, true);
//print 'Response : '.$logPath.PHP_EOL;
file_put_contents($logPath, $request.PHP_EOL, LOCK_EX | FILE_APPEND);
}
}
function logURLCall(&$request = '')
{
$request['logtype'] = 'urlcall';
$request = json_encode($request);
if($request != '')
{
$logPath = getcwd().'/logger/'.strtolower(date('F-Y')).'/urlcalls-'.date('dmY').'.log';
if(!file_exists($logPath))
mkdir(dirname($logPath), 0775, true);
file_put_contents($logPath, $request.PHP_EOL, LOCK_EX | FILE_APPEND);
}
}
function mysql_escape($con, $parameter)
{
return mysqli_escape_string($con, $parameter);
}
function getConfigDetails($shortcode, $keyword){
$objdb = new database;
$query = "select * FROM (
select s.id shortcode_id, k.client_id, k.reseller_id, k.response_type, k.response_text, k.response_url,
k.request_method, k.url_parameters, 1 config_priority, s.is_shared,
case when s.is_shared = 1 then k.msg_cost_vf ELSE s.msg_cost_vf END msg_cost_vf,
case when s.is_shared = 1 then k.msg_cost_idea ELSE s.msg_cost_idea END msg_cost_idea,
case when s.is_shared = 1 then k.msg_cost_jio ELSE s.msg_cost_jio END msg_cost_jio,
case when s.is_shared = 1 then k.msg_cost_airtel ELSE s.msg_cost_airtel END msg_cost_airtel
from keywords k left join shortcodes s on k.shortcode_id = s.id where
k.`status` = 1 and s.`status` = 1 and s.shortcode = '".$shortcode."' and k.keyword = '".mysql_escape($objdb->connection, $keyword)."' union
select s.id shortcode_id, s.client_id,
s.reseller_id, s.response_type, s.response_text, s.response_url, s.request_method, s.url_parameters, 2 config_priority, s.is_shared,
s.msg_cost_vf, s.msg_cost_idea, s.msg_cost_jio, s.msg_cost_airtel
from shortcodes s where s.`status` = 1 and s.shortcode = '".$shortcode."')
as foo order by foo.config_priority";
$result = $objdb->get_records($query);
$objdb->closeConnection();
return $result[0];
}
function insertSMSRequest($request){
$objdb = new database;
$sql = "insert into requests(shortcode, mobileno, keyword, message, operator, circle, ipaddress, message_id, tsp_msg_cost, logtype) values( ".
"'".mysql_escape($objdb->connection, $request['shortcode'])."', ".
"'".mysql_escape($objdb->connection, $request['mobileno'])."', ".
"'".mysql_escape($objdb->connection, $request['keyword'])."', ".
"'".mysql_escape($objdb->connection, $request['message'])."', ".
"'".mysql_escape($objdb->connection, $request['operator'])."', ".
"'".mysql_escape($objdb->connection, $request['circle'])."', ".
"'".mysql_escape($objdb->connection, $request['ipaddress'])."', ".
"'".mysql_escape($objdb->connection, $request['message_id'])."', ".
"'".mysql_escape($objdb->connection, $request['tsp_msg_cost'])."', ".
"'".mysql_escape($objdb->connection, $request['logtype'])."')";
$result = $objdb->saveRecords($sql);
$objdb->closeConnection();
return $result;
}
function insertSMSResponse($request){
$objdb = new database;
$sql = "insert into responses(request_id, received, shortcode, mobileno, keyword, message, operator, circle, ipaddress, message_id, msg_cost, client_id, reseller_id, shortcode_id, response_url, url_response_code, url_response_error, url_response, response_text, logtype) values( ".
"'".mysql_escape($objdb->connection, $request['request_id'])."', ".
"'".mysql_escape($objdb->connection, $request['received'])."', ".
"'".mysql_escape($objdb->connection, $request['shortcode'])."', ".
"'".mysql_escape($objdb->connection, $request['mobileno'])."', ".
"'".mysql_escape($objdb->connection, $request['keyword'])."', ".
"'".mysql_escape($objdb->connection, $request['message'])."', ".
"'".mysql_escape($objdb->connection, $request['operator'])."', ".
"'".mysql_escape($objdb->connection, $request['circle'])."', ".
"'".mysql_escape($objdb->connection, $request['ipaddress'])."', ".
"'".mysql_escape($objdb->connection, $request['message_id'])."', ".
"'".mysql_escape($objdb->connection, $request['msg_cost'])."', ".
"'".mysql_escape($objdb->connection, $request['client_id'])."', ".
"'".mysql_escape($objdb->connection, $request['reseller_id'])."', ".
"'".mysql_escape($objdb->connection, $request['shortcode_id'])."', ".
"'".mysql_escape($objdb->connection, $request['response_url'])."', ".
"'".mysql_escape($objdb->connection, $request['url_response_code'])."', ".
"'".mysql_escape($objdb->connection, $request['url_response_error'])."', ".
"'".mysql_escape($objdb->connection, $request['url_response'])."', ".
"'".mysql_escape($objdb->connection, $request['response_text'])."', ".
"'".mysql_escape($objdb->connection, $request['logtype'])."')";
$result = $objdb->saveRecords($sql);
$objdb->closeConnection();
/*$mtest = [];
$mtest['sql'] = $sql;
$mtest['result'] = $result;
return $mtest;*/
return $result;
}
function make_get_request($url, $paramstring, &$urlrequest)
{
$response = '';
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false, // Disabled SSL Cert checks
CURLOPT_SSL_VERIFYHOST => 0
);
$callurl = trim($url);
if( !endsWith($callurl,'?') )
$callurl = $callurl.'?';
$callurl = $callurl.$paramstring;
$ch = curl_init( $callurl );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$response = $header['http_code'] == '200' ? $content : 'HTTP Error : '.$header['http_code'];
$urlrequest['response_url'] = $callurl;
$urlrequest['url_response_code'] = $header['http_code'];
$urlrequest['url_response'] = $response;
$urlrequest['url_response_error'] = $errmsg;
//print_r($urlrequest);
return $response;
}
function make_post_request($url, $paramstring, &$urlrequest )
{
$callurl = $url;
if( !endsWith($callurl,'?') )
$callurl = $url.'?';
$callurl = $callurl.$paramstring;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, count($paramstring));
curl_setopt($ch, CURLOPT_POSTFIELDS, $paramstring);
//print '['.$url.']['.$paramstring.']';
$content = curl_exec($ch);
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
$response = $header['http_code'] == '200' ? $content : 'HTTP Error : '.$header['http_code'];
$urlrequest['response_url'] = $callurl;
$urlrequest['url_response_code'] = $err;
$urlrequest['url_response'] = $response;
$urlrequest['url_response_error'] = $errmsg;
//logURLCall($urlrequest);
/*if($output === false)
{
echo "Error Number:".curl_errno($ch)."<br>";
echo "Error String:".curl_error($ch);
}*/
curl_close($ch);
return $response;
}
function processMessage($config, &$request){
$response_text = '';
switch($config['response_type']){
case "0":
$response_text = trim($config['response_text']);
break;
case "1":
$params = $config['url_parameters'];
$params = str_replace('@text', urlencode($request['message']), $params);
$params = str_replace('@rawtext', urlencode($request['raw_message']), $params);
$params = str_replace('@keyword', urlencode($request['keyword']), $params);
$params = str_replace('@mobileno', $request['mobileno'], $params);
$params = str_replace('@msisdn', $request['msisdn'], $params);
$params = str_replace('@operator', urlencode(trim($request['operator'].' '.$request['circle'])), $params);
$params = str_replace('@smsc', urlencode(trim($request['operator'])), $params);
$params = str_replace('@circle', urlencode(trim($request['circle'])), $params);
$params = str_replace('@messageid', urlencode($request['message_id']), $params);
$params = str_replace('@received', urlencode(date('Y-m-d H:i:s')), $params);
$params = str_replace('@shcode', urlencode($request['shortcode']), $params);
$params = str_replace('@ymdhisreceived', urlencode(date('YmdHis')), $params);
$params = str_replace('@coding', urlencode($request['coding']), $params);
$params = str_replace('@charset', urlencode($request['charset']), $params);
/*$urlrequest = [];
$urlrequest['datetime'] = date('Y-m-d H:i:s');
$urlrequest['request_id'] = $request['request_id'];
$urlrequest['message_id'] = $request['message_id'];
$urlrequest['url'] = $config['response_url'].'?'.http_build_query($params);*/
if($config['request_method'] == 'POST' && $request['shortcode'] == '55757575')
$response_text = make_post_request_new($config['response_url'], $params, $request);
else if($config['request_method'] == 'POST')
$response_text = make_post_request($config['response_url'], $params, $request);
else
$response_text = make_get_request($config['response_url'], $params, $request);
$urlrequest['url_response'] = $response_text;
//logURLCall($urlrequest);
break;
case "2":
$params = $config['url_parameters'];
$params = str_replace('@text', urlencode($request['message']), $params);
$params = str_replace('@rawtext', urlencode($request['raw_message']), $params);
$params = str_replace('@keyword', urlencode($request['keyword']), $params);
$params = str_replace('@mobileno', $request['mobileno'], $params);
$params = str_replace('@msisdn', $request['msisdn'], $params);
$params = str_replace('@operator', urlencode(trim($request['operator'].' '.$request['circle'])), $params);
$params = str_replace('@smsc', urlencode(trim($request['operator'])), $params);
$params = str_replace('@circle', urlencode(trim($request['circle'])), $params);
$params = str_replace('@messageid', urlencode($request['message_id']), $params);
$params = str_replace('@received', urlencode(date('Y-m-d H:i:s')), $params);
$params = str_replace('@shcode', urlencode($request['shortcode']), $params);
$params = str_replace('@ymdhisreceived', urlencode(date('YmdHis')), $params);
$params = str_replace('@coding', urlencode($request['coding']), $params);
$params = str_replace('@charset', urlencode($request['charset']), $params);
/*$urlrequest = [];
$urlrequest['datetime'] = date('Y-m-d H:i:s');
$urlrequest['message_id'] = $request['message_id'];
$urlrequest['url'] = $config['kesponse_url'].'?'.http_build_query($params);*/
if($config['request_method'] == 'POST' && $request['shortcode'] == '55757575')
$response_text = make_post_request_new($config['response_url'], $params, $request);
else if($config['request_method'] == 'POST')
$response_text = make_post_request($config['response_url'], $params, $request);
else
$response_text = make_get_request($config['response_url'], $params, $request);
$urlrequest['url_response'] = $response_text;
//logURLCall($urlrequest);
$response_text = $config['response_text'];
break;
}
return $response_text;
}
function make_post_request_new($url, $param)
{
$curl = curl_init();
$ccurl = $url.$param;
curl_setopt_array($curl, array(
CURLOPT_URL => $ccurl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $param
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
function getDailyBillingReport($fromdate, $todate){
$objdb = new database;
$query = "SELECT b.date, u.firstname, u.lastname, u.company, b.client_id,
SUM(b.airtel_success) airtel_success, SUM(b.airtel_failed) airtel_failed,
SUM(b.vodafone_success) vodafone_success, SUM(b.vodafone_failed) vodafone_failed,
SUM(b.vodafone_idea_success) vodafone_idea_success, SUM(b.vodafone_idea_failed) vodafone_idea_failed,
SUM(b.reliance_jio_success) reliance_jio_success, SUM(b.reliance_jio_failed) reliance_jio_failed,
SUM(b.reliance_jio_binary) reliance_jio_binary,
SUM(b.total_counts) total_counts,
SUM(b.total_costs) total_costs FROM daily_customer_billings b LEFT JOIN users u ON b.client_id = u.id
where b.date >= '".$fromdate."' and b.date <= '".$todate."'
GROUP BY b.date, u.firstname, u.lastname, u.company, b.client_id
ORDER BY `date` desc;";
$result = $objdb->get_records($query);
$objdb->closeConnection();
return $result;
}
function getNameFromNumber($num) {
$numeric = $num % 26;
$letter = chr(65 + $numeric);
$num2 = intval($num/ 26);
if ($num2 > 0) {
return getNameFromNumber($num2 - 1) . $letter;
} else {
return $letter;
}
}
function saveReportToExcel($filepath, $client_name, $export_data){
//require_once SITE_ROOT_PATH.'PHPExcel.php';
$rows = count($export_data);
$columns = count(array_keys($export_data[0]));
$styleArray = [
'borders' => [
'allborders' => [
'style' => 'thin'
]
]
];
$headerStyleArray = [
'borders' => [
'allborders' => [
'style' => 'thin'
]
],
'font' => [
'bold' => true,
//'color' => ['rgb' => '2F4F4F']
],
'alignment' => [
'horizontal' => 'center',
]
];
//require_once SITE_ROOT_PATH.'PHPExcel.php';
if(file_exists($filepath)){
$objPHPExcel = PHPExcel_IOFactory::load($filepath);
}
else
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
$row = $sheet->getHighestRow();
if(file_exists($filepath))
$row += 3;
$header_start = 'A'.$row;
$header_end = getNameFromNumber($columns-1).$row;
$sheet->mergeCells($header_start.":".$header_end);
$sheet->SetCellValue($header_start, $client_name);
$sheet->getStyle($header_start.':'.$header_end)->applyFromArray($headerStyleArray);
$row++;
$sheet->getStyle('A'.$row.':'.'K'.$row)->applyFromArray($headerStyleArray);
$sheet->mergeCells('A'.$row.":".'A'.$row);
$sheet->SetCellValue('A'.$row, 'Operator');
$sheet->mergeCells('B'.$row.":".'C'.$row);
$sheet->SetCellValue('B'.$row, 'Airtel');
$sheet->mergeCells('D'.$row.":".'E'.$row);
$sheet->SetCellValue('D'.$row, 'Vodafone');
$sheet->mergeCells('F'.$row.":".'G'.$row);
$sheet->SetCellValue('F'.$row, 'Vodafone Idea');
$sheet->mergeCells('H'.$row.":".'I'.$row);
$sheet->SetCellValue('H'.$row, 'Reliance Jio');
$sheet->mergeCells('J'.$row.":".'K'.$row);
$sheet->SetCellValue('J'.$row, 'Reliance Jio Binary');
$sheet->mergeCells('L'.$row.":".'M'.$row);
$sheet->SetCellValue('L'.$row, 'Totals');
$row++;
$header_start = 'A'.$row;
$header_end = getNameFromNumber($columns-1).$row;
$sheet->getStyle($header_start.':'.$header_end)->applyFromArray($headerStyleArray);
$colCount = 0;
$counter = 0;
foreach(array_keys($export_data[0]) as $wk){
$hvalue = $wk;
if($wk != 'date') $hvalue = $counter % 2 == 0 ? 'Success' : 'Failed';
$col = getNameFromNumber($colCount);
$sheet->SetCellValue($col.$row, ucwords($hvalue));
$sheet->getColumnDimension($col)->setAutoSize(true);
$colCount++;
if($wk != 'date') $counter++;
}
$row++;
foreach($export_data as $edata){
$colCount = 0;
foreach($edata as $ed){
$col = getNameFromNumber($colCount);
$ed = trim($ed);
$sheet->SetCellValue($col.$row, $ed);
$sheet->getStyle($col.$row.':'.$col.$row)->applyFromArray($styleArray);
$colCount++;
}
$row++;
}
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
if (ob_get_length()) ob_end_clean();
//$objWriter->save($excel_path);
$objWriter->save($filepath);
return $filepath;
}
function sendMail($to, $cc, $subject, $body, $attachments){
$mail = new PHPMailer(true);
//$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail_response = '';
try {
//Server settings
$mail->SMTPDebug = false; //SMTP::DEBUG_SERVER; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->SMTPAuth = true; //Enable SMTP authentication
/*$mail->Host = 'smtp.office365.com'; //Set the SMTP server to send through
$mail->Username = '[email protected]'; //SMTP username
$mail->Password = 'Drfixit@1234'; //SMTP password
*/
$mail->Host = 'email-smtp.eu-west-1.amazonaws.com'; //Set the SMTP server to send through
$mail->Username = 'AKIAIV55XL6GRY53IGUA'; //SMTP username
$mail->Password = 'AuwJykndlmSv4tXRtPqk0NHIxZ+JQEGi/HYjDKPFaxSK'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
//Recipients
//$mail->setFrom('[email protected]', 'Dr Fixit Info');
$mail->setFrom('[email protected]', 'Smart Wireless Support');
$mail->addAddress($to);
if(is_array($cc) && count($cc) > 0){
foreach($cc as $c)
$mail->addCC($c);
}
if(is_array($attachments) && count($attachments) > 0){
foreach($attachments as $a)
$mail->addAttachment($a);
}
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $body;
$mail->send();
$mail_response = 'Message has been sent';
} catch (Exception $e) {
$mail_response = "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
return $mail_response;
}
function updateRMLBinaryCounts($date, $bincount){
$objdb = new database;
$sql = "UPDATE daily_customer_billings SET reliance_jio_binary = '".$bincount."' WHERE `date` = '".$date."' AND client_id = 12 AND reliance_jio_success > 1000;";
$result = $objdb->saveRecords($sql);
$sql = "UPDATE daily_customer_billings SET total_counts = airtel_success+airtel_failed+vodafone_success+vodafone_failed+vodafone_idea_success+vodafone_idea_failed+reliance_jio_success+reliance_jio_failed+ifnull(reliance_jio_binary, 0) WHERE `date` = '".$date."'";
$result = $objdb->saveRecords($sql);
$objdb->closeConnection();
}
function updateDailySummaryFromLogs($date, $counts){
$objdb = new database;
$sql = "UPDATE daily_customer_billings SET
airtel_success = '".$counts['airtel']."',
vodafone_success = '".$counts['vodafone']."',
vodafone_idea_success = '".$counts['vodafone-idea']."',
reliance_jio_success = '".$counts['reliance-jio-text']."',
reliance_jio_binary = '".$counts['reliance-jio-binary']."'
WHERE `date` = '".$date."' AND client_id = 12;";
$result = $objdb->saveRecords($sql);
$sql = "UPDATE daily_customer_billings SET total_counts = airtel_success+airtel_failed+vodafone_success+vodafone_failed+vodafone_idea_success+vodafone_idea_failed+reliance_jio_success+reliance_jio_failed+ifnull(reliance_jio_binary, 0) WHERE `date` = '".$date."'";
$result = $objdb->saveRecords($sql);
$objdb->closeConnection();
}
?>
OHA YOOOO