[OPEN-ILS-DEV] 2 important changes to opensrf_core.xml in OpenSRF trunk (changeset 1253 -- multi-domain mode)

Bill Erickson erickson at esilibrary.com
Wed Mar 5 18:54:22 EST 2008


The following configuration chunk:

<config>
   <opensrf>
     <domains>
       <domain>localhost</domain>
     </domain>
     ...

has been simplified to:

<config>
   <opensrf>
     <domain>localhost</domain>
   ...

(NOTE: The above change is necessary in ~/.srfsh.xml as well!)

Also, the router configuration near the bottom of the file has been 
given a <routers> wrapper element so that additional routers may be 
configured:

<config>
   ...
   <routers>
     <router>
       <!-- router configuration goes here -->
     </router>
   </routers>
</config>


I have updated the OpenSRF and ILS example files.  I've also added an 
additional multi-domain example file.

http://svn.open-ils.org/trac/ILS/browser/trunk/Open-ILS/examples/opensrf_core.xml.example
http://svn.open-ils.org/trac/ILS/browser/trunk/Open-ILS/examples/opensrf_core.xml.example.multidomain

-------------------------------------------------------------------------------

What is all of this?

OpenSRF now has the ability to run in multi-domain mode.  In 
multi-domain mode, different jabber domains handle different OpenSRF 
services.  One router per domain is launched to handle requests to that 
domain.  Certain clients are allowed access to certain domains only. 
With this, we can physically separate an untrusted client from sensitive 
resources.

This crudely drawn diagram might just confuse you more ;)

http://open-ils.org/documentation/opensrf-multi-domain.jpg

In this setup, the client and the open-ils.cstore service are logged in 
to 2 different jabber domains.  Additionally, open-ils.cstore is not 
registered with the router on the clients domain (public.domain).  In a 
nutshell, the client has no way to send requests directly to 
open-ils.cstore.  It's forced to go through a protected service first, 
which will enforce authentication/authorization, before it can access 
sensitive data.

The old approach, as seen in the HTTP gateway, was to define an explicit 
list of services that the gateway could communicate with.  With this 
change, the gateway will not need to manage its own access list, since 
it won't have access to private services anyway.


Doesn't this complicate things?

  -- These features are optional and they only require changes to 
opensrf_core.xml, plus the addition of a host in the Ejabberd config. 
Running with two domains will eventually be the default behavior, but 
the install process will need to be streamlined before we make that step.

Do I need to run 2 jabber servers for multi-domain mode?

  -- Not if you are using Ejabberd.  Ejabberd allows you to host 
multiple domains within a single Ejabberd instance.  Because of this, no 
additional Jabber processes or domain-to-domain network IO is required.

Do I need to manually launch more routers?

  -- No.  The router process will automatically launch as many routers 
as you have configured.




For those of you who have made it this far, I realize it's a lot to 
digest.  I've had my head in the code most of the afternoon and I'm sure 
I'm leaving out some crucial detail that will make all of this clear. 
If anyone has any questions about any of this, fire away...


-bill

-- 
Bill Erickson
| VP, Software Development & Integration
| Equinox Software, Inc. / The Evergreen Experts
| phone: 877-OPEN-ILS (673-6457)
| email: erickson at esilibrary.com
| web: http://esilibrary.com


More information about the Open-ils-dev mailing list