shell bypass 403
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Customer\DLRController;
use App\Models\PhoneNumbers;
use App\Models\Reports;
use App\Models\Senderid;
use App\Models\SendingServer;
use Carbon\Carbon;
use Illuminate\Console\Command;
use libphonenumber\NumberParseException;
use Throwable;
class VisionUpInboundMessage extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'visionup:inbound';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Store Vision Up inbound messages';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
* @throws NumberParseException
* @throws Throwable
*/
public function handle(): int
{
$sending_servers = SendingServer::where('settings', 'VisionUp')->where('status', 1)->cursor();
if ($sending_servers->count() > 0) {
foreach ($sending_servers as $server) {
$reports = Reports::where('sending_server_id', $server->id)->where('created_at', '>=', Carbon::now()->subDay())->cursor();
foreach ($reports->chunk(100) as $chunk) {
foreach ($chunk as $report) {
$status = explode('|', $report->status);
if (is_array($status) && count($status) > 1 && array_key_exists('1', $status)) {
$sms_id = $status[1];
$headers = [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Basic '.base64_encode("$server->username:$server->password"),
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "http://142.93.78.16/api/sms/$sms_id/responses");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
if ($result != null){
$get_result = json_decode($result, true);
if (is_array($get_result) && ! isset($get_result['message'])) {
foreach ($get_result as $data) {
$message_count = strlen(preg_replace('/\s+/', ' ', trim($data['content']))) / 160;
$cost = (int) ceil($message_count);
$extra = null;
$phone_number = PhoneNumbers::where('number', $report->from)->where('status', 'assigned')->first();
if ( ! $phone_number) {
$sender_id = Senderid::where('sender_id', $report->from)->first();
if ($sender_id) {
$extra = $report->from;
}
}
$callback = DLRController::inboundDLR($report->to, $data['content'], $server->settings, $cost, $report->from, null, $extra);
if ($callback == 'Success') {
$report->update([
'status' => 'Delivered',
]);
}
}
return 1;
}
}
return 0;
}
}
}
}
}
return 0;
}
}