2019-11-20 17:46:47 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Controllers;
|
|
|
|
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
|
|
use Slim\Exception\HttpNotFoundException;
|
|
|
|
use Slim\Exception\HttpUnauthorizedException;
|
|
|
|
|
|
|
|
class ClientController extends Controller
|
|
|
|
{
|
|
|
|
/**
|
2019-11-20 17:49:31 +00:00
|
|
|
* @param Request $request
|
|
|
|
* @param Response $response
|
|
|
|
* @param int $id
|
|
|
|
*
|
2019-11-20 17:46:47 +00:00
|
|
|
* @throws HttpNotFoundException
|
|
|
|
* @throws HttpUnauthorizedException
|
2019-11-20 17:49:31 +00:00
|
|
|
*
|
|
|
|
* @return Response
|
2019-11-20 17:46:47 +00:00
|
|
|
*/
|
|
|
|
public function getShareXConfig(Request $request, Response $response, int $id): Response
|
|
|
|
{
|
|
|
|
$user = $this->getUser($request, $id, true);
|
|
|
|
|
|
|
|
if ($user->token === null || $user->token === '') {
|
|
|
|
$this->session->alert(lang('no_upload_token'), 'danger');
|
2019-11-20 17:49:31 +00:00
|
|
|
|
2019-11-20 17:46:47 +00:00
|
|
|
return redirect($response, $request->getHeaderLine('Referer'));
|
|
|
|
}
|
|
|
|
|
2019-11-21 17:00:47 +00:00
|
|
|
$json = [
|
2019-11-20 17:46:47 +00:00
|
|
|
'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
|
2019-11-20 17:49:31 +00:00
|
|
|
'RequestURL' => route('upload'),
|
|
|
|
'FileFormName' => 'upload',
|
2019-11-21 17:00:47 +00:00
|
|
|
'Arguments' => [
|
2019-11-20 17:49:31 +00:00
|
|
|
'file' => '$filename$',
|
|
|
|
'text' => '$input$',
|
2019-11-20 17:46:47 +00:00
|
|
|
'token' => $user->token,
|
2019-11-21 17:00:47 +00:00
|
|
|
],
|
2019-11-20 17:49:31 +00:00
|
|
|
'URL' => '$json:url$',
|
2019-11-20 17:46:47 +00:00
|
|
|
'ThumbnailURL' => '$json:url$/raw',
|
2019-11-20 17:49:31 +00:00
|
|
|
'DeletionURL' => '$json:url$/delete/'.$user->token,
|
2019-11-21 17:00:47 +00:00
|
|
|
];
|
2019-11-20 17:46:47 +00:00
|
|
|
|
|
|
|
return json($response, $json, 200, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
|
|
|
|
->withHeader('Content-Disposition', 'attachment;filename="'.$user->username.'-ShareX.sxcu"');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-11-20 17:49:31 +00:00
|
|
|
* @param Request $request
|
|
|
|
* @param Response $response
|
|
|
|
* @param int $id
|
|
|
|
*
|
2019-11-20 17:46:47 +00:00
|
|
|
* @throws HttpNotFoundException
|
|
|
|
* @throws HttpUnauthorizedException
|
|
|
|
* @throws \Twig\Error\LoaderError
|
|
|
|
* @throws \Twig\Error\RuntimeError
|
|
|
|
* @throws \Twig\Error\SyntaxError
|
2019-11-20 17:49:31 +00:00
|
|
|
*
|
|
|
|
* @return Response
|
2019-11-20 17:46:47 +00:00
|
|
|
*/
|
|
|
|
public function getBashScript(Request $request, Response $response, int $id): Response
|
|
|
|
{
|
|
|
|
$user = $this->getUser($request, $id, true);
|
|
|
|
|
|
|
|
if ($user->token === null || $user->token === '') {
|
|
|
|
$this->session->alert(lang('no_upload_token'), 'danger');
|
2019-11-20 17:49:31 +00:00
|
|
|
|
2019-11-20 17:46:47 +00:00
|
|
|
return redirect($response, $request->getHeaderLine('Referer'));
|
|
|
|
}
|
|
|
|
|
|
|
|
return view()->render($response->withHeader('Content-Disposition', 'attachment;filename="xbackbone_uploader_'.$user->username.'.sh"'),
|
|
|
|
'scripts/xbackbone_uploader.sh.twig',
|
2019-11-21 17:00:47 +00:00
|
|
|
[
|
2019-11-20 17:49:31 +00:00
|
|
|
'username' => $user->username,
|
2019-11-20 17:46:47 +00:00
|
|
|
'upload_url' => route('upload'),
|
2019-11-20 17:49:31 +00:00
|
|
|
'token' => $user->token,
|
2019-11-21 17:00:47 +00:00
|
|
|
]
|
2019-11-20 17:46:47 +00:00
|
|
|
);
|
|
|
|
}
|
2019-11-20 17:49:31 +00:00
|
|
|
}
|