ODS Development and Support
- a sub-site of ODS dedicated to developing and supporting!

Protocol Specification

Our many thanks to Mats Mattsson for taking the time to do the initial re-write of the protocol spec, I haven't had a lot of time to do it recently. Any questions about the protocol or ODS server workings can be emailed to Scott

Each command that requires arguments may have these responses:
300 Not enough arguments
300 Too many arguments
Each command enclosed in <>s indicates that it is the server giving you information, not a command you give to the server

ODS Protocol by Mats Mattson, revised by Scott Taggart
Last updated: Sunday 3rd November 2002
Clients should connect to ODS via the hostname update.ods.org on port 7070 (tcp) for unencrypted communications or port 7071 (tcp) for encrypted communications via a SSH Tunnel (stunnel)
All queries should be directed to Scott

Other administrative commands are not listed here

Command Login
Required
Description Return codes
<connection opened> No Session welcome message 100 Open Domain Server <version> <OS> <time/date>.
<command timeout> No No commands have been sent for 300 seconds - Disconnected 000 Your session has timed out.
closed
<unknown command> No Invalid command None
ADDRR <host> A|AAAA|CNAME <target>[:TTL] Yes Will add an A/AAAA/CNAME record. A points to an IPv4 address, AAAA points to IPv6 addresses (see notes below about format) and CNAME points to a valid hostname. The TTL value is how long the host will be cached in the DNS servers compliant with standards, default is 180 seconds.
Note: a target of CONNIP for an A record will add your connecting IP address as target
300 Host owned by another user

300 TTL out of range

300 Not logged in

400 Illegal input - disconnected

795 RR successfully added

ADDRR <host> MX <target>[:priority] Yes Will add an MX record, a mail relay record for your hostname. The mailer will try the servers with small priority numbers first, if equal it will try a random server 300 Priority out of range

300 Host owned by another user

300 Not logged in

400 Illegal input - disconnected

795 RR successfully added

ADDRR <host> NS <target> Yes Will add an NS record, a nameserver record 300 Host owned by another user

300 Not logged in

400 Illegal input - disconnected

795 RR successfully added

ADDUSER <username> <password> <e-mail> <firstname> <lastname> No Will add the specified user/password if possible 210 User successfully added

300 An error occurred: <error message>

CHPASS <new-pass> <repeat-pass> Yes Changes password for current user 220 Password successfully changed

300 Passwords do not match

DELRR <host> [A|AAAA|MX|NS <target>[:priority/ttl]] Yes Will delete a DNS record. Just specifying host will delete the first A record matching. When deleting MX records you need to specify the priority, you need to specify TTL's for records with a TTL also 300 Domain for host not found

300 RR not found

901 RR successfully deleted
DELUSER <username> <password> Yes Will delete the specified user 300 Unknown, Not logged in

520 User successfully deleted - disconnected

520 Delete user failed - disconnected

DOMAINS No Lists the available domain names. 181 and 182 responses are multilined based on how many domains there are 180 -- PUBLIC DOMAINS --
180 <public domains>

181 -- PRIVATE DOMAINS --
182 <private domains>
189 -- END OF LIST --

FINGER <username> No Returns some info about the user 160 -- FINGER USER --
160 Username: <user>
160 Email: <e-mail>
160 Name: <name>
160 -- END FINGER USER --

300 User not found

HELP No Will list the commands you are able use at the moment (some errors though). The list depends of if you are logged in or not. Response is multilined 110 -- HELP --
110 <command> [parameters]
110 -- END HELP --
LOGIN <username> <password> No Will log you in with your username and password 225 Login successful

520 Login failed
closed

LISTRR Yes Will list all current records in the database for that user. Response is multilined based on number of records 150 -- HOSTS --
150 <hostname> <record_type> <target[:ttl/priority]>
150 -- END of RR LIST --
QUIT No Will end the session 299 Goodbye
STATS No Will print current information of the server 130 ODS has n/n active/users, n RRs, n/n private/domains
VERSION No Will return with information of the current server software version. Multilined 120 <version info, a few lines>
120 -- MODULE VERSION STATUS --
120 <module version, etc>
120 -- END MODULE VERSION STATUS --
WHOAMI No Returns your username 140 Logged in as <user>

300 Unknown, Not logged in

WHOIS <hostname> No Prints information about the specified hostname. Response is one error line or multilined 170 -- WHOIS INFORMATION --
170 Hostname: <hostname>
170 Owner Username: <user>
170 Owner Email: <e-mail>
170 Owner Fullname: <name>
170 -- END WHOIS --

300 Domain for host not found

Note on IPv6 format: You must use a '.' instead of a ':' as a delimiter
in the IPv6 addresses when adding. Also every hextet must have a hexadecimal value in it. For example:

3ffe.c00..1 is invalid.. You must do 3ffe.c00.0.0.0.0.0.1