Project is a non-visual PHP application that will accept file uploads and place them in a localhost folder and also save them to an S3 bucket. Requests for a download of a file will first attempt to download the file from S3 but if that fails, download from the localhost. The application desired also includes some administrative commands. A successful bidder should have experience communicating with Amazon S3 including programmatically uploading and downloading files using PHP.
## Deliverables
Summary of command lines to be processed by this application and the MySQL tables it should cvreate and use [login to view URL]:\path\[login to view URL] retrieves local (workstation) file name in path, uploads it to a global named folder on the host server then copies it to the S3 bucket as "[login to view URL]" Also stores the alias and the S3 retrieval path. If alias is already assigned to a file in the bucket. removes that file before uploading the new one even if the filename is different. Returns: "Suceeded" or "Failed" [login to view URL] Checks the referring ip address and url and refuses download if found in list of sites to block returns Attempts to retrieve the file named in Alias to the browser who has clicked on this command on a web page. If the S3 connection fails, serves the file from its location on the host. Retrieves a serial number and appends it to the filename as 5 digit hex number. Saves the following information about the download request to a MySQL table: If the referring site was found on list of sites to block, increments the attempts count for that site. returns FileDownload or "Download Failed" or "Download Refused" [login to view URL] Removes the file to which Alias is assigned both from the S3 bucket and from the folder on the host. returns: "Removed" or "Failed" [login to view URL] &s3day=S3day&serial=beginningserialnumber Creates all tables required (if the don't exist) and populates the admin table Returns "Success" or "Failed" [login to view URL] address&url=aURL Adds a record to the block table returns: "Added" or "Failed" [login to view URL] address&url=aURL removes a record from the block table returns: "Removed" or "Failed" MySQL Tables: admin table coda A 3digit alphanum identifying this instance ie: Y3N host localhost url adminname name of admin adminpass password localpath local file archive path S3path base path to S3 bucket S3day day of month for S3 tally (first day of each period) S3date timestamp for beginning of service lastdown timestamp of most recent download request serial serialnumber incremented upon each accepted download. files table realfilename the actual filename+extension is not necessarily the same as: downloadname The filename (without the serial number) to be used when the file is transmitted alias Alias name of file active T/F True for the current alias assignment, false for other records with same alias bucket address the S3 address for file retreival addedon timestamp of addition or modification removedon timestamp this file removed from S3 and localhost downloads table serial serial number assigned alias alias begin timestamp at begin end timestamp at finish file filename without serial number S3 S3 (T/F) True if file served from S3, False if served from localhost filesize file size in bytes completed Download completed (T/F) bytessent length in bytes of the transfer referrer Referring site blocks table IPaddr IP address to block URLstr URL to block Attempts count of times a download attempted from this referrer TimeStamp last attempt datetime