Added linux script
This commit is contained in:
parent
f639f4ee57
commit
662cf9bcd2
|
@ -5,6 +5,7 @@
|
||||||
+ Fontawesome icon match the single file mime-type.
|
+ Fontawesome icon match the single file mime-type.
|
||||||
+ Enable audio player with video.js.
|
+ Enable audio player with video.js.
|
||||||
+ Video and audio now starts with volume at 50%.
|
+ Video and audio now starts with volume at 50%.
|
||||||
|
+ Added linux script to allow uploads from linux screenshot tools.
|
||||||
+ Minor layout fixes.
|
+ Minor layout fixes.
|
||||||
|
|
||||||
## v2.2
|
## v2.2
|
||||||
|
|
|
@ -351,10 +351,9 @@ class UserController extends Controller
|
||||||
return $response->withRedirect($request->getHeaderLine('HTTP_REFERER'));
|
return $response->withRedirect($request->getHeaderLine('HTTP_REFERER'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$base_url = $this->settings['base_url'];
|
|
||||||
$json = [
|
$json = [
|
||||||
'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
|
'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
|
||||||
'RequestURL' => "$base_url/upload",
|
'RequestURL' => route('upload'),
|
||||||
'FileFormName' => 'upload',
|
'FileFormName' => 'upload',
|
||||||
'Arguments' => [
|
'Arguments' => [
|
||||||
'file' => '$filename$',
|
'file' => '$filename$',
|
||||||
|
@ -371,6 +370,41 @@ class UserController extends Controller
|
||||||
->withJson($json, 200, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
|
->withJson($json, 200, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
* @param Response $response
|
||||||
|
* @param $args
|
||||||
|
* @return Response
|
||||||
|
* @throws NotFoundException
|
||||||
|
* @throws UnauthorizedException
|
||||||
|
*/
|
||||||
|
public function getUploaderScriptFile(Request $request, Response $response, $args): Response
|
||||||
|
{
|
||||||
|
$user = $this->database->query('SELECT * FROM `users` WHERE `id` = ? LIMIT 1', $args['id'])->fetch();
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
|
throw new NotFoundException($request, $response);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->id !== Session::get('user_id') && !Session::get('admin', false)) {
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->token === null || $user->token === '') {
|
||||||
|
Session::alert('You don\'t have a personal upload token. (Click the update token button and try again)', 'danger');
|
||||||
|
return $response->withRedirect($request->getHeaderLine('HTTP_REFERER'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->view->render($response->withHeader('Content-Disposition', 'attachment;filename="xbackbone_uploader_' . $user->username . '.sh"'),
|
||||||
|
'scripts/xbackbone_uploader.sh.template',
|
||||||
|
[
|
||||||
|
'username' => $user->username,
|
||||||
|
'upload_url' => route('upload'),
|
||||||
|
'token' => $user->token,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -19,6 +19,7 @@ $app->group('', function () {
|
||||||
$this->post('/profile/{id}', \App\Controllers\UserController::class . ':profileEdit')->setName('profile.update');
|
$this->post('/profile/{id}', \App\Controllers\UserController::class . ':profileEdit')->setName('profile.update');
|
||||||
$this->post('/user/{id}/refreshToken', \App\Controllers\UserController::class . ':refreshToken')->setName('refreshToken');
|
$this->post('/user/{id}/refreshToken', \App\Controllers\UserController::class . ':refreshToken')->setName('refreshToken');
|
||||||
$this->get('/user/{id}/config/sharex', \App\Controllers\UserController::class . ':getShareXconfigFile')->setName('config.sharex');
|
$this->get('/user/{id}/config/sharex', \App\Controllers\UserController::class . ':getShareXconfigFile')->setName('config.sharex');
|
||||||
|
$this->get('/user/{id}/config/script', \App\Controllers\UserController::class . ':getUploaderScriptFile')->setName('config.script');
|
||||||
|
|
||||||
$this->post('/upload/{id}/publish', \App\Controllers\UploadController::class . ':togglePublish')->setName('upload.publish');
|
$this->post('/upload/{id}/publish', \App\Controllers\UploadController::class . ':togglePublish')->setName('upload.publish');
|
||||||
$this->post('/upload/{id}/unpublish', \App\Controllers\UploadController::class . ':togglePublish')->setName('upload.unpublish');
|
$this->post('/upload/{id}/unpublish', \App\Controllers\UploadController::class . ':togglePublish')->setName('upload.unpublish');
|
||||||
|
|
65
resources/templates/scripts/xbackbone_uploader.sh.template
Executable file
65
resources/templates/scripts/xbackbone_uploader.sh.template
Executable file
|
@ -0,0 +1,65 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
am_i_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "Please run as root or with sudo";
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
create_desktop_entry () {
|
||||||
|
cat << "EOF" > "/usr/share/applications/xbackbone-uploader-usr_{{ username }}.desktop"
|
||||||
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
|
Exec=&EXEC& %U
|
||||||
|
Type=Application
|
||||||
|
Terminal=false;
|
||||||
|
Comment=Uploader script for XBackBone ({{ username }})
|
||||||
|
Name=XBackBone Uploader ({{ username }})
|
||||||
|
GenericName=File Uploader
|
||||||
|
StartupNotify=false
|
||||||
|
Categories=Graphics;
|
||||||
|
MimeType=image/bmp;image/jpeg;image/gif;image/png;image/tiff;image/x-bmp;image/x-ico;image/x-png;image/x-pcx;image/x-tga;image/xpm;image/svg+xml;
|
||||||
|
NoDisplay=false
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sed -i "s:&EXEC&:${1}:g" "/usr/share/applications/xbackbone-uploader-usr_{{ username }}.desktop"
|
||||||
|
echo "Desktop entry created!";
|
||||||
|
}
|
||||||
|
|
||||||
|
upload () {
|
||||||
|
RESPONSE="$(curl -F "token={{ token }}" -F "upload=@${1}" {{ upload_url }})";
|
||||||
|
|
||||||
|
if [[ "$(echo "${RESPONSE}" | jq -r '.message')" == "OK." ]]; then
|
||||||
|
URL="$(echo "${RESPONSE}" | jq -r '.url')";
|
||||||
|
echo "${URL}" | xclip -selection c;
|
||||||
|
notify-send "Upload completed!" "${URL}";
|
||||||
|
else
|
||||||
|
notify-send "Error!" "$(echo "${RESPONSE}" | jq -r '.message')";
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check () {
|
||||||
|
if [ ! -x "$(command -v xclip)" ]; then
|
||||||
|
echo "xclip command not found."
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "$(command -v curl)" ]; then
|
||||||
|
echo "curl command not found."
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x "$(command -v notify-send)" ]; then
|
||||||
|
echo "notify-send command not found."
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check
|
||||||
|
if [[ "${1}" == "-desktop-entry" ]]; then
|
||||||
|
am_i_root
|
||||||
|
create_desktop_entry "$(realpath "${0}")";
|
||||||
|
else
|
||||||
|
upload "${1}";
|
||||||
|
fi
|
|
@ -51,7 +51,10 @@
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<label class="col-sm-2 col-form-label">{{ lang('client_config') }}</label>
|
<label class="col-sm-2 col-form-label">{{ lang('client_config') }}</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
|
<div class="btn-group">
|
||||||
<a href="{{ route('config.sharex', {'id': user.id}) }}" class="btn btn-lg btn-outline-dark"><i class="fas fa-fw fa-download"></i> ShareX Config</a>
|
<a href="{{ route('config.sharex', {'id': user.id}) }}" class="btn btn-lg btn-outline-dark"><i class="fas fa-fw fa-download"></i> ShareX Config</a>
|
||||||
|
<a href="{{ route('config.script', {'id': user.id}) }}" class="btn btn-lg btn-outline-danger"><i class="fas fa-fw fa-download"></i> Linux Script</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if not profile %}
|
{% if not profile %}
|
||||||
|
|
Loading…
Reference in a new issue