Add upload_file.sh and update file-upload view accordingly
This commit is contained in:
parent
669325d029
commit
36105e86a5
18
assets/files/upload_file.sh
Executable file
18
assets/files/upload_file.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
local_file=$1
|
||||||
|
token=$(cat $HOME/.ily_token)
|
||||||
|
|
||||||
|
if test -z "$2"; then
|
||||||
|
curl -X POST -H 'Accept: text/plain' \
|
||||||
|
-H "Authorization: $token" \
|
||||||
|
-F 'upload=@'$local_file \
|
||||||
|
-F 'ttl=2592000' \
|
||||||
|
https://ily.li/
|
||||||
|
else
|
||||||
|
curl -X PUT -H 'Accept: text/plain' \
|
||||||
|
-H "Authorization: $token" \
|
||||||
|
-F 'upload=@'$local_file \
|
||||||
|
-F 'ttl=2592000' \
|
||||||
|
"https://ily.li/$2"
|
||||||
|
fi
|
@ -15,6 +15,7 @@ const SLUG_DICTIONARY = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012
|
|||||||
export default class FileController extends Controller {
|
export default class FileController extends Controller {
|
||||||
routes(): void {
|
routes(): void {
|
||||||
this.get('/files/upload', this.getFileUploader, 'file-upload', REQUIRE_AUTH_MIDDLEWARE);
|
this.get('/files/upload', this.getFileUploader, 'file-upload', REQUIRE_AUTH_MIDDLEWARE);
|
||||||
|
this.get('/files/upload/script', this.downloadLinuxScript, 'linux-script');
|
||||||
this.post('/files/post', this.postFileFrontend, 'post-file-frontend', REQUIRE_AUTH_MIDDLEWARE, FILE_UPLOAD_FORM_MIDDLEWARE);
|
this.post('/files/post', this.postFileFrontend, 'post-file-frontend', REQUIRE_AUTH_MIDDLEWARE, FILE_UPLOAD_FORM_MIDDLEWARE);
|
||||||
this.get('/files/:page([0-9]+)?', this.getFileManager, 'file-manager', REQUIRE_AUTH_MIDDLEWARE);
|
this.get('/files/:page([0-9]+)?', this.getFileManager, 'file-manager', REQUIRE_AUTH_MIDDLEWARE);
|
||||||
this.get('/files/delete/:slug', this.deleteFile, 'delete-file-frontend', REQUIRE_AUTH_MIDDLEWARE);
|
this.get('/files/delete/:slug', this.deleteFile, 'delete-file-frontend', REQUIRE_AUTH_MIDDLEWARE);
|
||||||
@ -34,6 +35,10 @@ export default class FileController extends Controller {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected async downloadLinuxScript(req: Request, res: Response): Promise<void> {
|
||||||
|
res.download('assets/files/upload_file.sh', 'upload_file.sh');
|
||||||
|
}
|
||||||
|
|
||||||
protected async getFileManager(req: Request, res: Response): Promise<void> {
|
protected async getFileManager(req: Request, res: Response): Promise<void> {
|
||||||
res.render('file-manager', {
|
res.render('file-manager', {
|
||||||
files: await FileModel.paginateForUser(req, 100, req.models.user!.id!),
|
files: await FileModel.paginateForUser(req, 100, req.models.user!.id!),
|
||||||
|
@ -46,55 +46,72 @@
|
|||||||
<h2>Setup a desktop utility</h2>
|
<h2>Setup a desktop utility</h2>
|
||||||
<p>There may be a desktop client at some point. For now, if you're an advanced user, you can setup
|
<p>There may be a desktop client at some point. For now, if you're an advanced user, you can setup
|
||||||
scripts/macros.</p>
|
scripts/macros.</p>
|
||||||
<p>
|
|
||||||
To upload the file, you must:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>Set the "Authorization" HTTP header to an auth token (generate one with the form below)</li>
|
|
||||||
<li>Make a proper file upload request either with the method "POST" on / (auto-generates a short url) or
|
|
||||||
"PUT" (choose the target url you want, alphanum)
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<table class="data-table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Field name</th>
|
|
||||||
<th>Description</th>
|
|
||||||
<th>Optional?</th>
|
|
||||||
<th>Example</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
<hr>
|
||||||
<tr>
|
<section>
|
||||||
<td>upload</td>
|
<h3>First alternative: sh script (native on linux)</h3>
|
||||||
<td>The file field</td>
|
<p>If you have the sh shell on your machine (i.e. you are on linux, git bash on windows...), you can
|
||||||
<td>No</td>
|
<a href="{{ route('linux-script') }}">download this script</a>.</p>
|
||||||
<td>-</td>
|
<p>You must put a valid auth token (generated in the form at the bottom of this page) in a .ily_token file in your home directory ($HOME/.ily_token).</p>
|
||||||
</tr>
|
<p>Examples:</p>
|
||||||
|
<pre>upload_script.sh path/to/file</pre>
|
||||||
|
<pre>upload_script.sh path/to/file my_very_important_file.png</pre>
|
||||||
|
</section>
|
||||||
|
|
||||||
<tr>
|
<hr>
|
||||||
<td>ttl</td>
|
|
||||||
<td>How much time (in seconds) to keep the file</td>
|
<section>
|
||||||
<td>Yes</td>
|
<h3>Second alternative: implement your own client</h3>
|
||||||
<td>0 (never delete), 30 (delete after 30s)</td>
|
<p>
|
||||||
</tr>
|
To upload the file, you must:
|
||||||
</tbody>
|
</p>
|
||||||
</table>
|
<ul>
|
||||||
<p>Example with curl:</p>
|
<li>Set the "Authorization" HTTP header to an auth token (generate one with the form below)</li>
|
||||||
<pre>curl -X POST -H 'Accept: application/json' \
|
<li>Make a proper file upload request either with the method "POST" on / (auto-generates a short
|
||||||
|
url) or "PUT" (choose the target url you want, alphanum)
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<table class="data-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Field name</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Optional?</th>
|
||||||
|
<th>Example</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>upload</td>
|
||||||
|
<td>The file field</td>
|
||||||
|
<td>No</td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>ttl</td>
|
||||||
|
<td>How much time (in seconds) to keep the file</td>
|
||||||
|
<td>Yes</td>
|
||||||
|
<td>0 (never delete), 30 (delete after 30s)</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p>Example with curl:</p>
|
||||||
|
<pre>curl -X POST -H 'Accept: application/json' \
|
||||||
-H "Authorization: very_secret_and_personal_token" \
|
-H "Authorization: very_secret_and_personal_token" \
|
||||||
-F 'upload=@path/to/local/file' \
|
-F 'upload=@path/to/local/file' \
|
||||||
https://ily.li/</pre>
|
https://ily.li/</pre>
|
||||||
<pre>curl -X PUT -H 'Accept: application/json' \
|
<pre>curl -X PUT -H 'Accept: application/json' \
|
||||||
-H "Authorization: very_secret_and_personal_token" \
|
-H "Authorization: very_secret_and_personal_token" \
|
||||||
-F 'upload=@path/to/local/file' \
|
-F 'upload=@path/to/local/file' \
|
||||||
https://ily.li/my_very_important_file.png</pre>
|
https://ily.li/my_very_important_file.png</pre>
|
||||||
<pre>curl -X POST -H 'Accept: application/json' \
|
<pre>curl -X POST -H 'Accept: application/json' \
|
||||||
-H "Authorization: very_secret_and_personal_token" \
|
-H "Authorization: very_secret_and_personal_token" \
|
||||||
-F 'upload=@path/to/local/file' \
|
-F 'upload=@path/to/local/file' \
|
||||||
-F 'ttl=30' \
|
-F 'ttl=30' \
|
||||||
https://ily.li/</pre>
|
https://ily.li/</pre>
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -130,8 +147,7 @@ https://ily.li/</pre>
|
|||||||
<td>{{ token.created_at.toISOString() }}</td>
|
<td>{{ token.created_at.toISOString() }}</td>
|
||||||
<td>{{ token.used_at.toISOString() }}</td>
|
<td>{{ token.used_at.toISOString() }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ route('revoke-token', token.id) }}" class="button danger"><i
|
<a href="{{ route('revoke-token', token.id) }}" class="button danger"><i data-feather="trash"></i> Revoke</a>
|
||||||
data-feather="trash"></i> Revoke</a>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Loading…
Reference in New Issue
Block a user