Added sample service file and sample app.ini, reworked main template.
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
このコミットが含まれているのは:
コミット
b5079c5d82
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The null pointer
|
||||||
|
Documentation=https://0x0.st
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/usr/local/0x0
|
||||||
|
ExecStart=/usr/bin/uwsgi --ini app.ini
|
||||||
|
Restart=on-failure
|
||||||
|
User=nullptr
|
||||||
|
Group=nullptr
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,13 @@
|
||||||
|
[uwsgi]
|
||||||
|
uid = nullptr
|
||||||
|
master = true
|
||||||
|
processes = 10
|
||||||
|
socket = socket
|
||||||
|
chmod-socket = 664
|
||||||
|
vacuum = true
|
||||||
|
file = fhost.py
|
||||||
|
plugins = python
|
||||||
|
chdir = /path/to/0x0
|
||||||
|
callable = app
|
||||||
|
[nullptr]
|
||||||
|
timeshift = 0
|
|
@ -1,69 +1,46 @@
|
||||||
<pre>
|
<!DOCTYPE HTML "-//W3C//DTD HTML 3.2 Final//EN">
|
||||||
THE NULL POINTER
|
<html>
|
||||||
================
|
<head>
|
||||||
{% set fhost_url = url_for("fhost", _external=True).rstrip("/") %}
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
HTTP POST files here:
|
<title>media.chaotic.ninja</title>
|
||||||
curl -F'file=@yourfile.png' {{ fhost_url }}
|
</head>
|
||||||
You can also POST remote URLs:
|
<body bgcolor="#000000">
|
||||||
curl -F'url=http://example.com/image.jpg' {{ fhost_url }}
|
<br><br><table border="2" cellpadding="12" cellspacing="0" bgcolor="#ffffff" align="center">
|
||||||
If you don't want the resulting URL to be easy to guess:
|
<tr>
|
||||||
curl -F'file=@yourfile.png' -Fsecret= {{ fhost_url }}
|
<td border="0" align="center">
|
||||||
curl -F'url=http://example.com/image.jpg' -Fsecret= {{ fhost_url }}
|
<pre>
|
||||||
Or you can shorten URLs:
|
__ _ __ _ _
|
||||||
curl -F'shorten=http://example.com/some/long/url' {{ fhost_url }}
|
/ /_| | _____ __/ / __ _ _| | |
|
||||||
|
/ / _` |/ _ \ \ / / / '_ \| | | | | |
|
||||||
It is possible to append your own file name to the URL:
|
/ / (_| | __/\ V / /| | | | |_| | | |
|
||||||
{{ fhost_url }}/aaa.jpg/image.jpeg
|
/_/ \__,_|\___| \_/_/ |_| |_|\__,_|_|_|
|
||||||
|
</pre>
|
||||||
File URLs are valid for at least 30 days and up to a year (see below).
|
</td>
|
||||||
Shortened URLs do not expire.
|
<td align="center">
|
||||||
|
<h1>The Chaotic Pointer</h1>
|
||||||
Files can be set to expire sooner by adding an "expires" parameter (in hours)
|
</td>
|
||||||
curl -F'file=@yourfile.png' -Fexpires=24 {{ fhost_url }}
|
<td>
|
||||||
OR by setting "expires" to a timestamp in epoch milliseconds
|
<center>
|
||||||
curl -F'file=@yourfile.png' -Fexpires=1681996320000 {{ fhost_url }}
|
<p>
|
||||||
|
{% set fhost_url = url_for("fhost", _external=True).rstrip("/") %}
|
||||||
Expired files won't be removed immediately, but will be removed as part of
|
{% set max_size = config["MAX_CONTENT_LENGTH"]|filesizeformat(True) %}
|
||||||
the next purge.
|
<br>
|
||||||
|
<form action="{{ fhost_url }}" method="POST" enctype="multipart/form-data">
|
||||||
Whenever a file that does not already exist or has expired is uploaded,
|
<input type="file" name="file">
|
||||||
the HTTP response header includes an X-Token field. You can use this
|
<input type="submit" value="Submit">
|
||||||
to perform management operations on the file.
|
</form>
|
||||||
|
Maximum file size: {{ max_size }} <br>
|
||||||
To delete the file immediately:
|
Not allowed: {{ config["FHOST_MIME_BLACKLIST"] }} <br>
|
||||||
curl -Ftoken=token_here -Fdelete= {{ fhost_url }}/abc.txt
|
Uploaded files expire after 15 days, no exceptions.
|
||||||
To change the expiration date (see above):
|
<hr>
|
||||||
curl -Ftoken=token_here -Fexpires=3 {{ fhost_url }}/abc.txt
|
<form action="{{ fhost_url}}" method="POST">
|
||||||
|
<input type="text" name="url">
|
||||||
{% set max_size = config["MAX_CONTENT_LENGTH"]|filesizeformat(True) %}
|
<input type="submit" value="Submit">
|
||||||
Maximum file size: {{ max_size }}
|
</form>
|
||||||
Not allowed: {{ config["FHOST_MIME_BLACKLIST"]|join(", ") }}
|
</p>
|
||||||
|
</center>
|
||||||
|
</td>
|
||||||
FILE RETENTION PERIOD
|
</tr>
|
||||||
---------------------
|
</table>
|
||||||
|
</body>
|
||||||
retention = min_age + (-max_age + min_age) * pow((file_size / max_size - 1), 3)
|
</html>
|
||||||
|
|
||||||
days
|
|
||||||
{{'{: 6}'.format(config.get("FHOST_MAX_EXPIRATION", 31536000000)//86400000)}} | \
|
|
||||||
| \
|
|
||||||
| \
|
|
||||||
| \
|
|
||||||
| \
|
|
||||||
| \
|
|
||||||
| ..
|
|
||||||
| \
|
|
||||||
{{'{: 6.1f}'.format((config.get("FHOST_MIN_EXPIRATION", 2592000000)/2 + config.get("FHOST_MAX_EXPIRATION", 31536000000)/2)/86400000)}} | ----------..-------------------------------------------
|
|
||||||
| ..
|
|
||||||
| \
|
|
||||||
| ..
|
|
||||||
| ...
|
|
||||||
| ..
|
|
||||||
| ...
|
|
||||||
| ....
|
|
||||||
| ......
|
|
||||||
{{'{: 6}'.format(config.get("FHOST_MIN_EXPIRATION", 2592000000)//86400000)}} | ....................
|
|
||||||
0{{ ((config["MAX_CONTENT_LENGTH"]/2)|filesizeformat(True)).split(" ")[0].rjust(27) }}{{ max_size.split(" ")[0].rjust(27) }}
|
|
||||||
{{ max_size.split(" ")[1].rjust(54) }}
|
|
||||||
</pre>
|
|
||||||
|
|
読み込み中…
新しいイシューから参照