The goal of this project is to create a custom TFTP server (configured via a web frontend) that allows files to be downloaded only to the IP address that has been linked to the requested file.
There are three components to this project:
1) A website with two access levels:
a) An admin interface where "regular" users can be created and managed, and reported about
b) The main interface where users will login and manage associations between IP addresses and filenames on the TFTP server (a "whitelist"). These IP -> File association are 1->many, and need to be managed for Create, Read, Update, and Delete. There could be 100s of IP addresses each mapping to 100s of filenames. Certain files are available to everyone, and these are associate to (e.g.) the bogus IP address 0.0.0.0
2) A database to store the user data, IP->file associations, and other info. Almost certainly MySQL.
3) A TFTP server -- probably a small modification to an open source tftp server -- that does the following
a) Accepts a TFTP connection
b) Looks up the request file in the database.
c) IF the file is found AND (the source IP address of the request is the same as the IP associated with the file OR the IP associated with the file is 0.0.0.0) THEN the file is sent to the requester.
A few other requirements:
1. Delivered code must be able to run on RHEL 6 or CentOS 6.
2. Delivered code must be easily installed/updated on our own servers
3. Platform/Tooling: Server code can be almost anything -- ruby, PHP, java, python -- but page layout should use a well-known toolkit like Angular or Bootstrap.
4. TFTP server code should be based on a known open-source version with licensing amenable to modification (system will be kept internally and will not be distributed)
5. Code must be commented and maintainable.
Background: This application will be used in a VoIP hosting system to serve configuration files to VoIP endpoints. VoIP experience is not needed, but would be welcome.
More detailed specs are in development.