Compare commits
5 Commits
v2.2.post1
...
v2.3
Author | SHA1 | Date | |
---|---|---|---|
9910bc279c | |||
f100732e4d | |||
46420eecda | |||
7b372a7b6f | |||
5570710432 |
52
README.md
52
README.md
@ -31,27 +31,51 @@ First, fork [this repository](https://git.bbaovanc.com/bbaovanc/imgupload). If y
|
||||
|
||||
## Installation
|
||||
|
||||
1. Clone the repository: `git clone https://git.bbaovanc.com/bbaovanc/imgupload.git`
|
||||
2. Enter the imgupload directory: `cd imgupload`
|
||||
3. Create a virtualenv: `python3 -m venv env`
|
||||
4. Enter the virtualenv: `source env/bin/activate`
|
||||
5. Install dependencies: `python3 -m pip install -r requirements.txt`
|
||||
6. [Run the Flask app](#running-the-flask-app)
|
||||
|
||||
---
|
||||
|
||||
## Running the Flask app
|
||||
|
||||
### Using uWSGI
|
||||
|
||||
[https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html](https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html)
|
||||
Note: replace `www-data` with whatever user your webserver runs as.
|
||||
|
||||
Instructions specific to imgupload are coming soon
|
||||
1. Make /srv/imgupload: `sudo mkdir /srv/imgupload`
|
||||
2. Change ownership of /srv/imgupload: `sudo chown www-data:www-data /srv/imgupload`
|
||||
3. Enter www-data user: `sudo su www-data`
|
||||
4. Change directories to /srv/imgupload: `cd /srv/imgupload`
|
||||
5. Clone the repository: `git clone https://git.bbaovanc.com/bbaovanc/imgupload.git`
|
||||
6. Enter the imgupload directory: `cd imgupload`
|
||||
7. Create a virtualenv: `python3 -m venv env`
|
||||
8. Enter the virtualenv: `source env/bin/activate`
|
||||
9. Install dependencies: `python3 -m pip install -r requirements.txt`
|
||||
10. Leave the www-data user: `exit`
|
||||
11. Copy the default uWSGI configuration: `sudo cp /srv/imgupload/uwsgi.ini.default /etc/uwsgi/apps-available/imgupload.ini`
|
||||
12. Modify `/etc/uwsgi/apps-available/imgupload.ini` to your preferences
|
||||
13. Enable imgupload: `sudo ln -s /etc/uwsgi/apps-available/imgupload.ini /etc/uwsgi/apps-enabled/`
|
||||
14. Restart uWSGI: `sudo systemctl restart uwsgi`
|
||||
15. Set up your webserver to proxy the uwsgi.sock
|
||||
|
||||
Example NGINX location block:
|
||||
```nginx
|
||||
location /upload {
|
||||
include uwsgi_params;
|
||||
uwsgi_pass unix:/srv/imgupload/uwsgi.sock;
|
||||
client_max_body_size 25M;
|
||||
}
|
||||
```
|
||||
|
||||
### Using Flask development server
|
||||
|
||||
|
||||
#### Setup
|
||||
|
||||
```shell
|
||||
$ git clone https://git.bbaovanc.com/bbaovanc/imgupload.git
|
||||
$ cd imgupload
|
||||
$ python3 -m venv env
|
||||
$ source env/bin/activate
|
||||
$ pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
#### Run
|
||||
|
||||
```shell
|
||||
$ source env/bin/activate # if you haven't already entered the virtualenv
|
||||
$ export FLASK_APP=imgupload.py
|
||||
$ flask run
|
||||
```
|
||||
|
@ -85,8 +85,6 @@ if "ROOTURL" in checksettings:
|
||||
pass
|
||||
else:
|
||||
rooturl_good = False
|
||||
print(settings.ROOTURL)
|
||||
print(settings.ROOTURL.startswith("https://"))
|
||||
print("[!] ROOTURL does not start with `http://` or `https://`! This may cause issues!")
|
||||
if not settings.ROOTURL.endswith("/"):
|
||||
rooturl_good = False
|
||||
|
15
imgupload.py
15
imgupload.py
@ -67,12 +67,27 @@ def upload():
|
||||
|
||||
fext = Path(f.filename).suffix # get the uploaded extension
|
||||
if allowed_extension(fext): # if the extension is allowed
|
||||
if not "imageName" in request.form.keys():
|
||||
print("Generating file with extension {0}".format(fext))
|
||||
fname = functions.generate_name() + fext # generate file name
|
||||
print("Generated name: {0}".format(fname))
|
||||
else:
|
||||
fname = request.form["imageName"]
|
||||
if len(fname) > 0:
|
||||
print("Request imageName: {0}".format(fname))
|
||||
if not fname.lower().endswith(fext.lower()): # if requested name doesn't have the correct extension
|
||||
fname += fext # add the extension
|
||||
print("Added extension; new filename: {0}".format(fname))
|
||||
else:
|
||||
print("Requested filename is blank!")
|
||||
fname = functions.generate_name() + fext # generate a valid filename
|
||||
print("Generated name: {0}".format(fname))
|
||||
|
||||
if f: # if the uploaded image exists
|
||||
print("Uploaded image exists")
|
||||
if Path(os.path.join(settings.UPLOAD_FOLDER, fname)).is_file():
|
||||
print("Requested filename already exists!")
|
||||
return jsonify({'status': 'error', 'error': 'FILENAME_TAKEN'}), status.HTTP_409_CONFLICT
|
||||
f.save(os.path.join(settings.UPLOAD_FOLDER, fname)) # save the image
|
||||
print("Saved to {0}".format(fname))
|
||||
url = settings.ROOTURL + fname # construct the url to the image
|
||||
|
12
uwsgi.ini.default
Normal file
12
uwsgi.ini.default
Normal file
@ -0,0 +1,12 @@
|
||||
[uwsgi]
|
||||
socket = /srv/imgupload/uwsgi.sock
|
||||
chmod-socket = 755
|
||||
chdir = /srv/imgupload
|
||||
venv = /srv/imgupload/env
|
||||
master = true
|
||||
module = imgupload:app
|
||||
processes = 10
|
||||
threads = 1
|
||||
uid = www-data
|
||||
gid = www-data
|
||||
plugins = python3,logfile
|
Reference in New Issue
Block a user