16th July 2013 - updated and now works in a supplied 6.1.2 installation
In it's simplest form, this project will allow you to serve files that are outside of the website folder structure to an end user - ok in other words you hide the real download location of your files.
You are a software company providing widget XYZ that costs $199 to purchase. In the past you had a secret hidden folder structure which was www.widget.com/securefiles/widgetxyzrelease.exe
This link was available to anyone once they purchased your software, however the probem was that this link could be passed around to anyone and everyone so not very secure.
What you actually want to do is provide a link like http://www.widget.com/your-account?file=widgetxyz and for your site to determine via it's authentication system whether you were allowed to access it or not - if you have paid, you could provide this link which will then check you are logged in, check you are allowed to download it and then return the file to your browser for you to download. Much more secure.
Ok this is how you could set it up:
* Your site is setup in c:\inetpub\wwwroot\mySite
* Your secured files are outside of the wwwroot so c:\inetpub\mysecurefiles\*.* (this is where you dump your exes and other secure files)
* You ensure when your user purchases your software, they are logged into the site as a user and redirect them to the your-account page.
* This page has a user control that checks the query string, provides a mechanism to pull the file from the secure folder and serve to the user
Thats pretty much it.
I'm looking for collaborators for this package/project to improve and expand upon it's core functionality. Things that could be added are:
* Customisable filetypes - currently only supports pdf, exe, msi and zip
* Embedding Google Analytics for tracking downloads against purchases/users
* anything else?
Source is included (7 zip file) and is currently compiled as .net 4.0 solution, if you are not using 4.7, you will need to recompile and relink in the correct version Umbraco dll's for it to work - should work in all versions of Umbraco 4.x onwards