We are in need of a Mac OS X developer who can write an application that starts up on boot and runs as a service and monitors all network traffic going in and out of the computer. This application will report the activity on the network to a remote server via HTTPS using HTTP POST request and XML response.
We currently have an NDIS driven application which runs on Windows XP and Vista and need an equivalent application for the Mac OS X.
The purpose of this application is to:
1. Watch and report to the server what sites or servers (URLs via HTTP/HTTPS or IPs for other non-HTTP traffic) the user is accessing.
2. Scan content (TCP/IP and UDP request and response) for matches to a bank of keywords so the server can be notified if certain types of content are being transmitted over the network.
The actual content for the network (TCP/IP and/or UDP) traffic will not be shared with the server unless a keyword is detected and then only small snippets of content will be sent so we know the context within which the keyword was found.
The requirements are as follows:
1. Must be easy to install on Mac OS X 10.4+ . This installer must include a simple wizard that has the following screens:
a) Agreement to Terms and Conditions screen
b) Log in that takes a user name, password and desired machine name so it can log into the remote server via HTTPS POST and then receive an XML response that has account information needed for the rest of the wizard.
c) Select notifier screen which lists out "notifiers". List of notifiers is obtained through an HTTPS POST / XML response to the server. User selects 1 to many notifiers and then goes to next screen.
d) Select payment (payment is NOT made here, there are a list of payments already made and they select one). List of payments is obtained through an HTTPS POST / XML response to the server. A button to make payment opens a browser to the web site.
e) Final screen with an image, a button that links to the web site and a close button.
2. Must run as a startup service and be able to monitor all network traffic on all network devices
3. Must be able to monitor all TCP/IP traffic (HTTP, HTTPS, chats, etc.)
4. Must be able to gather the following and send to the server for all network requests:
b) User (user account name for who made the request)
c) Application (executable name) that made the request
d) Domain Name / IP request was sent to
e) URL requested (HTTP/HTTPS traffic only)
f) Port number connected to
g) Content type returned (if available)
h) Size of response in kb
5. Must be able to scan content for keywords and report approx 200 characters around detected keywords (100 before and 100 after) to server.
6. Must make regular checks to the server to get settings and configuration information which include:
a) List of Domain Names / IP addresses to ignore and NOT report (this changes from time to time)
b) List of keywords (this changes from time to time)
7. Client console application built that allows a user to see if the service is running and get simple information from the server using HTTPS POST / XML response. It will also have a series of buttons that just open a browser to specific URLs on the web site.
Source code must be provided upon delivery and before final payment. Payment can be made in increments as the application is completed and checked into source control (SVN) - SVN repository will be provided. These payment increments must be determined and agreed upon before development begins.