diff --git a/app/Http/Controllers/Remote/CallController.php b/app/Http/Controllers/Remote/CallController.php deleted file mode 100644 index 4feadf7..0000000 --- a/app/Http/Controllers/Remote/CallController.php +++ /dev/null @@ -1,26 +0,0 @@ -load('module'); - $response = $host->module->remoteHost($host->id, $func, $request->all()); - - return $this->apiResponse($response[0], $response[1]); - } - - public function module(Request $request, Module $module, $func) - { - $response = $module->remote($func, $request->all()); - - return $this->apiResponse($response[0], $response[1]); - } -} diff --git a/app/Http/Controllers/Remote/Host/HostController.php b/app/Http/Controllers/Remote/Host/HostController.php index 32b05a3..bd5bb91 100644 --- a/app/Http/Controllers/Remote/Host/HostController.php +++ b/app/Http/Controllers/Remote/Host/HostController.php @@ -28,7 +28,13 @@ public function index() */ public function store(Request $request) { - // + // 保存服务器 + $request->validate([ + 'name' => 'required|string', + 'ip' => 'sometimes|ip', + // status only allow online or offline + 'status' => 'required|in:online,offline,maintenance', + ]); } /** diff --git a/app/Http/Controllers/Remote/ModuleController.php b/app/Http/Controllers/Remote/ModuleController.php index 46a1b36..6966691 100644 --- a/app/Http/Controllers/Remote/ModuleController.php +++ b/app/Http/Controllers/Remote/ModuleController.php @@ -2,8 +2,10 @@ namespace App\Http\Controllers\Remote; -use App\Http\Controllers\Controller; +use Illuminate\Support\Str; use Illuminate\Http\Request; +use App\Models\Module\Module; +use App\Http\Controllers\Controller; class ModuleController extends Controller { @@ -11,4 +13,20 @@ public function index() { return $this->success(auth('remote')->user()); } + + public function call(Request $request, Module $module, $func) + { + $request->validate([ + 'func' => 'required|string' + ]); + + // 不能让 func 的首个字符为 / + if (Str::startsWith($func, '/')) { + $func = substr($func, 1); + } + + $response = $module->remote($func, $request->all()); + + return $this->apiResponse($response[0], $response[1]); + } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 7d4bbc0..afa0160 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -31,15 +31,15 @@ public function boot() $this->routes(function () { Route::middleware('api') ->prefix('api') - ->group(base_path('routes/api/client.php')); + ->group(base_path('routes/api.php')); Route::middleware('auth:admin') ->prefix('admin') - ->group(base_path('routes/api/admin.php')); + ->group(base_path('routes/admin.php')); Route::middleware('auth:remote') ->prefix('remote') - ->group(base_path('routes/api/remote.php')); + ->group(base_path('routes/remote.php')); Route::middleware('web') ->group(base_path('routes/web.php')); diff --git a/routes/api/admin.php b/routes/admin.php similarity index 100% rename from routes/api/admin.php rename to routes/admin.php diff --git a/routes/api/client.php b/routes/api.php similarity index 59% rename from routes/api/client.php rename to routes/api.php index 2278d0b..58bd5a3 100644 --- a/routes/api/client.php +++ b/routes/api.php @@ -5,22 +5,19 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\User\TaskController; -Route::name('client.')->middleware(['api', 'auth:sanctum'])->group(function () { +Route::name('api.')->middleware(['api', 'auth:sanctum'])->group(function () { // Route::apiResource('users', Controllers\User\UserController::class); - Route::apiResource('/modules/{module}/hosts', User\HostController::class); Route::apiResource('drops', User\DropController::class); - - Route::get('tasks', [TaskController::class, 'index']); Route::apiResource('work-orders', User\WorkOrder\WorkOrderController::class); Route::apiResource('work-orders.replies', User\WorkOrder\ReplyController::class); // 调用远程 API - Route::post('hosts/{host}/func/{func}', [Remote\CallController::class, 'host'])->name('host.call'); - Route::post('/modules/{module}/func/{func}', [Remote\CallController::class, 'module'])->name('module.call'); + // Route::post('hosts/{host}/func/{func}', [Remote\CallController::class, 'host'])->name('host.call'); + Route::post('/modules/{module}', [Remote\ModuleController::class, 'call'])->name('module.call'); }); diff --git a/routes/api/remote.php b/routes/remote.php similarity index 100% rename from routes/api/remote.php rename to routes/remote.php