Was looking to get this developed in MS Visual Studio. Is it doable in Java?
Download [url removed, login to view] for better format and more details.
This project is ideal for those who have worked with peer - peer file sharing applications with Linux servers providing backend services, secure connections and data encryption.
At the end:
· You will provide full source code and documentation so my developer can understand and support the code.
· Intellectual property passes to me.
If you want the job, then you must show you pay attention to details. Don’t bid if you don’t have the required experience:
· Security issues
· Dealing with secure connections and encryption
· Developing Win API
· File sharing
· File compression
Payment in milestones, through escrow.
Below is an overview of what I want. I have a good idea of how it should work. I want someone who can work with me to get the best design.
Windows API – Main Features:
· Security is a BIG issue. Encryption used MUST be strong.
· Multi-lingual. All messages, error messages, displayed text and prompts must cater for multiple languages, including support for Asian languages.
· Create Private and Public set of keys
· Exchange keys between PC – Server. Partner keys exchanged via intermediary servers.
· Manage Private / Public Keys (client will have public keys belonging to servers and many partners).
· Connect to a Server and or another PC.
· ALL connections between PC - Server and PC - PC must be secure.
· Authentication: PC - Server (Linux), PC - PC
· Process .XML files to determine which task needs to be performed.
· Compress / Decompress files and folders.
· Encrypt / Decrypt files incorporating Private / Public key pairs
· Upload / download files from a Windows client to one of a group of Linux servers
· Upload / download files from a Windows PC to another Windows PC (as in peer - peer file sharing)
· Size of files can be large (10GB+)
· Copies of the uploaded and downloaded messages and files are saved in the local database or in part as separate files.
· Task Manager. Probably run as a Windows service. Lists all jobs in the job queue. It then starts and manages processes, listed above (compress / decompress, encrypt, decrypt, upload, download etc..).
· Multi-threading. Multiple jobs of the same type may be queued and running at any one time.
· Task Priority. All jobs need to run at low / lower priority to prevent impact on PC performance. May be the task priority could be set in the .INI file.
· Job Monitor. When the different jobs / tasks run, they update their progress in the job queue. The Job monitor can then display every queued job and how far it has progressed. The display will include job details, graphical progress bar, start time, elapsed time and approximate time remaining for each active job. The job monitor may be started and closed down or minimised to the system tray. Some jobs may be run in silent mode i.e. not shown in the Job Monitor.
· Data Reads - Queries. Approximately 12 database read functions that return different table data as objects. These include record sets, single record, text file stored in a record or binary files (compressed data) saved in the record or as a filename pointing to a file on disk.
· Data Writes. Create (fields include text, text files and binary data), Update, Delete (some records may be protected and can not be deleted) single and multiple records.
· Listener / Server (Windows PC).
1. This will be listening for a secure connection from another PC.
2. Both PCs will have the other PC's public keys.
3. Both PCs will connect to the same or a different Linux server.
4. Each PC knows which server the other PC connects to and can request the other PC's IP address. This IP address will be save for future use. The IP will be requested only if last known IP address fails.
5. The connection method should be able to negotiate firewalls (i.e. use UDP hole punching or similar).
6. File transfer is mediated by the sending PC's server. That is, the PC has to get 'permission' from its server before transferring messages and files.
7. After completion, the sending PC gets a transaction completion 'receipt' (binary encrypted file) which is saved in the local database.
The system data store:
· Will be made up of a central database (probably MS Access but you must cater for MS SQL desktop, MySQL and MS SQL Server)
· Will also have number of sub-folders containing various files.
· The database has a messages table for saving text / html messages.
· Small attachment files (size limit set in .INI file) are stored in the messages table in the database and larger files saved separately within sub-folders.
Linux Server with MySQL database:
This is for testing the above Windows API. The Linux and Windows API must be able to demonstrate the following features:
· Client makes a secure connection with server.
· On first time connection, Client PC request an account ID and password from server and saves them for future use.
· Server and Client, both able to create public and private keys (saved for future use).
· Server & Client exchange public keys.
· Connection is dropped and all future connections are secure and use exchanged keys.
· Server must demonstrate connection capability from multiple PCs with different login details.
· Client can upload binary file which is saved in client's private area on the server
· Client can request a list of file saved on the server
· Client can request and download a binary file (file remains on server)
· Client can request the file to be deleted after transfer completion.
· Client can request another client's public key (by sending that client's account ID)
· PC Client (PCc) - PC Server (PCs) i.e. P2P transfer
· PCc establishes a secure connects to PCs using each other's public keys when both PCs are behind firewalls.
· PCc can then upload text and binary files. All data transfer has to be listed in the job queue (at both ends, client and server) and show in the job monitor.