diff --git a/app/Http/Controllers/Admin/ClientController.php b/app/Http/Controllers/Admin/ClientController.php
new file mode 100644
index 0000000..be4bab8
--- /dev/null
+++ b/app/Http/Controllers/Admin/ClientController.php
@@ -0,0 +1,70 @@
+count();
+ return view('admin.clients.index', ['clients' => $clients, 'count' => $count]);
+ }
+
+ public function create(Request $request): View
+ {
+ return view('admin.clients.create');
+ }
+
+ public function edit(Client $client): View
+ {
+ return view('admin.clients.edit', ['client' => $client]);
+ }
+
+ public function store(Request $request): RedirectResponse
+ {
+ $request->validate([
+ 'name' => 'required|max:80',
+ 'arch' => 'required|max:30',
+ 'url' => 'required',
+ 'author' => 'required|max:30',
+ ]);
+ $request_data = $request->toArray();
+ Client::create($request_data);
+ return redirect()->route('admin.clients.index')->with('success', '创建成功');
+ }
+
+ public function update(Request $request, Client $client)
+ {
+ $request->validate([
+ 'name' => 'required|max:80',
+ 'arch' => 'required|max:30',
+ 'url' => 'required',
+ 'author' => 'required|max:30',
+ ]);
+
+ $data = $request->all();
+
+ $client->update($data);
+
+ return redirect()->route('admin.clients.index')->with('success', '客户端更新成功');
+ }
+
+ public function destroy(Client $client)
+ {
+ $client->delete();
+
+ return redirect()->route('admin.clients.index')->with('success', '客户端删除成功');
+ }
+}
diff --git a/app/Http/Controllers/Api/ClientController.php b/app/Http/Controllers/Api/ClientController.php
new file mode 100644
index 0000000..3abb6a3
--- /dev/null
+++ b/app/Http/Controllers/Api/ClientController.php
@@ -0,0 +1,17 @@
+success($clients);
+ }
+}
diff --git a/app/Models/Client.php b/app/Models/Client.php
new file mode 100644
index 0000000..b58d18a
--- /dev/null
+++ b/app/Models/Client.php
@@ -0,0 +1,15 @@
+id();
+ $table->string('name');
+ $table->string('arch');
+ $table->string('url');
+ $table->string('author');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('clients');
+ }
+};
diff --git a/dump.rdb b/dump.rdb
new file mode 100644
index 0000000..f3e0dd5
Binary files /dev/null and b/dump.rdb differ
diff --git a/resources/js/views/Downloads.vue b/resources/js/views/Downloads.vue
index 1fc1b00..5839547 100644
--- a/resources/js/views/Downloads.vue
+++ b/resources/js/views/Downloads.vue
@@ -6,6 +6,7 @@
名称 |
架构 |
+ 作者 |
下载 |
@@ -14,6 +15,7 @@
{{ i.name }} |
{{ i.arch }} |
+ {{ i.author }} |
下载
|
@@ -24,119 +26,11 @@
diff --git a/resources/views/admin/clients/create.blade.php b/resources/views/admin/clients/create.blade.php
new file mode 100644
index 0000000..24fd9e4
--- /dev/null
+++ b/resources/views/admin/clients/create.blade.php
@@ -0,0 +1,19 @@
+
+ 创建客户端
+
+
diff --git a/resources/views/admin/clients/edit.blade.php b/resources/views/admin/clients/edit.blade.php
new file mode 100644
index 0000000..cacfd5c
--- /dev/null
+++ b/resources/views/admin/clients/edit.blade.php
@@ -0,0 +1,20 @@
+
+ 编辑客户端
+
+
diff --git a/resources/views/admin/clients/index.blade.php b/resources/views/admin/clients/index.blade.php
new file mode 100644
index 0000000..cbb5d16
--- /dev/null
+++ b/resources/views/admin/clients/index.blade.php
@@ -0,0 +1,45 @@
+
+ 客户端
+
+ 新建客户端
+
+
+ 总计: {{ $count }}
+
+
+
+
+
+ ID |
+ 名称 |
+ 架构 |
+ 下载链接 |
+ 操作 |
+
+
+
+
+
+ @foreach ($clients as $client)
+
+ {{ $client->id }} |
+ {{ $client->name }} |
+ {{ $client->arch }} |
+
+ {{ $client->url }}
+ |
+
+ 编辑
+
+ |
+
+ @endforeach
+
+
+
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php
index 0fa4226..8a99966 100644
--- a/resources/views/layouts/app.blade.php
+++ b/resources/views/layouts/app.blade.php
@@ -39,6 +39,9 @@
服务器
+
+ 客户端
+
-
diff --git a/routes/admin.php b/routes/admin.php
index 084cd38..76b9e1e 100644
--- a/routes/admin.php
+++ b/routes/admin.php
@@ -2,11 +2,9 @@
use App\Http\Controllers\Admin\TunnelController;
use App\Http\Controllers\Admin\IndexController;
-use App\Http\Controllers\Admin\ReplyController;
-use App\Http\Controllers\Admin\ReviewController;
use App\Http\Controllers\Admin\ServerController;
use App\Http\Controllers\Admin\UserController;
-use App\Http\Controllers\Admin\WorkOrderController;
+use App\Http\Controllers\Admin\ClientController;
use Illuminate\Support\Facades\Route;
Route::withoutMiddleware('auth:admin')->group(function() {
@@ -21,6 +19,7 @@
Route::resource('users', UserController::class);
Route::resource('servers', ServerController::class);
Route::resource('tunnels', TunnelController::class);
+ Route::resource('clients', ClientController::class);
Route::get('/logout', [IndexController::class, 'logout'])->name('logout');
diff --git a/routes/api.php b/routes/api.php
index 770e84a..d4f0681 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -9,6 +9,7 @@
use App\Http\Controllers\Api\TicketController;
use App\Http\Controllers\Api\TrafficController;
use App\Http\Controllers\Application\UserController as ApplicationUserController;
+use App\Http\Controllers\Api\ClientController;
Route::prefix('tunnel')->name('api.tunnel.')->group(function () {
Route::post('/handler/{key}', [PortManagerController::class, 'handler'])->name('handler');
@@ -21,6 +22,8 @@
Route::post('tunnels/{tunnel}/close', [TunnelController::class, 'close']);
Route::apiResource('servers', ServerController::class);
+ Route::apiResource('clients', ClientController::class);
+
Route::get('traffic', [TrafficController::class, 'free']);
Route::post('traffic', [TrafficController::class, 'sign']);