t0reg/t0reg.py
2020-05-03 23:02:56 +00:00

100 lines
2.2 KiB
Python

# t0reg - reg.t0.vc
# MIT License
import random
import string
from flask import abort, Flask, request, redirect
PORT = 5005
URL = 'https://reg.t0.vc'
POST = 'reg'
registers = {}
def help(nid):
form = (
'<form action="{0}" method="POST" accept-charset="UTF-8">'
'<input name="web" type="hidden" value="true">'
'<input name="{1}">'
'<br><button type="submit">Submit</button></form>'.format(URL, nid)
)
return """
<pre>
reg.t0.vc
NAME
t0reg: command line key-value registers
USAGE
&lt;command&gt; | curl -F '{0}=&lt;-' {1}
or upload from the web:
{2}
The key {0} was randomly chosen for you.
DESCRIPTION
This lets you POST data to a key of your choice.
You can then GET the data at that key.
This is useful for moving data / files between servers.
All the data is stored temporarily.
Make your key random if you don't want people guessing.
EXAMPLES
~$ echo "hello world" | curl -F '{0}=&lt;-' {1}
~$ curl {1}/{0}
hello world
Add this to your .bashrc:
alias push="curl -F '{0}=<-' {1}"
alias pull="curl {1}/{0}"
Now you can pipe directly into push!
Get the data back with pull.
To move a file:
~$ cat kitten.jpg | base64 | push
~$ pull | base64 -d > kitten.jpg
SOURCE CODE
https://txt.t0.vc/SBSU
SEE ALSO
https://txt.t0.vc
https://pic.t0.vc
https://url.t0.vc
</pre>""".format(nid, URL, form)
def new_id():
return ''.join(random.choice(string.ascii_uppercase) for _ in range(4))
flask_app = Flask(__name__)
@flask_app.route('/', methods=['GET'])
def index():
return '<html><body>{}</body></html>'.format(help(new_id()))
@flask_app.route('/', methods=['POST'])
def new():
try:
pairs = [x for x in request.form.items() if x[0] != 'web']
for key, value in pairs:
print('Adding:', key)
registers[key] = value
if 'web' in request.form:
return redirect(URL + '/' + key)
else:
return '', 200
except:
abort(400)
@flask_app.route('/<rid>', methods=['GET'])
def get(rid):
try:
return registers[rid], 200, {'Content-Type': 'text/plain; charset=utf-8'}
except:
abort(404)
flask_app.run(port=PORT)