ClientController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Controllers;
  3. use Psr\Http\Message\ResponseInterface as Response;
  4. use Psr\Http\Message\ServerRequestInterface as Request;
  5. use Slim\Exception\HttpNotFoundException;
  6. use Slim\Exception\HttpUnauthorizedException;
  7. class ClientController extends Controller
  8. {
  9. /**
  10. * @param Request $request
  11. * @param Response $response
  12. * @param int $id
  13. *
  14. * @throws HttpNotFoundException
  15. * @throws HttpUnauthorizedException
  16. *
  17. * @return Response
  18. */
  19. public function getShareXConfig(Request $request, Response $response, int $id): Response
  20. {
  21. $user = $this->getUser($request, $id, true);
  22. if ($user->token === null || $user->token === '') {
  23. $this->session->alert(lang('no_upload_token'), 'danger');
  24. return redirect($response, $request->getHeaderLine('Referer'));
  25. }
  26. $json = [
  27. 'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
  28. 'RequestURL' => route('upload'),
  29. 'FileFormName' => 'upload',
  30. 'Arguments' => [
  31. 'file' => '$filename$',
  32. 'text' => '$input$',
  33. 'token' => $user->token,
  34. ],
  35. 'URL' => '$json:url$',
  36. 'ThumbnailURL' => '$json:url$/raw',
  37. 'DeletionURL' => '$json:url$/delete/'.$user->token,
  38. ];
  39. return json($response, $json, 200, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
  40. ->withHeader('Content-Disposition', 'attachment;filename="'.$user->username.'-ShareX.sxcu"');
  41. }
  42. /**
  43. * @param Request $request
  44. * @param Response $response
  45. * @param int $id
  46. *
  47. * @throws HttpNotFoundException
  48. * @throws HttpUnauthorizedException
  49. * @throws \Twig\Error\LoaderError
  50. * @throws \Twig\Error\RuntimeError
  51. * @throws \Twig\Error\SyntaxError
  52. *
  53. * @return Response
  54. */
  55. public function getBashScript(Request $request, Response $response, int $id): Response
  56. {
  57. $user = $this->getUser($request, $id, true);
  58. if ($user->token === null || $user->token === '') {
  59. $this->session->alert(lang('no_upload_token'), 'danger');
  60. return redirect($response, $request->getHeaderLine('Referer'));
  61. }
  62. return view()->render($response->withHeader('Content-Disposition', 'attachment;filename="xbackbone_uploader_'.$user->username.'.sh"'),
  63. 'scripts/xbackbone_uploader.sh.twig',
  64. [
  65. 'username' => $user->username,
  66. 'upload_url' => route('upload'),
  67. 'token' => $user->token,
  68. ]
  69. );
  70. }
  71. }