Files

150 lines
8.0 KiB
PHP

<?php
use App\Http\Controllers\Api\Admin\InfraManagement\InfraManagementController;
use App\Http\Controllers\Api\Admin\IpPool\IpPoolController;
use App\Http\Controllers\Api\Admin\OsManager\OsController;
use App\Http\Controllers\Api\Admin\OsManager\OsGroupController;
use App\Http\Controllers\Api\Admin\Rebuild\AdminReinstallLogController;
use App\Http\Controllers\Api\Admin\VCenter\VCenterController;
use App\Http\Controllers\Api\Admin\VPS\VPSController;
use App\Http\Controllers\admin\VCenterManagerController;
use Illuminate\Support\Facades\Route;
// OS Groups & OS Entries (module: module-vcenter)
Route::prefix('os-groups')
->controller(OsGroupController::class)
->as('os-groups.')
->group(function () {
Route::get('/', 'index')->middleware('perm:module-vcenter.manager')->name('index');
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager')->name('show');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
});
Route::prefix('os')
->controller(OsController::class)
->as('os.')
->group(function () {
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
});
// VPS (module: module-vcenter)
Route::prefix('vps')
->controller(VPSController::class)
->group(function () {
Route::get('/', 'index')->middleware('perm:module-vcenter.view');
Route::get('{id}', 'show')->middleware('perm:module-vcenter.view');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.edit');
Route::post('{id}/power-on', 'powerOn')->middleware('perm:module-vcenter.edit');
Route::post('{id}/power-off', 'powerOff')->middleware('perm:module-vcenter.edit');
Route::post('{id}/restart', 'restart')->middleware('perm:module-vcenter.edit');
Route::get('{id}/console-ticket', 'getConsoleTicket')->middleware('perm:module-vcenter.view');
});
// vCenter (module: module-vcenter)
Route::prefix('vcenter')
->controller(VCenterController::class)
->group(function () {
Route::get('tree', 'tree')->middleware('perm:module-vcenter.view');
Route::get('console-ticket', 'consoleTicket')->middleware('perm:module-vcenter.view');
Route::post('/', 'store')->middleware('perm:module-vcenter.create');
Route::post('sync', 'sync')->middleware('perm:module-vcenter.edit');
Route::post('node/{type}', 'storeNode')->middleware('perm:module-vcenter.create');
Route::put('node/{type}/{id}', 'updateNode')->middleware('perm:module-vcenter.edit');
Route::delete('node/{type}/{id}', 'destroyNode')->middleware('perm:module-vcenter.destroy');
});
// InfraManagement (jumphost, vcenter config)
Route::prefix('infra-management')
->controller(InfraManagementController::class)
->group(function () {
Route::get('/', 'index')->middleware('perm:module-vcenter.manager');
Route::post('/', 'store')->middleware('perm:module-vcenter.manager');
Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager');
});
// Provider (active vCenter chain + provider settings — module: module-vcenter)
Route::prefix('provider')->group(function () {
Route::get('active-chain', [
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
'chain',
])->middleware('perm:module-vcenter.view');
Route::post('{type}/{id}/activate', [
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
'activate',
])
->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network'])
->middleware('perm:module-vcenter.edit');
Route::post('{type}/{id}/deactivate', [
\App\Http\Controllers\Api\Admin\Provider\ActiveInfraController::class,
'deactivate',
])
->whereIn('type', ['vcenter', 'datacenter', 'host', 'datastore', 'network'])
->middleware('perm:module-vcenter.edit');
Route::get('settings', [
\App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class,
'index',
])->middleware('perm:module-vcenter.view');
Route::put('settings', [
\App\Http\Controllers\Api\Admin\Provider\ProviderSettingController::class,
'update',
])->middleware('perm:module-vcenter.edit');
});
// IP Pool (module: module-vcenter)
Route::prefix('ip-pool')
->controller(IpPoolController::class)
->group(function () {
Route::get('networks', 'networks')->middleware('perm:module-vcenter.view');
Route::get('dashboard', 'dashboard')->middleware('perm:module-vcenter.view');
Route::get('used-services', 'usedServices')->middleware('perm:module-vcenter.view');
Route::get('/', 'index')->middleware('perm:module-vcenter.view');
Route::post('/', 'store')->middleware('perm:module-vcenter.manager');
Route::post('sync', 'sync')->middleware('perm:module-vcenter.manager');
Route::post('import/preview', 'importPreview')->middleware('perm:module-vcenter.manager');
Route::post('import', 'import')->middleware('perm:module-vcenter.manager');
Route::delete('bulk', 'bulkDelete')->middleware('perm:module-vcenter.manager');
Route::post('bulk-update-gateway', 'bulkUpdateGateway')->middleware('perm:module-vcenter.manager');
Route::post('allocation/preview', 'allocationPreview')->middleware('perm:module-vcenter.manager');
Route::post('allocate', 'allocate')->middleware('perm:module-vcenter.manager');
Route::post('revocation/preview', 'revocationPreview')->middleware('perm:module-vcenter.manager');
Route::post('revoke', 'revoke')->middleware('perm:module-vcenter.manager');
Route::post('release', 'release')->middleware('perm:module-vcenter.manager');
Route::get('logs', 'allLogs')->middleware('perm:module-vcenter.view');
Route::get('{id}/logs', 'logs')->middleware('perm:module-vcenter.view');
Route::get('{id}', 'show')->middleware('perm:module-vcenter.view');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager');
});
// vCenter Manager Power Operations (module: module-vcenter)
Route::prefix('vcenter-manager')
->controller(VCenterManagerController::class)
->group(function () {
Route::post('vm/power-on', 'powerOn')->middleware('perm:module-vcenter.edit');
Route::post('vm/power-off', 'powerOff')->middleware('perm:module-vcenter.edit');
Route::post('vm/restart', 'restart')->middleware('perm:module-vcenter.edit');
Route::post('vm/snapshot', 'snapshot')->middleware('perm:module-vcenter.edit');
Route::post('vm/suspend', 'suspend')->middleware('perm:module-vcenter.edit');
Route::post('vm/update-config', 'updateConfig')->middleware('perm:module-vcenter.edit');
Route::post('vm/delete', 'deleteVM')->middleware('perm:module-vcenter.edit');
Route::get('vm/stats', 'stats')->middleware('perm:module-vcenter.view');
Route::get('vm/power-state', 'powerState')->middleware('perm:module-vcenter.view');
Route::get('vms/powered-off', 'getPoweredOffVms')->middleware('perm:module-vcenter.view');
});
// VM Rebuild Logs — who rebuilt, which OS, post-rebuild password
Route::prefix('rebuild-logs')
->controller(AdminReinstallLogController::class)
->group(function () {
Route::get('/', 'index')->middleware('perm:vps.view');
Route::get('stats', 'stats')->middleware('perm:vps.view');
Route::get('{id}', 'show')->middleware('perm:vps.view')->whereNumber('id');
});