diff --git a/0x0.service b/0x0.service new file mode 100644 index 0000000..f67780d --- /dev/null +++ b/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 \ No newline at end of file diff --git a/app.ini b/app.ini new file mode 100644 index 0000000..905a914 --- /dev/null +++ b/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 diff --git a/templates/index.html b/templates/index.html index a2add39..e4777ee 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,69 +1,46 @@ -
-THE NULL POINTER -================ -{% set fhost_url = url_for("fhost", _external=True).rstrip("/") %} -HTTP POST files here: - curl -F'file=@yourfile.png' {{ fhost_url }} -You can also POST remote URLs: - curl -F'url=http://example.com/image.jpg' {{ fhost_url }} -If you don't want the resulting URL to be easy to guess: - curl -F'file=@yourfile.png' -Fsecret= {{ fhost_url }} - curl -F'url=http://example.com/image.jpg' -Fsecret= {{ fhost_url }} -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: - {{ fhost_url }}/aaa.jpg/image.jpeg - -File URLs are valid for at least 30 days and up to a year (see below). -Shortened URLs do not expire. - -Files can be set to expire sooner by adding an "expires" parameter (in hours) - curl -F'file=@yourfile.png' -Fexpires=24 {{ fhost_url }} -OR by setting "expires" to a timestamp in epoch milliseconds - curl -F'file=@yourfile.png' -Fexpires=1681996320000 {{ fhost_url }} - -Expired files won't be removed immediately, but will be removed as part of -the next purge. - -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. - -To delete the file immediately: - curl -Ftoken=token_here -Fdelete= {{ fhost_url }}/abc.txt -To change the expiration date (see above): - curl -Ftoken=token_here -Fexpires=3 {{ fhost_url }}/abc.txt - -{% set max_size = config["MAX_CONTENT_LENGTH"]|filesizeformat(True) %} -Maximum file size: {{ max_size }} -Not allowed: {{ config["FHOST_MIME_BLACKLIST"]|join(", ") }} - - -FILE RETENTION PERIOD ---------------------- - -retention = min_age + (-max_age + min_age) * pow((file_size / max_size - 1), 3) - - 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) }} -+ + + + +
+ + __ _ __ _ _ + / /_| | _____ __/ / __ _ _| | | + / / _` |/ _ \ \ / / / '_ \| | | | | | + / / (_| | __/\ V / /| | | | |_| | | | + /_/ \__,_|\___| \_/_/ |_| |_|\__,_|_|_| ++ |
+
+ The Chaotic Pointer+ |
+
+
+ {% set fhost_url = url_for("fhost", _external=True).rstrip("/") %}
+ {% set max_size = config["MAX_CONTENT_LENGTH"]|filesizeformat(True) %}
+ + Not allowed: {{ config["FHOST_MIME_BLACKLIST"] }} + Uploaded files expire after 15 days, no exceptions. + + + + |
+