New webdav inventory system in Taiga and bringing it to Naali

1 view
Skip to first unread message

Jonne Nauha

unread,
Sep 16, 2009, 6:20:47 PM9/16/09
to realXtend-dev
Good evening,

I'm sure this part of Taiga servers and the upcoming Naali features
are fairly new to most here. I will try to explain whats going on with
the new inventory to the best of my knowledge of it and also what we
are doing to utilize this feature.

Webdav in CableBeach
First of all the new webdav protocol based inventory system is located
in Taigas CableBeach (CB) servers. CB InventoryServer has a extension
that is called WebDavFrontEnd. This is essentially a webserver
extending the http protocol to cover webdav protocol functionality.
Mikko Pallari from the project has sent a email in last sprint when we
were implementing this feature in CB. WebDav frontend uses webadvsharp
(http://code.google.com/p/webdavsharp/) as a library to handle webdav
protocol messages, the library has been built in co-operation with
John Hurliman (CB creator) and the realXtend crew as a side project to
allow this feature in the CableBeach servers.

Essentially webdav is a way to browse and modify your inventory
inworld with Naali and outside world with 3rd party webdav clients
(for example Windows Explorer as a network drive etc.). This will
bring more flexibility to access your inventory and webdav protocol
also has built in features like access control that we can use in the
future ie. sharing inventorty folders to others. The webdav frontend
is now in pretty good shape on the server side. Users default
inventories are created to the filesystem, at least at this point we
moved them out of the opensim database. And you can access them with
the webdav frontend with digest authentication that will only let you
get to your inventory and no one else.

Webdav service endpoint discovery from OpenID provider in CableBeach
I made a new feature in Taiga OpenID provider so you can save your
default inventory url to your accounts XRD data and this can and will
be discovered during login process by CableBeach from your openid. If
XRD data is not stored CableBeach will use its own InventoryServer to
discover the default inventory url. The aim of all this that you could
make one Taiga Inventory account, one Taiga OpenID account and set
your inventory url to your openid. After this you could login with
openid to any Taiga server and it would always get your inventory from
where you want so you could move your inventory with you from world to
another.

Naali webdav client to browse and modify your inventory
I made a SimpleServicesGetter extension to CableBeach that enables the
viewer to fetch a users webdav url. During the login process and after
the inventory url discovery that I talked above CableBeach will store
logged in users webdav service endpoints locally so we dont have to do
the discovery again when the viewer needs it and that we dont have to
make the login response even larger by sticking service endpoints to
it.

I researched a bit for C++ or Qt based webdav librarys for building
the Naalis webdav client. With Toni Alatalos suggestion I looked at
python. I/Toni found a neat library called pythonwebdavlib that seemed
ok for the purpouse (http://sourceforge.net/projects/
pythonwebdavlib/). Because we have Qt also in the python side of Naali
via PythonQt I could do both the webdav functionality and the user
interface in python. Only the invoking of this python module will come
from the c++ side after the login is succesfull. The module needs
Taiga (CableBeach) WorldServers url, authentication type (normal as in
OpenSim or openid) and the users identity url (normal = firstname
lastname, open id = http://identityurl.com). When it is called with
this data it will start to ask CableBeach for your webdav inventory
url (again, the one it discovered earlier during login and stored
locally). When the url is recieved the gui will pop up and ask your
inventory accounts password. If password matches inventory is fetched
via the webdav protocol messages (PROPFIND), gui popped up and the
browsing may begin.

At this point the features are: browsing, uploading any kind of file
(seems that right now there are size constrictions never the less,
like >5-10 megs, havent tested properly yet), downloading any file,
making a new directory and deleting collections aka folders (this will
delete all child resources and collections also) and single resources.
There is no inventory to world or vice versa interaction yet, all this
work is pretty experimental and I just recently got it integrated into
Naali to show and function correctly.

Up next for webdav inventory
Making the python module autoload when the login process is done.
Getting needed data from login response before invoking python module.
For this I already got some ideas from Toni Alatalo but it's
unfinished. Implement user registeration for Taiga webdav inventory,
so you can make a invetory account and set your password.

Other things im working on this sprint
RexWebLogin: this is supposed to replace the openid login. This login
method will handle every authentication method that is web based. This
basically means OpenID and Facebook login. I will start looking at
John Hurlimans work with facebook login and try to implement that also
for Taiga (facebook login is already in use in ScienceSim that
recently became CableBeach based). RexWebLogin will essentially be a
web browser inside the viewer that will log you in and get the
preauthenticated xmlrpc url from the html content that Taiga will
provide and start the login process with it (login_to_simulator).

Thanks for reading if you got this far and please do comment and
correct me if there is something on your mind. Hope I didn't miss
anything or explain too complicated. I know these emails are for
letting people know before hand what you are doing to discuss them
etc. so sorry for that, missed my email que a bit :) The work is still
incomplete so discussion is open.

Best regards,
Jonne Nauha, realXtend

Ps. Having huge issues with new company email and this google mailin
list thing. Sent this like 3 times already and nothing seems to
register. Hope I didnt send duplicates.

Morgaine

unread,
Sep 17, 2009, 10:54:56 AM9/17/09
to realxt...@googlegroups.com
An excellent write-up, Jonne, many thanks!

This work has high relevance to the development of interop protocols under OGPX/VWRAP at the IETF, so I've updated the OGPX list with news of your progress.  I gave particular emphasis to your paragraphs mentioning inventory interoperability between worlds:  http://www.ietf.org/mail-archive/web/ogpx/current/msg00391.html .

As you'll note from my link to John Hurliman's post, there is likely to be a merging of Cable Beach and VWRAP features, so it seems realistic to forsee many strands of development coming together in this area.  The Holy Grail of VW interop no longer seems quite so distant. ;-)

