      @(#) $Id: Notify.htm,v 1.1 2004/08/29 09:56:58 svante Exp $

# Notify Component

A mechanism is provided for the user to request notifications of updates and security patches. It is also concurrently used to collect some very basic and non-intrusive information about the installation base. No personal information is sent.

The component is currently implemented as part of the NSIS install script, and as a separate script based on the same code. What they both do is build a request string and perform a single HTTP GET with a URL including a query. A typical request may look like this:

>     http://notify.mycrypt.com/notify.asp?email=secret.agent@fbi.gov&Update=1&Program=MyCrypt&Previous=1.5.2&Version=1.5.4&Windows=WinXP&Language=1040&After=1

Not all information is provided in every instance, it depends on the user choices. No validation is performed for user entered data - specifically the e-mail address may be invalid, and possibly corrupting the interpretation of what follows.

A http URL is composed like this:

> http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

The notify component will treat the part up until the "?" as an arbitrary string to be defined, so this can basically be anything, but typically it'll be a FQDN like notify.mycrypt.com, followed by the absolute path to a script or something else.

The query consists of a number of parameter assignments, separated by the ampersand (&) character. They may appear in any order and in any combination, except no parameters will be repeated.

### email

The e-mail address specified by the user. This is not validated, and may be erroneous if a user insists. Some basic checks are made to determine that it contains at least one "." and one "@".

### Update

May take the value '0' or '1', normally will not be included if the value is '0'. A '1' indicates that this is an upgrade of a previous installation.

### Program

The name of the program being installed, perhaps 'MyCrypt'.

### Previous

The version of the previous installation being upgraded. See 'Version' below for the format used.

### Version

The version being installed.

Versions consists of for decimal values for 'major', 'minor', 'lesser' and 'patch'. Version numbers are in a strictly increasing sequence, thus version 1.5 Beta 4.1 means the first beta version of what will likely become version 1.5.5, or possibly 1.6.

This is in the format of n.n[.|b|d]n.n . A typical example may be '1.5.4', or '1.5b4.2'. The 'b' indicates that it is a beta version. A 'd' indicates that it's a development snapshot. Numbers may be >= 10, although it's unlikely...

### Windows

The version of Windows used by the user, identified by a string. Currently the value may be one of:

Win95, Win98, WinME, NT3, NT4, Win2K, WinXP, W2003 or finally WinXX for unknown future revisions.

### Language

The language choosen by the user for the program. It is a numerical code corresponding to the language codes used by Windows. Typical values include:

1031 - German
1033 - English
1034 - Spanish
1036 - French
1040 - Italian
1053 - Swedish

### After

Tells when the request was made - during the initial install, or as a separate use of the 'Notify Me' utility. The possible values are '0', '1' and '2' currently. '0' means that the request was made during a regular installation. '1' means that the Notify Me wizard was called after the main installation. '2' means that a link in an notification mail was used to change the preference.