#!/usr/bin/python3.6 from flask import Flask, request, render_template, make_response import random, string from pathlib import Path # Basic settings for paste pasteDir = Path("pastes") nameLength = 10 useSpecialChars = False allowListing = False hostedURL = "paste.benjamyn.love/" method = "https://" # https:// or http:// letters = string.ascii_letters if useSpecialChars: letters = letters + string.punctuation # Functions def randomName(): name = "" for x in range(0,nameLength): num = random.randint(0,len(letters)) #print(num) name += letters[num - 1] return name def doesDirExist(): if pasteDir.is_dir() == False: pasteDir.mkdir() def doesPasteExist(pasteName): pasten = pasteDir / pasteName if pasten.is_file(): return True else: return False def writePaste(pasteName, pasteData): pasten = pasteDir / pasteName tmpData = pasteData.split('\n') for line in tmpData: with pasten.open('a') as f: f.write(line + '\n') def printRealIP(): if request.environ.get('HTTP_X_FORWARDED_FOR') is None: print(request.environ['REMOTE_ADDR']) else: print(request.environ['HTTP_X_FORWARDED_FOR']) doesDirExist() # Web interface # https://paste.benjamyn.love/CBynvvjwDK application = Flask(__name__) application.config['DEBUG'] = False @application.route('/', methods=['POST', 'GET']) def index(): printRealIP() if request.method == "GET": if allowListing == True: return "FileList" else: return render_template("post.html") elif request.method == "POST": data = request.get_data().decode() if "buttonwaspushed" in data: data = request.form['textarea'] name = randomName() while doesPasteExist(name): name = randomName() else: #print("Writing: " + data) writePaste(name, data) return method + hostedURL + name @application.route('/') def getPaste(path): printRealIP() raw = False tmpPath = Path(path) pasten = pasteDir / tmpPath.name try: if request.values['raw'] == 'true': raw = True except: pass #print("Checking " + str(pasten)) if pasten.is_file(): with pasten.open() as f: data = f.read() #print(data) if raw: r = make_response(data) r.headers.set('Content-Type', "text/plain") return r return render_template("read.html", data=data) else: return render_template("read.html", data="No paste found") if __name__ == '__main__': application.run(host='127.0.0.1')