This commit is contained in:
Bozhidar Slaveykov 2023-11-23 23:54:08 +02:00
parent 90165e023d
commit 60002d99d3
35 changed files with 906 additions and 2 deletions

View file

@ -0,0 +1,64 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\BackupResource\Pages;
use App\Filament\Resources\BackupResource\RelationManagers;
use App\Models\Backup;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class BackupResource extends Resource
{
protected static ?string $model = Backup::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListBackups::route('/'),
'create' => Pages\CreateBackup::route('/create'),
'edit' => Pages\EditBackup::route('/{record}/edit'),
];
}
}

View file

@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\BackupResource\Pages;
use App\Filament\Resources\BackupResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateBackup extends CreateRecord
{
protected static string $resource = BackupResource::class;
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\BackupResource\Pages;
use App\Filament\Resources\BackupResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditBackup extends EditRecord
{
protected static string $resource = BackupResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\BackupResource\Pages;
use App\Filament\Resources\BackupResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListBackups extends ListRecords
{
protected static string $resource = BackupResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View file

@ -0,0 +1,64 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\CronJobResource\Pages;
use App\Filament\Resources\CronJobResource\RelationManagers;
use App\Models\CronJob;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class CronJobResource extends Resource
{
protected static ?string $model = CronJob::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListCronJobs::route('/'),
'create' => Pages\CreateCronJob::route('/create'),
'edit' => Pages\EditCronJob::route('/{record}/edit'),
];
}
}

View file

@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\CronJobResource\Pages;
use App\Filament\Resources\CronJobResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateCronJob extends CreateRecord
{
protected static string $resource = CronJobResource::class;
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\CronJobResource\Pages;
use App\Filament\Resources\CronJobResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditCronJob extends EditRecord
{
protected static string $resource = CronJobResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\CronJobResource\Pages;
use App\Filament\Resources\CronJobResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListCronJobs extends ListRecords
{
protected static string $resource = CronJobResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View file

@ -0,0 +1,64 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\DomainResource\Pages;
use App\Filament\Resources\DomainResource\RelationManagers;
use App\Models\Domain;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class DomainResource extends Resource
{
protected static ?string $model = Domain::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListDomains::route('/'),
'create' => Pages\CreateDomain::route('/create'),
'edit' => Pages\EditDomain::route('/{record}/edit'),
];
}
}

View file

@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\DomainResource\Pages;
use App\Filament\Resources\DomainResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateDomain extends CreateRecord
{
protected static string $resource = DomainResource::class;
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\DomainResource\Pages;
use App\Filament\Resources\DomainResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditDomain extends EditRecord
{
protected static string $resource = DomainResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\DomainResource\Pages;
use App\Filament\Resources\DomainResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListDomains extends ListRecords
{
protected static string $resource = DomainResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View file

@ -0,0 +1,64 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\HostingAccountResource\Pages;
use App\Filament\Resources\HostingAccountResource\RelationManagers;
use App\Models\HostingAccount;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class HostingAccountResource extends Resource
{
protected static ?string $model = HostingAccount::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListHostingAccounts::route('/'),
'create' => Pages\CreateHostingAccount::route('/create'),
'edit' => Pages\EditHostingAccount::route('/{record}/edit'),
];
}
}

View file

@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\HostingAccountResource\Pages;
use App\Filament\Resources\HostingAccountResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateHostingAccount extends CreateRecord
{
protected static string $resource = HostingAccountResource::class;
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\HostingAccountResource\Pages;
use App\Filament\Resources\HostingAccountResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditHostingAccount extends EditRecord
{
protected static string $resource = HostingAccountResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\HostingAccountResource\Pages;
use App\Filament\Resources\HostingAccountResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListHostingAccounts extends ListRecords
{
protected static string $resource = HostingAccountResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

View file

@ -0,0 +1,64 @@
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\HostingDatabaseResource\Pages;
use App\Filament\Resources\HostingDatabaseResource\RelationManagers;
use App\Models\HostingDatabase;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class HostingDatabaseResource extends Resource
{
protected static ?string $model = HostingDatabase::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListHostingDatabases::route('/'),
'create' => Pages\CreateHostingDatabase::route('/create'),
'edit' => Pages\EditHostingDatabase::route('/{record}/edit'),
];
}
}

View file

@ -0,0 +1,12 @@
<?php
namespace App\Filament\Resources\HostingDatabaseResource\Pages;
use App\Filament\Resources\HostingDatabaseResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateHostingDatabase extends CreateRecord
{
protected static string $resource = HostingDatabaseResource::class;
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\HostingDatabaseResource\Pages;
use App\Filament\Resources\HostingDatabaseResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditHostingDatabase extends EditRecord
{
protected static string $resource = HostingDatabaseResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
}

View file

@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\HostingDatabaseResource\Pages;
use App\Filament\Resources\HostingDatabaseResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListHostingDatabases extends ListRecords
{
protected static string $resource = HostingDatabaseResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}

11
web/app/Models/Backup.php Normal file
View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Backup extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class CronJob extends Model
{
use HasFactory;
}

11
web/app/Models/Domain.php Normal file
View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Domain extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class HostingAccount extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class HostingDatabase extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class HostingDatabaseUser extends Model
{
use HasFactory;
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class HostingPackage extends Model
{
use HasFactory;
}

View file

@ -38,10 +38,18 @@ return [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'database' => database_path('database.sqlite'),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
'foreign_key_constraints' =>false,
],
//
// 'sqlite' => [
// 'driver' => 'sqlite',
// 'url' => env('DATABASE_URL'),
// 'database' => env('DB_DATABASE', database_path('database.sqlite')),
// 'prefix' => '',
// 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
// ],
'mysql' => [
'driver' => 'mysql',

View file

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('domains', function (Blueprint $table) {
$table->id();
$table->string('domain');
$table->string('ip');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('domains');
}
};

View file

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('hosting_accounts', function (Blueprint $table) {
$table->id();
$table->string('domain');
$table->string('ip');
$table->string('username');
$table->string('password');
$table->string('package_id')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('hosting_accounts');
}
};

View file

@ -0,0 +1,52 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('hosting_packages', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('disk_space');
$table->string('bandwidth');
$table->string('addon_domains');
$table->string('parked_domains');
$table->string('sub_domains');
$table->string('ftp_accounts');
$table->string('mysql_databases');
$table->string('email_accounts');
$table->string('email_lists');
$table->string('max_quota_per_email');
$table->string('max_email_per_hour');
$table->string('max_defer_fail_percentage');
$table->string('max_email_per_day');
$table->string('max_recipients_per_message');
$table->string('max_email_per_minute');
$table->string('max_attachments_per_message');
$table->string('max_parked_domains');
$table->string('max_addon_domains');
$table->string('max_sub_domains');
$table->string('max_ftp_accounts');
$table->string('max_mysql_databases');
$table->string('max_email_accounts');
$table->string('max_email_lists');
$table->string('max_email_quota');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('hosting_packages');
}
};

View file

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('hosting_databases', function (Blueprint $table) {
$table->id();
$table->string('hosting_account_id');
$table->string('hosting_database_user_id');
$table->string('name');
$table->string('size');
$table->string('max_size');
$table->string('max_user_connections');
$table->string('max_connections');
$table->string('max_queries_per_hour');
$table->string('max_updates_per_hour');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('hosting_databases');
}
};

View file

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('hosting_database_users', function (Blueprint $table) {
$table->id();
$table->string('hosting_account_id');
$table->string('username');
$table->string('password');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('hosting_database_users');
}
};

View file

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('cron_jobs', function (Blueprint $table) {
$table->id();
$table->string('hosting_account_id')->nullable();
$table->string('command');
$table->string('frequency');
$table->string('minute');
$table->string('hour');
$table->string('day_of_month');
$table->string('month');
$table->string('day_of_week');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('cron_jobs');
}
};

View file

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('backups', function (Blueprint $table) {
$table->id();
$table->string('hosting_account_id');
$table->string('name');
$table->string('size');
$table->string('max_size');
$table->string('max_user_connections');
$table->string('max_connections');
$table->string('max_queries_per_hour');
$table->string('max_updates_per_hour');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('backups');
}
};