增加 获取服务器列表
This commit is contained in:
parent
5a1356e26f
commit
4579c2c4b5
@ -1,105 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Remote;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Http\Requests\Remote\Server\StatusRequest;
|
|
||||||
use App\Models\Server\Status;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
class ServerController extends Controller
|
|
||||||
{
|
|
||||||
// protected $cache;
|
|
||||||
|
|
||||||
// public function __construct() {
|
|
||||||
// $this->cache = Cache::tags(['remote']);
|
|
||||||
|
|
||||||
// // 临时修改 prefix
|
|
||||||
// $this->cache->setPrefix('remote_' . auth('remote')->id());
|
|
||||||
// }
|
|
||||||
|
|
||||||
// public function all() {
|
|
||||||
// return $this->cache->get('servers', function () {
|
|
||||||
// return [];
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
/**
|
|
||||||
* Display a listing of the resource.
|
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
// //
|
|
||||||
// $servers = $this->cache->get('servers', function () {
|
|
||||||
// return [];
|
|
||||||
// });
|
|
||||||
|
|
||||||
$servers = Status::module()->get();
|
|
||||||
|
|
||||||
return $this->success($servers);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a newly created resource in storage.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function store(Request $request, Status $server)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
$request->validate([
|
|
||||||
'name' => 'required|string',
|
|
||||||
'ip' => 'sometimes|ip',
|
|
||||||
// status only allow online or offline
|
|
||||||
'status' => 'required|in:online,offline,maintenance',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$server = $server->create([
|
|
||||||
'name' => $request->name,
|
|
||||||
'ip' => $request->ip,
|
|
||||||
'status' => $request->status,
|
|
||||||
'module_id' => auth('remote')->id()
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $this->success($server);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @param int $id
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function update(StatusRequest $request, Status $server)
|
|
||||||
{
|
|
||||||
// only allow name,ip,status
|
|
||||||
$request->validate([
|
|
||||||
'name' => 'sometimes|string',
|
|
||||||
'ip' => 'sometimes|ip',
|
|
||||||
'status' => 'sometimes|in:online,offline,maintenance',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$server->update($request->only(['name', 'ip', 'status']));
|
|
||||||
|
|
||||||
return $this->updated($server);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*
|
|
||||||
* @param int $id
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function destroy(Status $status)
|
|
||||||
{
|
|
||||||
// delete
|
|
||||||
$status->provider()->delete();
|
|
||||||
return $this->deleted();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,61 +7,7 @@
|
|||||||
|
|
||||||
class ServerController extends Controller
|
class ServerController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
public function __invoke() {
|
||||||
* Display a listing of the resource.
|
return $this->success(Cache::get('servers', []));
|
||||||
*
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
// get all servers from cache
|
|
||||||
// $servers = Cache::remember('servers', now()->addMinutes(5), function () {
|
|
||||||
// return \App\Models\Server::all();
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a newly created resource in storage.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display the specified resource.
|
|
||||||
*
|
|
||||||
* @param int $id
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function show($id)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @param int $id
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function update(Request $request, $id)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the specified resource from storage.
|
|
||||||
*
|
|
||||||
* @param int $id
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function destroy($id)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,20 +34,35 @@ public function __construct()
|
|||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
Module::whereNotNull('url')->chunk(100, function ($modules) {
|
Module::whereNotNull('url')->chunk(100, function ($modules) {
|
||||||
|
$servers = [];
|
||||||
|
|
||||||
foreach ($modules as $module) {
|
foreach ($modules as $module) {
|
||||||
$http = Http::remote($module->api_token, $module->url);
|
$http = Http::remote($module->api_token, $module->url);
|
||||||
// dd($module->url);
|
// dd($module->url);
|
||||||
$response = $http->get('remote');
|
$response = $http->get('remote');
|
||||||
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
Cache::set('module_' . $module->id, $response->status());
|
$json = $response->json();
|
||||||
|
|
||||||
|
if (isset($json['data']['servers'])) {
|
||||||
|
// 只保留 name, status
|
||||||
|
$servers = array_merge($servers, array_map(function ($server) {
|
||||||
|
return [
|
||||||
|
'name' => $server['name'],
|
||||||
|
'status' => $server['status'],
|
||||||
|
'updated_at' => $server['updated_at'],
|
||||||
|
];
|
||||||
|
}, $json['data']['servers']));
|
||||||
|
}
|
||||||
// $module->update([
|
// $module->update([
|
||||||
// 'data' => $response->json()
|
// 'data' => $response->json()
|
||||||
// ]);
|
// ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cache servers
|
||||||
|
Cache::put('servers', $servers, now()->addMinutes(10));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use App\Models\Module\Provider;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::create('server_status', function (Blueprint $table) {
|
|
||||||
$table->id();
|
|
||||||
|
|
||||||
$table->string('name');
|
|
||||||
|
|
||||||
$table->string('ip')->nullable();
|
|
||||||
|
|
||||||
$table->string('status');
|
|
||||||
|
|
||||||
$table->string('module_id')->index();
|
|
||||||
$table->foreign('module_id')->references('id')->on('modules')->onDelete('cascade');
|
|
||||||
|
|
||||||
|
|
||||||
$table->timestamps();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('server_status');
|
|
||||||
}
|
|
||||||
};
|
|
@ -4,12 +4,14 @@
|
|||||||
use App\Http\Controllers\User\DropController;
|
use App\Http\Controllers\User\DropController;
|
||||||
use App\Http\Controllers\User\TaskController;
|
use App\Http\Controllers\User\TaskController;
|
||||||
use App\Http\Controllers\Remote\ModuleController;
|
use App\Http\Controllers\Remote\ModuleController;
|
||||||
|
use App\Http\Controllers\ServerController;
|
||||||
use App\Http\Controllers\UserController;
|
use App\Http\Controllers\UserController;
|
||||||
use App\Http\Controllers\User\WorkOrder\ReplyController;
|
use App\Http\Controllers\User\WorkOrder\ReplyController;
|
||||||
use App\Http\Controllers\User\WorkOrder\WorkOrderController;
|
use App\Http\Controllers\User\WorkOrder\WorkOrderController;
|
||||||
|
|
||||||
Route::name('api.')->middleware(['api', 'auth:sanctum'])->group(function () {
|
Route::name('api.')->middleware(['api', 'auth:sanctum'])->group(function () {
|
||||||
Route::apiResource('users', UserController::class);
|
Route::apiResource('users', UserController::class);
|
||||||
|
Route::get('servers', ServerController::class);
|
||||||
|
|
||||||
|
|
||||||
Route::apiResource('drops', DropController::class);
|
Route::apiResource('drops', DropController::class);
|
||||||
|
Loading…
Reference in New Issue
Block a user