Introduction
- Some open source organizations have become so popular they cannot provide their own bandwidth to distribute their software. They manage to survive by utilizing donated bandwidth from other organizations that are willing to provide mirrors.
- A mirror network can grow surprisingly large, which makes it hard to manage and has inherent security concerns.
- Bouncer provides an admin interface and a set of tools to manage and monitor any mirror network.
Main Features
Bounce Script
The bounce script is a simple PHP script that takes a set of inputs, and redirects the request to a mirror that is known to be available and have the correct file. It does not redirect people to invalid or non-existent files because Sentry keeps tabs on file and mirror status.
When the bounce script is hit, it increments database counts that can give you a quick glimpse at how many times something has been downloaded - in the past this was a favorite feature. It's not the most accurate, but accurate enough to give you a sense of how popular your product is.
Sentry
Sentry is a multi-threaded Python daemon that queries and tests your mirror network to make sure it is intact. It is responsible for running scheduled tasks (via cron) that can perform a number of tests:
- Check that mirrors respond
- Check that files exist on mirrors
- Check that all files on all mirrors pass their hash code comparison
- Run full tests on new mirrors and files
- Spot checks on one randomly selected file on each mirror
Sentry performs many other important tasks:
- Generating detailed HTML reports to summarize what happened during each test. It can be programmed to write these reports to any directory on your system.
- Emailing a specified email address when a particular even happens.
For more information on Sentry:
Admin Interface
The admin interface lets you create, read, update and delete database contents in the Bouncer database. It lets you also adjust statuses for mirrors or files, and can give you an overview explaining the status of your mirror network.
Loader
Loader is a script written in Python that was created to allow multiple file uploads. It will accept a generated SHA1SUM or MD5SUM file and cross-reference it with database contents in order to determine which files / templates to add to the Bouncer database. It is the quickest way to add a large set of files, and saves a lot of manual entry time.
It is accessible via the admin interface.
Public Tools
- Syndication - There are various opportunities to write a very simple RSS feed in order to keep track of various data:
- Product download counts
- Mirror lists
- Available product lists
- Mirror download counts
- Download form
- Central place to get downloads
- Can be modified to only show valid options (right now it shows all)
- Pretty much the same idea as the nVidia driver picker
Future Enhancements
- Improving reporting capability and granularity
- Would be nice to track trends over a period of time
- Would be nice to be able to guage actual bandwidth capabilities when downloading files from mirrors
- Improving syndication to meet community needs
- Integrating generated HTML reports from Sentry into admin interface better
- Improve download form to contain JavaScript to eliminate invalid options from the list
- Add a "public" flag to determine whether or not a product is visible in the download form