DDNS v3 remote update protocol
==============================

	TCP based: ns.ddns.nu:2164

	Requests:

		<command>[ arg0 arg1 ...]\r\n

		<command> :=	HELP | MOTD | LOGIN | LOGOUT | LIST | SET
				| EXIT | QUIT

	Responses:

		+OK <arbitary text>\r\n
		@RET <arbitary text>\r\n[<arbitary data>\r\n].\r\n
		-ERR <arbitary text>\r\n

	Welcome Banner:

		DDNS v<version> ( <authentication types supported> )\r\n

		Within the auth types returned their may be data required
		for specific authentication methods, like challenge
		cookies or public keys.


	Command Details (core):

		LOGIN <usrspec> <authspec>

			Authenticate with server.

			Arguments vary depending on authentication used

			Plaintext (plaintext):

				LOGIN <username> <password>

			Crypt (crypt):

				LOGIN <username> <crypt() password hash>

			MD5 (md5):

				LOGIN <username> <md5() password hash>

			DDNS (ddns{<their challenge>};):

				LOGIN <username> <password response>

				response := md5(<password>":"<their challenge>)

			Strong (strong{<their challenge>};):

				LOGIN <user response> <password response> <our challenge>

				user := md5(<username>":"<our challenge>)
				pass := md5(<password>":"<their challenge>)

		LOGOUT

			Unauthenticates the current connection.

		LIST

			Allows an authenticated user to view their IP
			handles

		SET <handle name> <ip>

			Allows an authenticated user to set one of their
			handles to the supplied IP.

		QUIT

			Terminates the connection


	Command Details (optional):

		HELP

			Optional command, Returns helpful information

		MOTD

			Optional command, Returns tha message of the day

		EXIT

			Optional command, terminates the connection
