hopefully fix issues with empty extension
Docker / build (push) Waiting to run Details

This commit is contained in:
Chris W 2024-01-14 11:48:45 -07:00
parent c4fc33a976
commit 42279dcfb5
2 changed files with 26 additions and 17 deletions

View File

@ -3,10 +3,10 @@ module Paste69
class PasteController < ATH::Controller class PasteController < ATH::Controller
def initialize(@config : Paste69::ConfigManager, @utils : Paste69::UtilsService, @url_encoder : Paste69::UrlEncoder, @db : Paste69::DBService, @s3_client : Paste69::S3Client); end def initialize(@config : Paste69::ConfigManager, @utils : Paste69::UtilsService, @url_encoder : Paste69::UrlEncoder, @db : Paste69::DBService, @s3_client : Paste69::S3Client); end
@[ARTA::Get("/{id}")] @[ARTA::Get("/{id}", requirements: {"id" => /.+/})]
@[ARTA::Post("/{id}")] @[ARTA::Post("/{id}", requirements: {"id" => /.+/})]
@[ARTA::Get("/{secret}/{id}")] @[ARTA::Get("/{secret}/{id}", requirements: {"id" => /.+/})]
@[ARTA::Post("/{secret}/{id}")] @[ARTA::Post("/{secret}/{id}", requirements: {"id" => /.+/})]
def get_paste(req : ATH::Request, id : String, secret : String? = nil) : ATH::Response def get_paste(req : ATH::Request, id : String, secret : String? = nil) : ATH::Response
path = id.split("/").first path = id.split("/").first
sufs = File.extname(path) sufs = File.extname(path)
@ -136,9 +136,14 @@ module Paste69
end end
if form.has_key?("file") if form.has_key?("file")
_filename, body = form["file"] filename, body = form["file"]
_, filename = form["filename"] || {nil, nil} _, ext = form["ext"] || {nil, nil}
filename = filename ? String.new(filename) : nil
if ext
filename = filename ? File.basename(filename, File.extname(filename)) : "file"
ext = String.new(ext).lstrip(".")
filename = "#{filename}.#{ext}"
end
@utils.store_file( @utils.store_file(
body, body,

View File

@ -17,25 +17,29 @@ Be sure to check out the <a href="https://github.com/watzon/paste69">source code
and the <a href="https://git.0x0.st/mia/0x0">original source</a> from mia. and the <a href="https://git.0x0.st/mia/0x0">original source</a> from mia.
HTTP POST files here: HTTP POST files here:
curl -F'file=@yourfile.png' {{ fhost_url }} curl -i -F'file=@yourfile.png' {{ fhost_url }}
You can also POST remote URLs: You can also POST remote URLs:
curl -F'url=http://example.com/image.jpg' {{ fhost_url }} curl -i -F'url=http://example.com/image.jpg' {{ fhost_url }}
If you don't want the resulting URL to be easy to guess: If you don't want the resulting URL to be easy to guess:
curl -F'file=@yourfile.png' -Fsecret= {{ fhost_url }} curl -i -F'file=@yourfile.png' -Fsecret= {{ fhost_url }}
curl -F'url=http://example.com/image.jpg' -Fsecret= {{ fhost_url }} curl -i -F'url=http://example.com/image.jpg' -Fsecret= {{ fhost_url }}
Or you can shorten URLs: Or you can shorten URLs:
curl -F'shorten=http://example.com/some/long/url' {{ fhost_url }} curl -i -F'shorten=http://example.com/some/long/url' {{ fhost_url }}
It is possible to append your own file name to the URL: In some cases (like when piping STDOUT), you may need to add an extension manually. Otherwise
the extension will default to .txt or .bin:
curl -i -F'file=@-' -Fext=html {{ fhost_url }}
It is also possible to append your own file name to the URL:
{{ fhost_url }}/aaa.jpg/image.jpeg {{ fhost_url }}/aaa.jpg/image.jpeg
File URLs are valid for at least 30 days and up to a year (see below). File URLs are valid for at least 30 days and up to a year (see below).
Shortened URLs do not expire. Shortened URLs do not expire.
Files can be set to expire sooner by adding an "expires" parameter (in hours) Files can be set to expire sooner by adding an "expires" parameter (in hours)
curl -F'file=@yourfile.png' -Fexpires=24 {{ fhost_url }} curl -i -F'file=@yourfile.png' -Fexpires=24 {{ fhost_url }}
OR by setting "expires" to a timestamp in epoch milliseconds OR by setting "expires" to a timestamp in epoch milliseconds
curl -F'file=@yourfile.png' -Fexpires=1681996320000 {{ fhost_url }} curl -i -F'file=@yourfile.png' -Fexpires=1681996320000 {{ fhost_url }}
Expired files won't be removed immediately, but will be removed as part of Expired files won't be removed immediately, but will be removed as part of
the next purge. the next purge.
@ -45,9 +49,9 @@ the HTTP response header includes an X-Token field. You can use this
to perform management operations on the file. to perform management operations on the file.
To delete the file immediately: To delete the file immediately:
curl -Ftoken=token_here -Fdelete= {{ fhost_url }}/abc.txt curl -i -Ftoken=token_here -Fdelete= {{ fhost_url }}/abc.txt
To change the expiration date (see above): To change the expiration date (see above):
curl -Ftoken=token_here -Fexpires=3 {{ fhost_url }}/abc.txt curl -i -Ftoken=token_here -Fexpires=3 {{ fhost_url }}/abc.txt
{% set max_size = config["max_content_length"]|filesizeformat(true) %} {% set max_size = config["max_content_length"]|filesizeformat(true) %}
Maximum file size: {{ max_size }} Maximum file size: {{ max_size }}