342623 File Hosting + Torrent Proxy

IN PROGRESS
Bids
0
Avg Bid (USD)
N/A
Project Budget (USD)
N/A

Project Description:
I need a custom file hosting script that allows users to have virtual drives which mimic the look windows operating system (i.e.: http://www.4shared.com/dir/1567809/8fff9481/clone.html). Must support username/password authentication features, and other permissions should be able to be set by users.

Must also incorporate a torrent client proxy (allowing users to submit .torrent urls or upload .torrent files from their desktop) and OUR server will download them, and when the download is complete we will provide the user with an http download link from our server.

Must also handle the in-browser viewing of specific types of files in different ways: i.e.: pdf files should be viewable in-browser similarly to www.docshare.com, .doc files should have a similar viewing mechanism, movies should play in browser.

Please read on if you are capable of creating a scalable high-usage and distributed file sharing back-end.


Requirements Interview Answers:
To help you bid more accurately, the buyer was interviewed about the requirements for this project. Below are their answers.
Project Type: What kind of work do you need done?
Software related (Includes desktop applications and internet websites)
Project Parts: What do you want the seller to do on this project?

Requirements: The seller will analyze the problem and propose a software-based solution to the problem.
Programming: The programmer will take the requirements and translate them into the language of the computer (and test it).
User installation: The installer will move the software from the place it was created (which is called the development or QC environment) to where you will use it (which is called the production environment). The installer then tests the software to make sure that the installation was done properly and completely.
Req. Doc. Type: What kind of documentation do you want for this project?
Formal documentation - After talking back and forth, the seller creates a formal document and/or prototype, as follows:

* Prototype: The analyst will create a non-working mockup of all pages/screens in the final software. Creating a prototype makes it easier for the user to visualize the final software, and reduces misunderstandings.
* Requirements Document: The analyst will create a document describing everything the final software will do (other than what is documented in the prototype...if the buyer required one).

Program Type: What kind of software should the seller create (and/or install)?

* An internet web-site: This software runs on a web server and users will access it using their internet browser.
* A desktop or server program: This software runs on a user's own PC/workstation, or on a server.

Internet web-site info
Design and functionality: What does the programming of this project involve?

* Design: Create the layout of the pages (or modify the layout of existing pages).
* Program Functionality: Making the website "work".

Modeling another site: Do you wish to model another site? Yes: file sharing web site similar to http://www.4shared.com
*virtual drive (http://www.4shared.com/dir/1567809/8fff9481/clone.html)
*ad placements, multiple pages shown before getting to download page

torrent client proxy feature of http://www.furk.net

in-browser viewing capabilities similar to:

documents
http://www.docshare.com/doc/15765/The-13-Hottest-Celebrity-Mugshots

movies - http://www.zshare.net/video/621059774a393bc1/
--ability to have server also convert .mov/.avi uploads to flv on the fly and stream

pictures/photo albums - http://media.photobucket.com/image/color%20splash/findstuff22/Best%20Images/Photography/colorsplashthumb222edit.jpg?o=1

.zip - have the ability for a user to unzip a .zip file in their virtual drive (if they have enough resources available based on what account type they have)
Size of website: How many pages need to be created/edited in this website?
Approximately 13.
Programming Language: What programming language(s) do you want your website written in?
I do know the language(s).
Languages(s):

* Cascading Style Sheets (CSS)
* PHP

Misc. details: Would like to have desktop uploader programmed in Java for cross-platform compatibility beween PC and Mac users.

Database: Will this project include a database?
Yes, it does include a database.
Details:

* MySQL -- version(s): 5.x

Browser Type(s)/Version(s): Which browser/version combinations must this website support?

* IE 7.0
* IE 6.0
* Firefox 3.0
* Firefox 2.0-2.x
* Firefox 1.5
* Safari 41
* Firefox 1.0

Server Hosting Environment: What is your server hosting environment?
I have a server at a 3rd party hosting company.
The name of the hosting company is: Voxel.net
The server's shared/dedicated status is: Dedicated just to me.

Component Compatibility Protection:
Sometimes a programmer may create features on the website that rely on componentswhich work fine on their own server, but won't work with your 3rd party hosting company's server. There are many reasons for this including version incompatibility, restricted permissions, etc... Rent A Coder normally requires that the programmer verify in advance that your 3rd party hosting provider will support the components. If they do not, then they are responsible for any incompatibilities, rather than you. Do you want this protection on your project?
No, I will be responsible for any components of the final solution that do not work with my hosting company.
Server Hosting Environment: Will the coder develop "live" on your server?
No. The programmer is responsible for creating their own development and/or qc environment.
Physical installation: Who will perform the physical installation?
The programmer will perform the physical installation, and will be given all necessary permissions to do so.
Desktop / server program info
Size of application: How many screens/forms need to be created/edited in this application?
Approximately 3-5.
Programming Language: What programming language(s) do you want your application written in?
I do know the language(s).
Languages(s):

* Java

Misc. details: Would like Mac and PC versions of upload app, that's why I have chosen Java for cross-compatibility (clone of)
http://www.4shared.com/uploader/



Operating system(s) What operating systems(s) do you want your application to work on?
I do know the operating system(s):
# Microsoft Windows -- version(s): XP, Vista, 7
# Macintosh -- version(s): 9, OS X
Database: Will this project include a database?
No, it does not include a database.
Installation Program: Does the programmer need to create an installation program?
Yes AND the program will be installed on only a single computer.
Legal: 1) I require complete and fully-functional working program(s) in executable form as well as complete source code of all work done (so that I may modify it in the future).
2) Deliverables must be in ready-to-run condition as follows (depending on the nature of the deliverables):
2a) Any website server-side deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
2b) If there are any server-side deliverables (intended to only exist in one place in the Buyer's environment) then they must be installed by the Seller in ready-to-run condition (unless specified elsewhere by the Buyer).
2c) All other software (including but not limited to any desktop software or software the buyer intends to distribute) must include a software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request (unless specified elsewhere by the Buyer).
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased.
3b) No part of the deliverable may contain any copyright restricted 3rd party components (including GPL, GNU, Copyleft, etc.) unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the seller's Seller Legal Agreement.
Other Requirements:
File Hosting script that allows users to have virtual folders which mimic the windows operating system (i.e.: http://www.4shared.com/dir/1567809/8fff9481/clone.html). Must support username/password authentication features, and other permissions should be able to be set by users.

*virus scanning feature*
integration of http://www.kaspersky.com/anti-virus_linux_file_server - automated for all premium paid users - free users have "insecure" virtual drives

--Ability to upload files from desktop computer, remote url, or torrent.
*1 file or multiple file upload options
-Javascript & AJAX based uploader and file manager
*ability to tag uploads with relevant keywords
*Virtual Drive Privacy*
User will have the ability to toggle entire folders and individual files are private or publicly viewable
i.e.: ourdomainname.com/username and username.ourdomainname.com will display the user's publicly viewable files.
*Photo album folders*
--users will be able to assign passwords to directories and files
Ability for users to upload photos and create photo albums

*in frame playback*
music files should play in browser
movie files should play in browser
flash files should play in browser


*search feature*
ability to have homepage search box that will search uploaded files which are toggled for public viewing by users and show results based on file name and tag matches
-ability to do advanced search and select/filter different file types to give results for
-thumbnails for image results, zip folder icon for .zip matches, file icon for .exe matches, etc.


Different classes of users - free vs. paid and bandwidth throttling depending on class of user.
--Need the ability to track user's bandwidth usage and limit resources (maximum file storage space, etc.)
--PayPal integration for automatic account creation and resource allocation


* Torrent proxy feature* (similar to www.furk.net)- allow users to submit .torrent urls or upload a .torrent file from their desktop from all major trackers (i.e.: http://isohunt.com/download/105241149/debian.torrent) at which point, OUR server will act as a torrent client, and download the torrented file that the user requests, and once it is finished, place it in their virtual drive for http download. The user will also be shown the status of the download with an avg k/s meter and a completion meter.

*File caching*
torrent downloads will be cached with an expiry of a definable number of days (i.e.: 30 days) - when a user downloads a torrented file to OUR servers it will be deleted in 30 days, unless another user requests the exact same .torrent download (MD5 checksum, maybe?), then the 30 day expiration starts over.

If the torrent has already been downloaded by another user, and the files are still active in our cache of recently downloaded files, then the user should be able to directly download the files without waiting. If the files are not currently available, the .torrent is moved into a queue of torrents to be downloaded by our torrenting cluster (if the same .torrent is not already in the queue from another user). Our torrenting cluster will then download the files, and upon completion, will import them into our mogilefs file system, while also updating the database accordingly so that it knows what files are associated with the downloaded torrent, and so it knows where to get those files and that they are available.

MogileFS functions best with chunks of data under 64GB, so we must segment files for scalability.

*1 IP download links*
Torrented files will be in a special folder in the user's virtual drive which can only be viewed by the user when logged in. i.e.: to prevent users from sharing links to files in the torrent directory, they must be logged in to get the download links - and to prevent users from sharing download links - only the IP address of the logged in user that generates a link in THAT specific instance will be able to download from that link using their web browser or download manager.

*Virtual Drive Privacy*
User will have the ability to toggle entire folders and individual files are private or publicly viewable

i.e.: ourdomainname.com/username and username.ourdomainname.com will display the user's publicly viewable files.


*download multiple files as 1 zip file*
We want users to be able to download multiple files as one .zip file. We have a module for nginx programmed for us that can do this. Upon being supplied a list of files, their crc32's, and other relevant information that we already have available, this module will create a zip file on the fly to stream to the end user, while also supporting resuming.

In order to finish this functionality, our script needs to let the user decide which files they want to include in their .zip archive they are downloading, and then pass the list of files off to the nginx zip manager when the user tries to download the .zip archive.

The user should be able to select which files to zip from their virtual drive interface.

*DMCA banning feature*
We will need to be able to ban individual .torrents, or individual actual files, in order to respond to DMCA complaints.

*scalability*
As we plan to be able to quickly support many servers, thousands of users, and many terabytes of files in a system that may or may not properly handle this, load testing and scaling testing will be needed before launch to identify our initial bottlenecks so that we can address them.

Skills required:
AJAX, Anything Goes, Javascript, MySQL, PHP
About the employer:
Verified
Public Clarification Board
Bids are hidden by the project creator. Log in as the employer to view bids or to bid on this project.
You will not be able to bid on this project if you are not qualified in one of the job categories. To see your qualifications click here.