diff --git a/README.md b/README.md index 39ac74b..76f1d18 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,8 @@ In addition to *encoding*, *scaleX* and *scaleY* you may also use the following # Uploading This tool is not intended for uploading or large amounts of files, use SFTP/FTPS or whatever your server provides for. For pure convenience usage there is a */upload*/-location. It must be enabled by creating a file called *upload.enable* in the project root before the server is started. +For automatic redirection after upload you must have a reverse proxy setting a header *X-REAL-HOSTNAME* with the internet facing hostname of the server. + # With nginx as reverse-proxy server { @@ -41,10 +43,12 @@ This tool is not intended for uploading or large amounts of files, use SFTP/FTPS location /{ proxy_pass http://localhost:5000; } + location /upload{ auth_basic "Auth Message"; auth_basic_user_file "/path/to/auth/file"; client_max_body_size 50m; # <-- important! + proxy_set_header X-REAL-HOSTNAME $host; proxy_pass http://localhost:5000; } } diff --git a/server.py b/server.py index 95d25a3..d0bd2ac 100755 --- a/server.py +++ b/server.py @@ -136,10 +136,15 @@ def upload(): return ("Upload Disabled", 403) if flask.request.method == 'POST': f = flask.request.files['file'] - sfName = os.path.join(PICTURE_DIR, werkzeug.utils.secure_filename(f.filename)) + fname = werkzeug.utils.secure_filename(f.filename) + sfName = os.path.join(PICTURE_DIR, fname) if not os.path.isfile(sfName): f.save(sfName) - return ('Success', 204) + realHostname = flask.request.headers.get("X-REAL-HOSTNAME") + if realHostname: + return flask.redirect(realHostname + "/media/" + fname) + else: + return ('Success', 204) else: return ('Conflicting File', 409) else: