Skip to content

Commit

Permalink
Port check
Browse files Browse the repository at this point in the history
  • Loading branch information
notAreYouScared committed Oct 24, 2024
1 parent d653edb commit 3d966d8
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Forms\Set;
use Filament\Notifications\Notification;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Actions\BulkActionGroup;
Expand Down Expand Up @@ -97,18 +99,26 @@ public function table(Table $table): Table
->label('Ports')
->inlineLabel()
->live()
->afterStateUpdated(function ($state, Set $set) {
->afterStateUpdated(function ($state, Set $set, Get $get) {
$ports = collect();
$update = false;
foreach ($state as $portEntry) {
if (!str_contains($portEntry, '-')) {
if (is_numeric($portEntry)) {
$ports->push((int) $portEntry);

continue;
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push((int) $portEntry);

continue;
}
}

// Do not add non numerical ports
// Do not add non-numerical ports
$update = true;

continue;
Expand All @@ -122,8 +132,19 @@ public function table(Table $table): Table

$start = max((int) $start, 0);
$end = min((int) $end, 2 ** 16 - 1);
foreach (range($start, $end) as $i) {
$ports->push($i);
$range = $start <= $end ? range($start, $end) : range($end, $start);
foreach ($range as $i) {
if ($i > 1024 && $i <= 65535) {
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push($i);
}
}
}
}

Expand All @@ -139,8 +160,6 @@ public function table(Table $table): Table
$ports = $sortedPorts;
}

$ports = $ports->filter(fn ($port) => $port > 1024 && $port < 65535)->values();

if ($update) {
$set('allocation_ports', $ports->all());
}
Expand Down
27 changes: 22 additions & 5 deletions app/Filament/Resources/ServerResource/Pages/CreateServer.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Forms\Set;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
Expand Down Expand Up @@ -219,15 +220,23 @@ public function form(Form $form): Form
->label('Ports')
->inlineLabel()
->live()
->afterStateUpdated(function ($state, Set $set) {
->afterStateUpdated(function ($state, Set $set, Get $get) {
$ports = collect();
$update = false;
foreach ($state as $portEntry) {
if (!str_contains($portEntry, '-')) {
if (is_numeric($portEntry)) {
$ports->push((int) $portEntry);

continue;
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push((int) $portEntry);

continue;
}
}

// Do not add non-numerical ports
Expand All @@ -247,7 +256,15 @@ public function form(Form $form): Form
$range = $start <= $end ? range($start, $end) : range($end, $start);
foreach ($range as $i) {
if ($i > 1024 && $i <= 65535) {
$ports->push($i);
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push($i);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Forms\Set;
use Filament\Notifications\Notification;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Actions\Action;
Expand Down Expand Up @@ -93,18 +95,26 @@ public function table(Table $table): Table
->label('Ports')
->inlineLabel()
->live()
->afterStateUpdated(function ($state, Set $set) {
->afterStateUpdated(function ($state, Set $set, Get $get) {
$ports = collect();
$update = false;
foreach ($state as $portEntry) {
if (!str_contains($portEntry, '-')) {
if (is_numeric($portEntry)) {
$ports->push((int) $portEntry);
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push((int) $portEntry);

continue;
continue;
}
}

// Do not add non numerical ports
// Do not add non-numerical ports
$update = true;

continue;
Expand All @@ -118,8 +128,19 @@ public function table(Table $table): Table

$start = max((int) $start, 0);
$end = min((int) $end, 2 ** 16 - 1);
foreach (range($start, $end) as $i) {
$ports->push($i);
$range = $start <= $end ? range($start, $end) : range($end, $start);
foreach ($range as $i) {
if ($i > 1024 && $i <= 65535) {
if (Allocation::query()->where('ip', $get('allocation_ip'))->where('port', $portEntry)->exists()) {
Notification::make()
->title('Port Already Exists')
->danger()
->body('Port ' . $portEntry . ' already exists.')
->send();
} else {
$ports->push($i);
}
}
}
}

Expand All @@ -135,8 +156,6 @@ public function table(Table $table): Table
$ports = $sortedPorts;
}

$ports = $ports->filter(fn ($port) => $port > 1024 && $port < 65535)->values();

if ($update) {
$set('allocation_ports', $ports->all());
}
Expand Down

0 comments on commit 3d966d8

Please sign in to comment.