From dd12afe0872a6e19da3e814ab612d05dbb29218d Mon Sep 17 00:00:00 2001 From: Crivion Date: Wed, 22 Oct 2025 14:27:11 +0300 Subject: [PATCH] firewall: remove comments for now - only causes trouble - add rule type IN or OUT --- .../Firewall/BuildUfwRuleSpecAction.php | 14 +++----- app/Actions/Firewall/ToggleUfwAction.php | 2 +- app/Http/Controllers/FirewallController.php | 4 +-- .../Firewall/CreateFirewallRuleRequest.php | 2 +- .../Partials/CreateFirewallRuleForm.jsx | 32 +++++++++++-------- 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/app/Actions/Firewall/BuildUfwRuleSpecAction.php b/app/Actions/Firewall/BuildUfwRuleSpecAction.php index 2c5833f..b0fb779 100644 --- a/app/Actions/Firewall/BuildUfwRuleSpecAction.php +++ b/app/Actions/Firewall/BuildUfwRuleSpecAction.php @@ -4,28 +4,22 @@ namespace App\Actions\Firewall; class BuildUfwRuleSpecAction { - public function execute(string $protocol, string $from, string $to, int $port, ?string $comment = null): string + public function execute(string $direction, string $protocol, string $from, string $to, int $port): string { + $direction = strtolower(trim($direction)); $protocol = strtolower(trim($protocol)); $from = trim($from); $to = trim($to); $port = (int) $port; - $comment = trim((string) ($comment ?? '')); $parts = [ + $direction, 'proto ' . $protocol, 'from ' . $from, 'to ' . $to, 'port ' . $port, ]; - $spec = implode(' ', $parts); - - if ($comment !== '') { - $commentEscaped = str_replace("'", "\\'", $comment); - $spec .= " comment '" . $commentEscaped . "'"; - } - - return $spec; + return implode(' ', $parts); } } diff --git a/app/Actions/Firewall/ToggleUfwAction.php b/app/Actions/Firewall/ToggleUfwAction.php index a45c3c9..0405a1b 100644 --- a/app/Actions/Firewall/ToggleUfwAction.php +++ b/app/Actions/Firewall/ToggleUfwAction.php @@ -20,4 +20,4 @@ class ToggleUfwAction } return trim($proc->output()); } -} +}p diff --git a/app/Http/Controllers/FirewallController.php b/app/Http/Controllers/FirewallController.php index b8a89f7..16b22ae 100644 --- a/app/Http/Controllers/FirewallController.php +++ b/app/Http/Controllers/FirewallController.php @@ -37,11 +37,11 @@ class FirewallController extends Controller { $validated = $request->validated(); $spec = (new BuildUfwRuleSpecAction())->execute( + strtolower($validated['direction']), strtolower($validated['protocol']), trim($validated['ip']), trim($validated['to']), - (int) $validated['port'], - $validated['comment'] ?? '' + (int) $validated['port'] ); if ($validated['type'] === 'allow') { diff --git a/app/Http/Requests/Firewall/CreateFirewallRuleRequest.php b/app/Http/Requests/Firewall/CreateFirewallRuleRequest.php index 005cc0d..85313fd 100644 --- a/app/Http/Requests/Firewall/CreateFirewallRuleRequest.php +++ b/app/Http/Requests/Firewall/CreateFirewallRuleRequest.php @@ -15,11 +15,11 @@ class CreateFirewallRuleRequest extends FormRequest { return [ 'type' => ['required', 'string', 'in:allow,deny'], + 'direction' => ['required', 'string', 'in:in,out'], 'protocol' => ['required', 'string', 'in:tcp,udp'], 'port' => ['required', 'integer', 'min:1', 'max:65535'], 'ip' => ['required', 'string'], 'to' => ['required', 'string'], - 'comment' => ['nullable', 'string', 'max:150'], ]; } diff --git a/resources/js/Pages/Firewall/Partials/CreateFirewallRuleForm.jsx b/resources/js/Pages/Firewall/Partials/CreateFirewallRuleForm.jsx index 29664ca..6061795 100644 --- a/resources/js/Pages/Firewall/Partials/CreateFirewallRuleForm.jsx +++ b/resources/js/Pages/Firewall/Partials/CreateFirewallRuleForm.jsx @@ -21,11 +21,11 @@ export default function CreateFirewallRuleForm() { clearErrors, } = useForm({ type: 'allow', + direction: 'in', protocol: 'tcp', port: '', ip: 'any', to: 'any', - comment: '', }); const openModal = () => setShowModal(true); @@ -33,7 +33,7 @@ export default function CreateFirewallRuleForm() { const closeModal = () => { setShowModal(false); clearErrors(); - reset({ type: 'allow', protocol: 'tcp', port: '', ip: 'any', to: 'any', comment: '' }); + reset({ type: 'allow', direction: 'in', protocol: 'tcp', port: '', ip: 'any', to: 'any' }); }; const submit = (e) => { @@ -74,6 +74,21 @@ export default function CreateFirewallRuleForm() { +
+ + + +
+