CDN with self update options - web-services

I'm searching for server/ cnd / image hosting with option to self update content:
user hits start page
all images load like: http://cdn.server.com/?image=path_to_image_on_my_server
CND server checks if image ws downloaded from my serwer and:
3a. download it and serve
3b. serve it
In short I wan't to store my images on another serwer like CDN without puting them every time I add new image on my portal.

Most of them do this by default. I used the following and that wasn't a problem there.
Although, if you want, you can update it manually, the default is update by request.
http://www.cdn77.com
https://www.cloudflare.com/

Related

Python Flask app on EC2 AWS, host by apache2

I'm trying to build a Flask APP, which includes two webpages. The first one allows users to upload an image, after which the server will take the image input and make predictions from CNN and generate some image results. For the first page and from the server end, they both work well. The user upload and image generation are successful. However, the second page won't load the newly generated images. The page shows as bellow:
The second webpage
Two issues could be possibly related to this:
Permission issue? I set the permission of this app folder and subfolders to 777, although the uploaded images and newly generated images are not. Please see the below image for details of these image permissions.
ls -la for all images to be shown
Even The pink ones are either uploaded(the first one) or newly generated (the rest two), while green ones are "shutil" copied from another folder. As green images inherit the previous permissions, it should display, but why does it not?
BTW, I also tried the solution here, but it still doesn't work.
Am I on the right track to solve this? Thanks in advance for any help.
Yanyang
Have you inspected to validate that the image path its using as the src is correct? This would be your first step to validate the application is correct.
After that try validating any error logs that may indicate a local file error, this would depend on the web server software you're using.

How to do URL masking with Django?

On a Django 1.9 project I need to redirect:
https://example.com/app/
to
https://examplebucket.s3.amazonaws.com/app/index.html
But I need https://examplce.com/app/ to be still visible on the browser address bar...
I know this must be possible in theory with Django because the previous team working on this project did a setup to serve the /static/ media files from an S3 bucket. And if I access those static files via https://example.com/static/app/index.html, they are served from the S3 bucket but the browser address bar still shows the original url I input.
I'm deploying an Ionic Browser project and I want the files (including the index) to be served from the S3 but the url needs to be user friendly, thats the reason.
The old (dirty) way of doing this is frame-based forwarding.
You set up an iframe on a page in /app/ which points at the real app, letting the url stay the same.
It's not considered a good practice because of security issues (can't be sure where you are typing credentials into), and bookmarking issues (url is always the same so can't bookmark inner pages).
Another alternative is to set up a proxy script that just takes the url, turns that into the equivalent aws url, downloads it and then returns it. This would break the benefits of your cloud hosting if it has multiple regions... it would always be passed through the bottleneck of your server.

django cms filer uploads fail

[Update]
I've managed to upload a small file (but not yet a large image). ../media/filer_public/ sub-directories are being correctly created and file correctly uploaded. Need to investigate nginx configurations.
[OP]
I've logged into a new Django CMS system as superuser but cannot Add filer image or Add filer file to a page as the file upload silently fails; very briefly flashing its upload graphics but not actually uploading anything. I believe all the settings.py are correct as static artifacts are rendered correctly and Nginx has credible similar locations for both media and static directories.
I believe all file and directory permissions and ownerships are correct; i.e. that Nginx has user and / or group ownership of the Django CMS app directories and that permissions are correct.
The Postgres table filer_folder has a row for a new filer folder I created when editing a page but no corresponding directory has been created in the file system. I can add text and new text block plugins that get saved correctly.
Django CMS is running in a Docker container web which I have confirmed has rw (read/write) access to a Docker volume.
I see nothing abnormal in webs logs.
How can I find out what's (not) happening?
Simply adding client_max_body_size 10M; to the nginx configuration for the site solved the issue.
Similar issues were addressed in Stackoverflow and elsewhere:
Server Fault
Setting up Django and your web server with uWSGI and nginx

Tracking number of downloads in Django

I have a website where I allow people to download files, such as Powerpoint templates that they can reuse.
I added a column to the model that stores information and location of these files called 'Downloads' and in that column I'd like to use it as a counter to track how many times the file has been downloaded.
How would I go about this? Would it be a GET request on the page? Basically I just provide a link to the file and the download starts automatically, so not sure how to relay the fact that the link was clicked back to the model.
Many thanks :-)
If you create a view that handles the GET request you could put the updating code in that view. If your Django-app is not handling the uploading itself, you can create a view that simply redirects to the download link, after updating the counter in the database.
You have several ways to do this:
create a custom view, that "proxies" all files, while keeping track of downloads
create a middleware that does pretty much the same as above, filtering which requests to record
..but none of the above will be applicable if you want to count downloads of collected static files, that will be served directly by your http server, without passing through django. In this case, I'd retrieve the downloads count from the webserver logs; have a look if your webserver allows storing logs to database, otherwise I'd create a cron-running scripts that parses the logfiles and stores the count to a db, accessible from your django application.
Like redShadow said you can create a proxie view. This view could serve the files via mod_xsendfile (if you are using apache as webserver) and set a counter for the downloads.

Link to download image instead of view image (CANT Change Content-Disposition Header)

I have a Django app and all the static content is handled through NGINX. I want to allow users to download a couple of static resources (photos) in their client by clicking on a link in the markup.
To make the link/resource downloadable, I know I could change the Content-Disposition. Unfortunately, since all my static assets are being served through NGINX, this seems problematic. I don't want to create a view just to change the Content-Disposition and make the image downloadable.
Is there anything that I can do here via jQuery or otherwise?