Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

objDNS - who's a technical contact for questions

Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-15-2006 04:38
re objdns - http://w-hat.com/objdns

Does anyone know a technical contact for questions

I'm trying to find out whether object registration can be fully automated using the object script, or whether there is always a pre-requisite manual step where you go to the web site to pre-register the name (after which it requires the object to send an email to activate it).

thanks
Masakazu Kojima
ケロ
Join date: 23 Apr 2004
Posts: 232
03-15-2006 04:46
Pasting my response to your IM:

I made objdns. Right now you have to manually create every name you want to use, but any object can use any existing name. I am open to suggestions for allowing objects to create new entries automatically without making it easy to create millions of entries. Maybe I could make it so you register a prefix, and then can automatically create names with that prefix.
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-15-2006 06:23
Hi Masakazu,

Firstly thanks for objDns! Its fantastic! I'm in the process of abstracting UUIDs away from working scripts.

Background

I'm running with the concept of a service locator script which:

a) registers itself on_rez with objdns - but it will prefix a small string unique to me, then a system_instance number, then object name. For example: .SystemInstance2.controllerObjectName. The instance string ("SystemInstance2"";) is picked up from a notecard, so this would be changed & different for each instance of the system/game which is handed out to others or rezzed.

Then a 2 step name resolution for object name identifiers (like a dns name) which it will need to communicate with:

b) looks up a UUID notecard which contains <Name, UUID> for the system/game, however normally I'd leave the UUID empty so that the next step (objdns) is where the UUID would be discovered. Have this step in place would be a fallback if objdns goes off the air (i.e. just update the UUID's manually in the notecard)

c) looks up a UUID from objDNS

Then any script in any object in the system just does a lookup to the service locator script to resolve the UUID. In fact the comms script would just provide the comms services (abstracted) so that working scripts only ever deal with names (i.e. like dnsnames).

Anyway (oh and any ideas/feedback on the above welcomed)...

Request / Idea

What would be great is if the requirement for the first manual (via the web site) name registration could be dropped. This makes it much simpler which you rez a second instance of a game/system as the objects will automatically register themselves, and the new owner won't have to go and manually pre-register the names on the site.

I can't offhand quite see that you'd be opening the site up for spam based entries any more that could be possible via a scripted external and in-world solution? Perhaps I'm missing something.

So my goal would be to allow a new instance of a whole system (e.g. multiple objects etc) to be rezz'ed and for them to have the ability to auto-register.


Cheers
Greg

PS Just went to IM you too, but the grid is down for the update :)
Masakazu Kojima
ケロ
Join date: 23 Apr 2004
Posts: 232
03-15-2006 08:01
From: Greg Hauptmann
I can't offhand quite see that you'd be opening the site up for spam based entries any more that could be possible via a scripted external and in-world solution? Perhaps I'm missing something.
There is no kind of identifying information for emails from objects inside SL. If someone flooded it from within SL, I'd have to stop registrations indefinitely, possibly changing the protocol before I could open them again, and I'd probably have to delete all the accounts created during the time of the flood. By requiring the website to create an account, I could change the sign up process slightly to break the automated sign ups, or even use something like captcha, and with IP addresses and webserver logs, there are a lot of ways I could approach wiping out the spam entries without hurting legitimate entries and without spending much time on it.

Basically, I do not want to make it easy to use LL's servers as a vector for a denial of service attack against mine, because I know certain people would jump at the opportunity, and I know that LL would completely fail at doing anything about it. Even though I could contain the loss of service to objdns, I think that is still unacceptable.

If I allowed signing up for a prefix, and then automated creation of a limited number of entries using that prefix (maybe say 100 to start and increased on a case-by-case basis), I think that would solve both problems nicely. Would this work for you? Do you see any problems with it?
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
03-15-2006 08:22
prefix support was on my mind actualy.

to register a subdomain, you would do something like...
this way you could only register a subdomain if you knew the domain password. Which is a good thing in my book. After that point it would work just like a normal domain name.

You could run your own registry, by having people send in emails to your domain and then your box creating the account, so the domain password is never distributed. This way you could also reset the password on a subdomain if it gets lost/forgotten/hacked.

CODE

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, or new password for subdomain
string subdomain = ""; //subdomain name
string txt = ""; // extra info to send when queried

default {
state_entry() {
list data = [name, password];
if ( (subdomain+new_password) != "" ) data += new_password;
if ( subdomain != "" ) data += new_subdomain;
llEmail( "register@objdns.w-hat.com", llList2CSV(data), txt );
}
}
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river.
- Cyril Connolly

Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence.
- James Nachtwey
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-15-2006 13:30
From: Masakazu Kojima
If I allowed signing up for a prefix, and then automated creation of a limited number of entries using that prefix (maybe say 100 to start and increased on a case-by-case basis), I think that would solve both problems nicely. Would this work for you? Do you see any problems with it?
Sounds great - would make me happy.

