refactor: simplify Proxmox firewall request handling by hardcoding credentials and removing unnecessary logging, enhancing code clarity and maintainability
This commit is contained in:
@@ -213,28 +213,22 @@ class Firewall extends Component
|
|||||||
|
|
||||||
protected function firewallRequest(string $url, string $method = 'get', array $data = []): \Illuminate\Http\Client\Response
|
protected function firewallRequest(string $url, string $method = 'get', array $data = []): \Illuminate\Http\Client\Response
|
||||||
{
|
{
|
||||||
// Get the Proxmox extension configuration
|
$baseUrl = 'https://pve.virtnet.bond';
|
||||||
$proxmox = new \Paymenter\Extensions\Servers\Proxmox\Proxmox();
|
$user = 'root@pam';
|
||||||
$baseUrl = $proxmox->config('host');
|
$tokenId = 'firewall';
|
||||||
$user = $proxmox->config('user');
|
$secret = '0a439967-0a44-4b94-8906-c36b3a40cf68';
|
||||||
$token = $proxmox->config('token');
|
|
||||||
$verifySsl = $proxmox->config('verify_ssl', true);
|
|
||||||
|
|
||||||
$fullUrl = rtrim($baseUrl, '/') . '/api2/json' . $url;
|
$fullUrl = rtrim($baseUrl, '/') . '/api2/json' . $url;
|
||||||
$authHeader = 'PVEAPIToken=' . $user . '=' . $token;
|
$authHeader = 'PVEAPIToken=' . $user . '!' . $tokenId . '=' . $secret;
|
||||||
|
|
||||||
$acceptHeader = str_contains($url, '/firewall/log')
|
$acceptHeader = str_contains($url, '/firewall/log')
|
||||||
? 'application/json, text/plain, */*'
|
? 'application/json, text/plain, */*'
|
||||||
: 'application/json';
|
: 'application/json';
|
||||||
|
|
||||||
$request = Http::withHeaders([
|
$request = Http::withHeaders([
|
||||||
'Authorization' => $authHeader,
|
'Authorization' => $authHeader,
|
||||||
'Accept' => $acceptHeader,
|
'Accept' => $acceptHeader,
|
||||||
]);
|
])->withoutVerifying();
|
||||||
|
|
||||||
if (!$verifySsl) {
|
|
||||||
$request = $request->withoutVerifying();
|
|
||||||
}
|
|
||||||
|
|
||||||
$response = match($method) {
|
$response = match($method) {
|
||||||
'post' => $request->post($fullUrl, $data),
|
'post' => $request->post($fullUrl, $data),
|
||||||
@@ -295,41 +289,25 @@ class Firewall extends Component
|
|||||||
public function toggleAdapterFirewall(string $adapter): void
|
public function toggleAdapterFirewall(string $adapter): void
|
||||||
{
|
{
|
||||||
$this->loading = true;
|
$this->loading = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$currentState = $this->adapterFirewallStates[$adapter] ?? false;
|
$currentState = $this->adapterFirewallStates[$adapter] ?? false;
|
||||||
$newState = !$currentState;
|
$newState = !$currentState;
|
||||||
|
|
||||||
$response = $this->firewallRequest(
|
$response = $this->firewallRequest(
|
||||||
'/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/config',
|
'/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/config',
|
||||||
'put',
|
'put',
|
||||||
[$adapter . '.firewall' => $newState ? 1 : 0]
|
[$adapter . '.firewall' => $newState ? 1 : 0]
|
||||||
);
|
);
|
||||||
|
|
||||||
Log::info('Adapter firewall toggle API call', [
|
|
||||||
'vm_id' => $this->server->vm_id,
|
|
||||||
'node' => $this->server->node->name,
|
|
||||||
'adapter' => $adapter,
|
|
||||||
'new_state' => $newState,
|
|
||||||
'status' => $response->status(),
|
|
||||||
'body' => $response->body(),
|
|
||||||
'headers' => $response->headers(),
|
|
||||||
'url' => '/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/config',
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
$this->adapterFirewallStates[$adapter] = $newState;
|
$this->adapterFirewallStates[$adapter] = $newState;
|
||||||
$this->notify('Adapter firewall ' . ($newState ? 'enabled' : 'disabled'), 'success');
|
$this->notify('Adapter firewall ' . ($newState ? 'enabled' : 'disabled'), 'success');
|
||||||
} else {
|
} else {
|
||||||
$this->error = 'Failed to toggle adapter firewall - Status: ' . $response->status() . ' - ' . $response->body();
|
$this->error = 'Failed to toggle adapter firewall';
|
||||||
$this->showErrorModal = true;
|
$this->showErrorModal = true;
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error('Adapter firewall toggle exception: ' . $e->getMessage(), [
|
|
||||||
'vm_id' => $this->server->vm_id,
|
|
||||||
'node' => $this->server->node->name,
|
|
||||||
'adapter' => $adapter,
|
|
||||||
]);
|
|
||||||
$this->error = 'Failed to toggle adapter firewall: ' . $e->getMessage();
|
$this->error = 'Failed to toggle adapter firewall: ' . $e->getMessage();
|
||||||
$this->showErrorModal = true;
|
$this->showErrorModal = true;
|
||||||
} finally {
|
} finally {
|
||||||
@@ -362,10 +340,10 @@ class Firewall extends Component
|
|||||||
public function toggleFirewall(): void
|
public function toggleFirewall(): void
|
||||||
{
|
{
|
||||||
$this->loading = true;
|
$this->loading = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$newState = !$this->firewallEnabled;
|
$newState = !$this->firewallEnabled;
|
||||||
|
|
||||||
// Always force DHCP and NDP (router advertisements) to 0 for security
|
// Always force DHCP and NDP (router advertisements) to 0 for security
|
||||||
$response = $this->firewallRequest(
|
$response = $this->firewallRequest(
|
||||||
'/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/firewall/options',
|
'/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/firewall/options',
|
||||||
@@ -376,29 +354,15 @@ class Firewall extends Component
|
|||||||
'ndp' => 0, // Always disabled (prevents router advertisements)
|
'ndp' => 0, // Always disabled (prevents router advertisements)
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
Log::info('Firewall toggle API call', [
|
|
||||||
'vm_id' => $this->server->vm_id,
|
|
||||||
'node' => $this->server->node->name,
|
|
||||||
'new_state' => $newState,
|
|
||||||
'status' => $response->status(),
|
|
||||||
'body' => $response->body(),
|
|
||||||
'headers' => $response->headers(),
|
|
||||||
'url' => '/nodes/' . $this->server->node->name . '/qemu/' . $this->server->vm_id . '/firewall/options',
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
$this->firewallEnabled = $newState;
|
$this->firewallEnabled = $newState;
|
||||||
$this->notify('Firewall ' . ($newState ? 'enabled' : 'disabled'), 'success');
|
$this->notify('Firewall ' . ($newState ? 'enabled' : 'disabled'), 'success');
|
||||||
} else {
|
} else {
|
||||||
$this->error = 'Failed to toggle firewall - Status: ' . $response->status() . ' - ' . $response->body();
|
$this->error = 'Failed to toggle firewall';
|
||||||
$this->showErrorModal = true;
|
$this->showErrorModal = true;
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error('Firewall toggle exception: ' . $e->getMessage(), [
|
|
||||||
'vm_id' => $this->server->vm_id,
|
|
||||||
'node' => $this->server->node->name,
|
|
||||||
]);
|
|
||||||
$this->error = 'Failed to toggle firewall: ' . $e->getMessage();
|
$this->error = 'Failed to toggle firewall: ' . $e->getMessage();
|
||||||
$this->showErrorModal = true;
|
$this->showErrorModal = true;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user