<?php namespace App\Jobs\Firewall; use App\Enums\FirewallRuleStatus; use App\Events\Broadcast; use App\Jobs\Job; use App\Models\FirewallRule; class AddToServer extends Job { protected FirewallRule $firewallRule; public function __construct(FirewallRule $firewallRule) { $this->firewallRule = $firewallRule; } public function handle(): void { $this->firewallRule->server->firewall() ->handler() ->addRule( $this->firewallRule->type, $this->firewallRule->real_protocol, $this->firewallRule->port, $this->firewallRule->source, $this->firewallRule->mask ); $this->firewallRule->status = FirewallRuleStatus::READY; $this->firewallRule->save(); event( new Broadcast('create-firewall-rule-finished', [ 'firewallRule' => $this->firewallRule, ]) ); } public function failed(): void { $this->firewallRule->delete(); event( new Broadcast('create-firewall-rule-failed', [ 'firewallRule' => $this->firewallRule, ]) ); } }