2022-11-20 23:44:41 +02:00
{% set title = config["SITE_NAME"] %}
{% set fhost_url = url_for("fhost", _external=True).rstrip("/") %}
{% set max_size = config["MAX_CONTENT_LENGTH"]|filesizeformat(True) %}
2022-12-29 03:05:30 +02:00
{% set half_size = (config["MAX_CONTENT_LENGTH"]/2)|filesizeformat(True) %}
2022-11-20 23:44:41 +02:00
{% set not_allowed = config["FHOST_MIME_BLACKLIST"]|join(", ") %}
2022-12-29 03:05:30 +02:00
{% set min = config.get("FHOST_MIN_EXPIRATION", 2592000000)//86400000 %}
{% set half = ((config.get("FHOST_MIN_EXPIRATION", 2592000000)/2 + config.get("FHOST_MAX_EXPIRATION", 31536000000)/2)/86400000) %}
{% set max = config.get("FHOST_MAX_EXPIRATION", 31536000000)//86400000 %}
2022-11-20 23:44:41 +02:00
{% set unit = max_size.split(" ")[1].rjust(54) %}
2022-12-29 03:05:30 +02:00
{% set max_size = (max_size|string).split(" ")[0].rjust(27) %}
{% set half_size = (half_size|string).split(" ")[0].rjust(27) %}
2022-11-20 23:44:41 +02:00
< html >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "x-ua-compatible" content = "ie=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< title > {{ title }}< / title >
< style type = "text/css" >
@media (min-width: 768px) {
body { width: 80%; }
pre { font-size: 12px; }
}
@media (min-width: 992px) {
body { width: 70%; }
}
@media (min-width: 1200px) {
body { width: 65%; }
}
::selection {
background: #99F2B9;
color: #0E0E0E;
}
body {
background: #0E0E0E;
color: #3EE77B;
font-family: monospace;
font-size: 16px;
line-height: 1.43;
margin: 0 auto;
}
form {
margin-block: 0em;
margin-block-end: 1em;
}
form input, hr, pre {
border: 1px solid #414141;
}
form input {
background: #0E0E0E;
color: #3EE77B;
font-family: monospace;
font-size: 16px;
height: 36px;
padding: 6px 12px;
width: 100%;
}
h1 {
font-size: 48px;
}
h3 {
font-size: 32px;
}
h1, h3 {
font-weight: 500;
line-height: 1.2;
margin-top: 22px;
margin-bottom: 11px;
}
h1, h3, pre, a, a:visited {
color: #99F2B9;
}
p, pre {
margin: 0 0 11px;
}
pre {
background: #282828;
padding: 10.5px;
font-size: 15px;
}
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
< / style >
< / head >
< body >
< div class = "container" >
< h1 > {{ title }}< / h1 >
< hr >
2022-12-15 11:58:50 +02:00
< p >
2022-11-20 23:44:41 +02:00
HTTP POST files here:
< pre > curl -F'file=@yourfile.png' {{ fhost_url }}< / pre >
You can also POST remote URLs:
< pre > curl -F'url=http://example.com/image.jpg' {{ fhost_url }}< / pre >
2022-12-15 11:58:50 +02:00
If you don't want the resulting URL to be easy to guess:
< pre > curl -F'file=@yourfile.png' -Fsecret= {{ fhost_url }}< / pre >
< pre > curl -F'url=http://example.com/image.jpg' -Fsecret= {{ fhost_url }}< / pre >
2022-11-20 23:44:41 +02:00
Or you can shorten URLs:
< pre > curl -F'shorten=http://example.com/some/long/url' {{ fhost_url }}< / pre >
2022-12-15 11:58:50 +02:00
< / p >
< p >
2022-11-20 23:44:41 +02:00
Alternatively, you can use PUT:
< pre > curl -X PUT -T 'yourfile.png' {{ fhost_url }}< / pre >
2022-12-15 11:58:50 +02:00
< / p >
< p > File URLs are valid for at least 30 days and up to a year (see below).< br >
Shortened URLs do not expire.
< / p >
< p >
Files can be set to expire sooner by adding an "expires" parameter (in hours)
< pre > curl -F'file=@yourfile.png' -Fexpires=24 {{ fhost_url }}< / pre >
OR by setting "expires" to a timestamp in epoch milliseconds
< pre > curl -F'file=@yourfile.png' -Fexpires=1681996320000 {{ fhost_url }}< / pre >
2022-11-20 23:44:41 +02:00
2022-12-15 11:58:50 +02:00
< p >
Expired files won't be removed immediately, but will be removed as part of
the next purge.
< / p >
< p >
Whenever a file that does not already exist or has expired is uploaded,
the HTTP response header includes an X-Token field. You can use this
to perform management operations on the file.
2022-11-20 23:44:41 +02:00
2022-12-15 11:58:50 +02:00
To delete the file immediately:
< pre > curl -Ftoken=token_here -Fdelete= {{ fhost_url }}/abc.txt< / pre >
To change the expiration date (see above):
< pre > curl -Ftoken=token_here -Fexpires=3 {{ fhost_url }}/abc.txt< / pre >
< / p >
< p >
Maximum file size: {{ max_size }}< br >
Not allowed: {{ config["FHOST_MIME_BLACKLIST"]|join(", ") }}
< / p >
2022-11-20 23:44:41 +02:00
2022-12-15 12:36:20 +02:00
< h3 > TERMS OF SERVICE< / h3 >
< p > boop.icu is < em > NOT< / em > a platform for:
< ul >
< li > piracy< / li >
< li > pornography and gore< / li >
< li > extremist material of any kind< / li >
< li > malware / botnet C& C< / li >
< li > anything related to crypto currencies< / li >
< li > backups< / li >
< li > CI build artifacts< / li >
< li > doxxing, database dumps containing personal information< / li >
< li > anything illegal under Finnish law< / li >
< / ul >
< / p >
2022-11-20 23:44:41 +02:00
< h3 > FILE RETENTION PERIOD< / h3 >
< pre >
retention = min_age + (-max_age + min_age) * pow((file_size / max_size - 1), 3)
days
2022-12-29 03:05:30 +02:00
{{ '{: 6}'.format(max) }} | \\
2022-11-20 23:44:41 +02:00
| \\
| \\
| \\
| \\
| \\
| ..
| \
2022-12-29 03:05:30 +02:00
{{ '{: 6.1f}'.format(half) }} | ----------..-------------------------------------------
2022-11-20 23:44:41 +02:00
| ..
| \
| ..
| ...
| ..
| ...
| ....
| ......
2022-12-29 03:05:30 +02:00
{{ '{: 6}'.format(min) }} | ....................
0{{ half_size }}{{ max_size }}
2022-11-20 23:44:41 +02:00
{{ unit }}
< / pre >
2022-12-29 03:05:30 +02:00
2022-11-20 23:44:41 +02:00
< h3 > UPLOAD DIRECTLY< / h3 >
< hr >
< form action = "{{ fhost_url }}" method = "POST" enctype = "multipart/form-data" >
< label for = "file" > File:< / label >
< input class = "form-control" type = "file" name = "file" > < br > < br >
< input class = "form-control" type = "submit" value = "Submit" >
< / form >
< p > Please report illegal content to < a href = "mailto:fedi@criminallycute.fi?subject=" boop . icu content " > fedi@criminallycute.fi< / a > with the subject "boop.icu content". Include a link to content to be removed.< / p >
2022-12-15 12:29:34 +02:00
< p > < a href = "https://code.criminallycute.fi/siina/boop.icu" > Source code< / a > < / p >
2022-11-20 23:44:41 +02:00
< / div >
< / body >
< / html >