Kudos to everyone at realXtend and contributors, and keep up the good work.:-)


Morgaine.






=======================================

Jonne Nauha

unread,
Sep 17, 2009, 11:18:16 AM9/17/09
to realxt...@googlegroups.com
Glad you liked it!

There is still work to be done in the OpenID side of things. Our Taiga provider (differs from the CableBeach openid provider quite a lot) has the functionality for storing this XRD data but I haven't looked how 3rd party OpenID providers store related info/urls in them. So in order for example google as a openid account there would be need to implement discovering the inventory  related data either in XRD or what ever the OpenID supports for this kind of transaction. But for now moving from a Taiga/cablebeach server to another the webdav inventory gives you certain amount freedom with moving personal data from world to another with you.

Of course goal is to do authentication with 3rd party OpenID providers to a world so you dont have to make new user account every time for each individual world. And that is looking fairly good right now. It's another thing to recover your inventory and other virtual world related data from that 3rd party OpenID and I hope we can push this agenda forward after we get our basic things done.

Brgrds,
Jonne Nauha, realXtend

Morgaine

unread,
Sep 17, 2009, 1:14:47 PM9/17/09
to realxt...@googlegroups.com
It will be no small thing, the day that people can login using their Google OpenID accounts.  One of my main interests is in scalability, so that prospect excites me hugely. :-)

While it is still some way in the future, this could be what makes virtual worlds explode into the public consciousness and become mainstream.  The sheer numbers involved are staggering ... ;-)

Morgaine.





========================================

Toni Alatalo

unread,
Sep 17, 2009, 1:40:39 PM9/17/09
to realxt...@googlegroups.com
Morgaine kirjoitti:
> It will be no small thing, the day that people can login using their
> Google OpenID accounts. One of my main interests is in scalability,
> so that prospect excites me hugely. :-)

I think that worked in the end-of-June 0.0.1 releases actually. But yah,
that was not quite for the masses yet for other reasons .. every avatar
showing as the default mesh etc and no gui :)

> While it is still some way in the future, this could be what makes
> virtual worlds explode into the public consciousness and become
> mainstream. The sheer numbers involved are staggering ... ;-)

Cable beach is largely about distributed systems, 'Internet scale'. And
that is huge nowadays indeed.

> Morgaine.

~Toni
Reply all
Reply to author
Forward
0 new messages