Added sample service file and sample app.ini, reworked main template.

Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
このコミットが含まれているのは:
Izuru Yakumo 2023-04-11 16:18:53 -03:00
コミット b5079c5d82
3個のファイルの変更73行の追加69行の削除

14
0x0.service ノーマルファイル
ファイルの表示

@ -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

13
app.ini ノーマルファイル
ファイルの表示

@ -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>