From 40c7c079bd9234964e8e8653963f41752583b9da Mon Sep 17 00:00:00 2001 From: root Date: Mon, 12 Oct 2020 06:04:24 -0400 Subject: [PATCH] initial --- Dockerfile | 9 ++++++ README.md | 1 + app/app.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++ app/wsgi.py | 4 +++ entrypoint.sh | 2 ++ gunicorn_config.py | 4 +++ requirements.txt | 2 ++ 7 files changed, 92 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/app.py create mode 100644 app/wsgi.py create mode 100644 entrypoint.sh create mode 100644 gunicorn_config.py create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4e3c3c1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.8-slim +RUN mkdir /app +WORKDIR /app +ADD requirements.txt /app +RUN pip3 install -r requirements.txt +ADD . /app +EXPOSE 5000 +RUN chmod +x ./entrypoint.sh +ENTRYPOINT ["sh", "entrypoint.sh"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..702d7d3 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Upload script for sharex diff --git a/app/app.py b/app/app.py new file mode 100644 index 0000000..4a18f26 --- /dev/null +++ b/app/app.py @@ -0,0 +1,70 @@ +from flask import Flask, abort, request, send_file +from pprint import pprint + +import os.path +import string +import random +useSpecialChars = False +basePath="/app" +domain = "https://upload.lovelynet.net" + +letters = string.ascii_letters +if useSpecialChars: + letters = letters + string.punctuation + +# Functions +def randomName(nameLength, ext): + name = "" + for x in range(0,nameLength): + num = random.randint(0,len(letters)) + #print(num) + name += letters[num - 1] + name = checkDuplicateName(name, ext) + return f"{name}.{ext}" + +def checkDuplicateName(name, ext): + if os.path.isfile(f'{basePath}/imgs/{name}.{ext}'): + name = randomName(5, ext) + return name + +def checkFileExists(name): + if os.path.isfile(f'{basePath}/imgs/{name}'): + return True + return False + +def saveIMG(imageData, name): + imageData.save(f'{basePath}/imgs/' + name) + +app = Flask(__name__) +app.config['DEBUG'] = True + +@app.route('/', methods=['POST', 'GET']) +def index(): + try: + if 'thisistheshit' in request.headers['X-AUTH']: + if request.form['type'] == 'img': + name = randomName(5, "png") + saveIMG(request.files['image.png'], name) + + if request.form['type'] == 'file': + print(request.files['video.mp4']) + name = randomName(5, "mp4") + saveIMG(request.files['video.mp4'], name) + return f"{domain}/{name}" + except: + return "" + +@app.route('/') +def getImage(path): + if (checkFileExists(path)): + return send_file(f"{basePath}/imgs/{path}") + abort(404) + + +@app.errorhandler(404) +def page_not_found(error): + return "File not found", 404 + + +if __name__ == '__main__': + app.run(host='0.0.0.0') diff --git a/app/wsgi.py b/app/wsgi.py new file mode 100644 index 0000000..36be9df --- /dev/null +++ b/app/wsgi.py @@ -0,0 +1,4 @@ +from .app import app + +# do some production specific things to the app +app.config['DEBUG'] = False diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..014bef3 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,2 @@ +#!/bin/bash +exec gunicorn --config /app/gunicorn_config.py app.wsgi:app diff --git a/gunicorn_config.py b/gunicorn_config.py new file mode 100644 index 0000000..be04850 --- /dev/null +++ b/gunicorn_config.py @@ -0,0 +1,4 @@ +bind = "0.0.0.0:5000" +workers = 4 +threads = 4 +timeout = 120 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e4a286c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +flask +gunicorn