NOTICE 2007-07-21

Due to constant problems with Second Life's email server, objdns is deprecated! New registrations will fail and messages may never be delivered. Use httpdb to store/retrieve server keys and send emails directly instead.

objdns

objdns is a simple service that maps names to object keys in Second Life. You register a name, and any emails from Second Life objects addressed to that name will go to the key you specify. You can change the key whenever you need to, or have an object update it automatically. It also provides a method of querying the database, so you can send sensitive information directly.

This allows you, for instance, to have an auto-update server in Second Life without having to worry about it breaking if the server object is returned or otherwise has its key changed. You can simply have it update it's objdns entry whenever it is rezzed.

Updates

2006-03-16

Added support for "prefixes" or "subdomains." After creating a name at the website, you may automatically create up to 100 additional entries in the form name+subname. For example, if you create the name "test", you can have a script register "test+obj1" and "test+obj2" without visiting the website. See the register section for more information.

2006-03-07

The body of the register message is now stored, and will be sent in response to query messages. If you have Javascript enabled in your browser, you can use the Random button to generate a random name, and the strength of your password will be displayed as you type it.

Registering

To register an object, type a name and password in the box above. If the name is not already taken, an entry will be created for it. To actually associate an object key with that name, you must send an email from that object to register@objdns.w-hat.com with a subject in the form "name,pass[,new_pass[,sub_pass[,new_sub_pass]]]". The body of the message will be stored and sent back in response to queries.

The sub_pass and new_sub_pass fields are for use with "subnames." After you register a name at the website, you may automatically create up to 100 additional names in the form name+subname. If you do not provide a separate sub_pass, it will be the same as pass. To provide a sub_pass without changing the main password, just put the same password in the new_pass field. If you are creating a new subname and provide both sub_pass and new_sub_pass, sub_pass will be ignored.

Note that when registering or querying a subname, both passwords must match. That is, pass must match for name and sub_pass must match for sub_name.

Example subjects:

Here's a script to make it easy:

string name             = "whatever"; // the name you signed up for
string password         = "password"; // the password you used
string new_password     = "";         // fill in to change the password
string sub_name         = "";         // fill in for sub names
string sub_password     = "";         // password for sub name
string sub_new_password = "";         // fill in to change sub password
string txt              = "";         // extra info to send when queried

default {
    state_entry() {
        list data;

        // registering a subname
        if ( sub_name != "" ) {
            // the new_password field must be filled in to use subnames,
            // so just set it to the same password
            if ( new_password == "" )
                new_password = password;

            // fill in base info
            data += [name + "+" + sub_name, password, new_password];
            
            // add sub password
            data += sub_password;

            // change sub password if needed
            if ( sub_new_password != "" )
                data += sub_new_password;

        // registering a regular name
        } else {
            data += [name, password];
            if ( new_password != "" )
                data += new_password;
        }

        llEmail( "register@objdns.w-hat.com", llList2CSV(data), txt );
    }
}

This procedure is intended to prevent abuse. It ensures that you cannot put the key of someone else's object in and use this service to spam it, and it prevents scripts from automatically creating new accounts.

Sending Email

Any emails received at name@objdns.w-hat.com will be passed to your object unmodified. No password or other checking is done. If you don't want other people emailing your object, choose a name that is sufficiently obtuse. Note that only emails originating from within agni.lindenlab.com with a valid UUID as the sender address will be delivered. Anything else will be silently ignored.

Querying

To query an object, send an email to query@objdns.w-hat.com with a subject in the form name,password[,sub_password]. An email will be sent back with the subject name,key, and the body of the last received register message. If there was an error, key will be notfound or badpass, and the body will be empty.

Misc

A name may be deleted if:

Passwords are stored as salted MD5 hashes, so if you lose your password, it cannot be recovered.