@(#) $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.