!!FAST - My Media Share Persistent Store Assembly

Register
Submit a solution
The challenge is finished.

Challenge Overview

Competition Task Overview

My Media Share is a server app that allows uploading of photos and videos which will simultaneously show in the user's TV and be saved to their XCloud.

For this challenge, we need to enhance the code to save some info when the app sends SMS to phone numbers.

Detailed Requriements

  1. Accept encrypted data from the url in a parameter called 'aid'. The name of this parameter must be configurable through the config.js file (the current code already accepts a parameter called authGuid, now it will accept another one).
  2. Generate and provide a public/private key pair for use in development and testing ONLY. We'll replace these in production with values provided by Comcast. These keys have nothing to do with the data in #1 above.
  3. Encrypt the encrypted data from #1, along with the phone number, and the date and time at the moment of encryption. All this data should be stored in a single field with the different parts separated by double colons following this pattern:
    • encrypteddatafromclient::phone_number::timestamp
    • The data should be encrypted using the public key from #2 above.
  4. Encrypt the phone number separately, also using the public key from 2. Note path to the public key should be configurable in config.js. Both keys should be included in your submission
  5. Insert the data into a MySQL table called CustomerAcceptance which has two columns:
    • TN (this is the primary key, and does not need to be unique. The encrypted phone number from #4 will be stored here.
    • DATA The encrypted string from 3 will be stored here.
  6. The submission should include the SQL statements for setting up this table.
  7. The parameters for connecting to the database should be stored in config.js in a way that makes them easy to change.
  8. If the insert fails for any reason this must be captured and written to a separate file called insert_errors.log. In this file all the data that would have been written to mysql must be stored, as well as the reason for the failure.
  9. No piece of the database code can be exposed in files that get downloaded to the client. This shouldn't be a problem, but we just need to be clear about it.

NOTE: the above should be done whenever user confirms sending SMS to a phone number (on both home page and the viewer page).

Technology Overview

  • MySQL
  • Node.js
  • Ubuntu / CentOS

Documentation Provided

Register to download existing code from challenge forum.



Final Submission Guidelines

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials 

Below is an overview of the deliverables:

  • Updated source code with the requriements implemented
  • The public and private keys you generated
  • SQL Statements for setting up database / table
  • A complete and detailed deployment documented explaining how to deploy the application including configuration information.

Final Submission

For each member, the final submission should be uploaded to the Online Review Tool.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30044073