You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.2 KiB
98 lines
2.2 KiB
# t0txt - txt.t0.vc |
|
# MIT License |
|
|
|
import random |
|
import shelve |
|
import string |
|
|
|
from flask import abort, Flask, request, redirect |
|
|
|
DB = 'data/t0txt' |
|
PORT = 5002 |
|
URL = 'https://txt.t0.vc' |
|
POST = 'txt' |
|
|
|
def help(): |
|
form = ( |
|
'<form action="{0}" method="POST" accept-charset="UTF-8">' |
|
'<input name="web" type="hidden" value="true">' |
|
'<textarea name="{1}" cols="60" rows="18"></textarea>' |
|
'<br><button type="submit">Submit</button></form>'.format(URL, POST) |
|
) |
|
return """ |
|
<pre> |
|
txt.t0.vc |
|
NAME |
|
t0txt: command line pastebin. |
|
|
|
USAGE |
|
<command> | curl -F '{0}=<-' {1} |
|
or upload from the web: |
|
|
|
{2} |
|
|
|
DESCRIPTION |
|
I got sick of sprunge.us always going down, so I built this |
|
|
|
EXAMPLES |
|
~$ cat yourfile | curl -F '{0}=<-' {1} |
|
{1}/MOJV |
|
~$ firefox {1}/MOJV |
|
|
|
Add this to your .bashrc: |
|
|
|
alias {0}=" \\ |
|
sed -r 's/\x1B\[([0-9]{{1,2}}(;[0-9]{{1,2}})?)?[m|K]//g' \\ |
|
| curl -F '{0}=<-' {1}" |
|
|
|
Now you can pipe directly into {0}! Sed removes colours. |
|
|
|
SOURCE CODE |
|
https://txt.t0.vc/GPBV |
|
|
|
SEE ALSO |
|
https://pic.t0.vc |
|
https://url.t0.vc |
|
http://github.com/rupa/sprunge |
|
</pre>""".format(POST, 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()) |
|
|
|
@flask_app.route('/', methods=['POST']) |
|
def new(): |
|
try: |
|
with shelve.open(DB) as db: |
|
nid = new_id() |
|
while nid in db: |
|
nid = new_id() |
|
|
|
txt = request.form['txt'] |
|
if not txt: raise |
|
db[nid] = txt |
|
|
|
print('Adding note {}:\n{}'.format(nid, txt)) |
|
|
|
url = '{}/{}'.format(URL, nid) |
|
if 'web' in request.form: |
|
return redirect(url) |
|
else: |
|
return url + '\n' |
|
except: |
|
abort(400) |
|
|
|
@flask_app.route('/<nid>', methods=['GET']) |
|
def get(nid): |
|
try: |
|
with shelve.open(DB) as db: |
|
return db[nid] + '\n', 200, {'Content-Type': 'text/plain; charset=utf-8'} |
|
except: |
|
abort(404) |
|
|
|
flask_app.run(port=PORT)
|
|
|