How difficult would this be for you to implement? Would it take long Masakazu?

Tks again
Masakazu Kojima
ケロ
Join date: 23 Apr 2004
Posts: 232
03-16-2006 05:31
It's in now: http://w-hat.com/objdns

Once you register a name, you can register "name+subname" also. You send mail to it at name+subname@objdns.w-hat.com. Should be pretty straightforward, even though the example register script ended up clunkier than I'd like. I could've made it simpler by splitting the password on + as well, but I've used + in my own passwords and I have no way to tell if anyone else is.

I haven't decided what, if anything, to do with additional +'s in the name. Right now "a+b+c+d" is treated as just "a+b". It might be neat to allow sub-sub-names and so on with passwords for each level, but I can't really see any use for that.
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-16-2006 12:47
wow - that was quick - I'll jump in and try now

Re the separator, I've used the "." in the past to try to align with the DNS approach (www.google.com), which I think is used in LDAP naming too I think(?). Isn't really an issue for me as so far I still havn't finished off a system/game project in real life so I have nothing really in production :)

Tks again
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-16-2006 12:51
PS Just whilst I think of it it may be good to publish like a little API script, so that the users interface are LINK API message like:
- register(domain, name, password)
- lookup(domain, name, password)

There would be the worker script + client side snippets they paste in (some functions + link message section where the results return). That is just drop main script [e.g. objdnsInterface.lsl] into your objects then use the API calls in any of your business scripts via link messages. Just an idea.
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
name size limit
03-16-2006 12:57
PSS (sorry for another post)

Just noted previously the name limit was 32 I think? (can't quite recall).

Would it be possible to increase this? Just in my concept where I would use "<domain>+<SystemInstance>.<objectName>" this could be limiting. I wonder what the DNS name limits are.
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
Invalid name: May contain only: a-z, 0-9, _, ., -
03-16-2006 13:50
Just got a "Invalid name: May contain only: a-z, 0-9, _, ., -" message when I tried to verify my subname registration from SL had worked (as my SL query was getting not found). That is I was in the web page when this happened, however I only sent in a <name>+<string>.<string>. This should have been an acceptance name no?

I'll private mail you the actual name I used
Masakazu Kojima
ケロ
Join date: 23 Apr 2004
Posts: 232
03-16-2006 14:15
Okay, I made it let + through for queries on the website, and increased the limit for name+sub to 128 chars (the base name is still limited to 32). The name you sent me exists in the database, but there are a bunch of failed registrations and queries with a similar name that has a space in it.
edit: actually, it is saying notfound with the correct name, I will see what's going on.
edit2: ok, the notfounds it sent were all before it was registered correctly.

If you want to put together some little API functions for it I'd be happy to post it on the objdns page.

"DNS" is more of a convenient way to think of what it does than something it is intended to model. I chose + for the separator because it's valid in email addresses but wasn't allowed in objdns names, and it is used by some other email systems for a similar purpose.
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-16-2006 15:20
excellent - thanks Masakazu - can't get online for a bit but once I do I'll try things out again - I'm quite enjoying this actually :)
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
1st query after re-registration gives old value
03-17-2006 13:24
Masakazu - Just noting something strange (not sure it is me at my end). After I do a re-registration (e.g. TAKE and object and re-rezz, then it re-registers), when I do a query for this name the 1st value I get back is the old value, but the 2nd try gets the correct/latest UUID. Any ideas. I tried waiting a minute before polling for it but with the same result.

I did try looking at the UUID via the website after re-registration and that looked ok, so I guess it would be either my stuff, or potentially if you had a cached value in the email request channel?

Cheers
Greg
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
unique query id
03-17-2006 13:57
there no way to put a unique query id in the query? so I can match this up and make sure I process the correct email response in case of queued emails?
Greg Hauptmann
Registered User
Join date: 30 Oct 2005
Posts: 283
03-17-2006 16:01
From: Greg Hauptmann
the 1st value I get back is the old value, but the 2nd try gets the correct/latest UUID
Sorry my fault - I hadn't been clearing the email queue out first - I had been sending the query and seemingly getting 1 email response, but in fact this was a previous response and the real one hadn't made it in yet so that's why I didn't see 2 (in which case I was taking the last) :)

Still may be quite worthwhile to have a query ID that the client can pass in and get back in the query response to tie things together well.

Another idea with objDns is the object location seems to come back with the response so I could use this information to work out with subsequent comms from the client object to the target object should be link, chat or email (i.e. could tell the distance between the objects) [a Christopher Omega idea]

Cheers