NASA Astronaut Email - TCP Proxy Assembly

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

NASA needs to integrate the ION Disruption Tolerant Networking (DTN) implementation of Bundle Protocol (BP) with Microsoft Outlook and Microsoft Exchange Server to support the transfer of astronaut email to/from the International Space Station (ISS).

Microsoft Exchange Server currently supports RPC over HTTP(s) protocol (a.k.a. Outlook Anywhere -  http://msdn.microsoft.com/en-us/library/cc243950.aspx). TopCoder will assemble an HTTP(s) proxy that will use DTN to transport the data to earth.

This objective will be divded in 3 parts. This is the first part of the competition which is assemble an SSL proxy (without DTN).

We attempted to use existing HTTP servers but without success. Microsoft RPC over HTTP specification (http://msdn.microsoft.com/en-us/library/cc243950.aspx) has a glitch that prevents standard http servers to work. Outlook client will establish 2 connections with the Exchange/IIS server and it will keep this connection opened by sending a large content-length. Our HTTP(s) proxy must be able to sustain the connections.

There is no architecture for this contest. Overall requirements are:

1) Proxy should be configurable: incoming port, outcoming URL and maximum number of connections

2) Must be multithreaded: when a new connection is established, spawn a thread to establish a new connection to the server, handle incoming data from outlook client and send it to the server.

3) When the client or the server ends a connection you must end the other part.

  • 2) & 3) will form a virtual connection channel. Outlook client will open 2 connections and send data from one of the connections and receive from the other. This means that you should not write and wait for a response. You should simply pass the information you receive, so the reading and writing should be independent of each other for each connection (client and server).

4) Listen to HTTP(s) requests: using SSL certificate.

5) Establish an HTTP(s) connection with Exchange IIS server.

6) Must work with Outlook client and Exchange Server.

7) The proxy should not need to open the HTTP packet. It should be transparent. It will always open a connection to the same destination.

8) Logging is desirable

The assembly is complete if one is able to send and receive emails through the proxy.

Even though not multithreaded and not working with outlook client, this proxy source code might be a very good starting point: https://github.com/szilu/SSL-Proxy/blob/master/ssl_proxy.c

The picture below illustrates the outcome of the assembly:



Final Submission Guidelines

A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at:

http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
 
Deliverables

    Source code and configuration files.
    Deployment guide to configure and verify the application.

 
Technology overview

  •     Linux (Redhat or Ubuntu)
  •     C
  •     HTTP 1.0/1.1
  •     Microsoft Outlook 2010
  •     Exchange Server 2010
  •     Outlook Anywhere (aka RPC over HTTP)

 
Development Environment

  •     You should be able to develop this in a Linux OS without any Amazon VMs, but if needed, you may request a VM by email to romanoTC: romanotc@copilots.topcoder.com.
  •     Attached in the forum there is a document with instructions on how to setup your Outlook client.

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30041736