feat: app

This commit is contained in:
hashbro
2026-10-05 06:12:43 +08:00
parent e654f65cf9
commit cb92baa395
32 changed files with 3583 additions and 1019 deletions
+10 -10
View File
@@ -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', '.*');