UpLily is a web service for uploading and downloading files over HTTP in situations where transferring files between hosts is hindered by network policy or accessibility.
The service can run locally on a personal computer or 'serverless' cloud services such as AWS Elastic Beanstalk and Heroku Dynamos.
For large files UpLily can be configured as a front end to private S3 buckets.
To configure S3 backend set the environment variables S3_BUCKET
, AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
.
S3_BUCKET
is the name of the bucket. Just the name, not the ARN.
AWS_ACCESS_KEY_ID
and AWS_SECRET_ACCESS_KEY
are the IAM keys for a user that can access the bucket.
In the bucket permissions make sure the CORS settings allow for access from the server. Full directions on CORS are here on the AWS documentation. An example CORS setting to allow access from a local instance of UpLily running on 127.0.0.1:5000
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE",
"GET"
],
"AllowedOrigins": [
"https://127.0.0.1:5000"
],
"ExposeHeaders": []
},
]
If the environment variables are set and the CORS is configured in the S3 bucket the UpLily UI will have an option for uploading to local FS or S3
When two users are in networks that don't allow incoming connections from the Internet, set up a UpLily instance in as a Heroku application as a 'drop off location'
It isn't uncommon for corporate IT to put restrictions on network file transfers. Email size is often capped, filesharing sites such as AWS S3, box.com & PasteBin are often blocked by web proxies, protocols such as scp and ftp blocked at edge firewalls.
"Barebones" smart devices or appliances don't often have the capability to run file sharing protocols that are common on personal computers or full servers. HTTP is an almost universally supported protocol by even the most basic systems.
This method requires that you have Git installed (free), a Heroku account (free tier account works fine) and the Heroku command line tools installed (free).
git clone https://github.com/rdpickard/uplily
cd uplily/
heroku create
git push heroku master
heroku ps:scale web=1
heroku open
After you're finished, stop and erase the Dyno
heroku destroy
If you want S3 as a backend set the environment variables in the application Settings > Config Vars section
This method requires that you have Python 3.4 or greater installed.
git clone https://github.com/rdpickard/uplily
cd uplily/
pip3 install -r requirements.txt
python3 application.py
This recipe works fine with a python virtual environment.
The output of running application.py will tell you the URL to access the web app.
This method requires you have an existing AWS account, the AWS command line tools installed.
This method has a monetary cost billed by Amazon. It is probably low, but it isn't free to run on AWS.
git clone https://github.com/rdpickard/uplily
cd uplily/
eb init -p python-3.6 uplily --region us-east-2
eb create uplily-env
eb open
After you're finished, stop and release all of the AWS resources
eb terminate
- Semantic UI version 2.4 of the web layout and javascript framework
- jQuery version 3.4.1 of the javascript framework
- Flask python WSGI web application framework
And a whole lot of great Python3 modules that are listed in requirements.txt file.