Skip to content
Snippets Groups Projects

Resolve "Increase readability of Proxy URLs"

Merged Dominik Hebeler requested to merge 22-increase-readability-of-proxy-urls into master
1 file
+ 9
8
Compare changes
  • Side-by-side
  • Inline
+ 33
18
@@ -23,28 +23,43 @@ Route::group(['prefix' => 'download'], function () {
Route::get('/', 'DownloadController@download')->name("download");
});
Route::get('/', function () {
// Route for form submissions
Route::get('formget/{password}/{validUntil}/{url}', 'ProxyController@formget')
->name('proxy-formget')
->where('password', '[A-Fa-f0-9]{64}')
->where('url', '.*');
// Route without Proxy Header
Route::get('p/{host?}/{path?}', 'ProxyController@proxy')->name('proxy')->where('host', '[^\.]+(\.[^\.]+)+')->where('path', '(.*)');
// Route with Proxy Header
Route::get('{host?}/{path?}', 'ProxyController@proxyPage')->name('proxy-wrapper-page')->where('host', '[^\.]+(\.[^\.]+)+')->where('path', '(.*)');
Route::post('{host?}/{path?}', function (Request $request) {
if (env("APP_ENV", "") !== "production") {
return view("development");
} else {
return redirect("https://metager.de");
$validatedData = $request->validate([
'url' => 'required|url|max:255',
]);
$url = $request->input('url', 'https://metager.de');
return redirect(\App\Http\Controllers\ProxyController::generateProxyWrapperUrl($url));
}else{
abort(400);
}
});
})->where('host', '[^\.]+(\.[^\.]+)+')->where('path', '(.*)');
Route::get('index.css', 'BrowserVerification@verifyCss');
Route::post('/', function (Request $request) {
$validatedData = $request->validate([
'url' => 'required|url|max:255',
]);
$url = $request->input('url', 'https://metager.de');
$password = md5(env('PROXY_PASSWORD') . $url);
$url = base64_encode(str_rot13($url));
$target = urlencode(str_replace("/", "<<SLASH>>", $url));
return redirect(action('ProxyController@proxyPage', ['password' => $password, 'url' => $target]));
});
/**
* This is our old Proxy route
* We will keep it temporarily to help users
* migrate to the new ones and redirect to the new one.
* 15.01.2021
*/
Route::get('{password}/{url}', function(Request $request, $password, $url){
$targetUrl = str_replace("<<SLASH>>", "/", $url);
$targetUrl = str_rot13(base64_decode($targetUrl));
if (strpos($targetUrl, URL::to('/')) === 0) {
return redirect($targetUrl);
}
Route::get('{password}/{url}', 'ProxyController@proxyPage')->middleware('throttle:60:1')->middleware('checkpw');
return redirect(\App\Http\Controllers\ProxyController::generateProxyWrapperUrl($targetUrl));
})->middleware('throttle:60:1')->middleware('checkpw');
# Route that triggers streaming of Download
Route::get('proxy/{password}/{id}/{url}', 'ProxyController@proxy')->middleware('checkpw:true');
Route::post('proxy/{password}/{id}/{url}', 'ProxyController@streamFile')->middleware('checkpw:true');
Loading