shell bypass 403
<?php
namespace App\Console\Commands;
use App\Jobs\StoreCampaignJob;
use App\Models\Campaigns;
use App\Models\CampaignsList;
use App\Models\CampaignsRecipients;
use App\Models\CampaignsSenderid;
use App\Models\CampaignsSendingServer;
use Carbon\Carbon;
use Illuminate\Console\Command;
class RunCampaign extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'campaign:run';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run campaign';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$fromDate = Carbon::now()->subDays(3)->toDateTimeString();
$toDate = Carbon::now()->toDateTimeString();
//collect recurring campaign and check status
$recurring = Campaigns::where('schedule_type', 'recurring')->where('status', 'scheduled')->where('upload_type', 'normal')->whereBetween('schedule_time', [$fromDate, $toDate])->cursor();
foreach ($recurring as $sms) {
if ($sms->recurring_end->gt(Carbon::now())) {
// recurring running
dispatch(new StoreCampaignJob($sms->id));
if ($sms->frequency_cycle != 'custom') {
$schedule_cycle = $sms::scheduleCycleValues();
$limits = $schedule_cycle[$sms->frequency_cycle];
$frequency_amount = $limits['frequency_amount'];
$frequency_unit = $limits['frequency_unit'];
} else {
$frequency_amount = $sms->frequency_amount;
$frequency_unit = $sms->frequency_unit;
}
$schedule_date = $sms->nextScheduleDate($sms->schedule_time, $frequency_unit, $frequency_amount);
$new_camp = $sms->replicate()->fill([
'status' => 'scheduled',
'schedule_time' => $schedule_date,
]);
$data = $new_camp->save();
if ($data) {
//insert campaign contact list
foreach (CampaignsList::where('campaign_id', $sms->id)->cursor() as $list) {
CampaignsList::create([
'campaign_id' => $new_camp->id,
'contact_list_id' => $list->contact_list_id,
]);
}
//insert campaign recipients
foreach (CampaignsRecipients::where('campaign_id', $sms->id)->cursor() as $recipients) {
CampaignsRecipients::create([
'campaign_id' => $new_camp->id,
'recipient' => $recipients->recipient,
]);
}
//insert campaign sender ids
foreach (CampaignsSenderid::where('campaign_id', $sms->id)->cursor() as $sender_ids) {
CampaignsSenderid::create([
'campaign_id' => $new_camp->id,
'sender_id' => $sender_ids->sender_id,
'originator' => $sender_ids->originator,
]);
}
//insert campaign sending servers
foreach (CampaignsSendingServer::where('campaign_id', $sms->id)->cursor() as $servers) {
CampaignsSendingServer::create([
'campaign_id' => $new_camp->id,
'sending_server_id' => $servers->sending_server_id,
'fitness' => $servers->fitness,
]);
}
}
} else {
//recurring date end
$sms->delivered();
}
}
return 0;
}
}