[Pipet Devel] Using Gnome with other Corba implementations

jarl van katwijk jarl at casema.net
Sat Nov 11 13:34:38 EST 2000


Hi All,

I think I need to share this fix with you (and the search engines cq the whole
inet), because it's about a very nasty side effect of gnome.

What's about? It's about using gnome with other Corba Orb implementations. A
part of Gnome is gnorba, the corba\ORBit extensions of gnome. Gnorba has some
nice features, among security is one. This security feature is nice when you
only use gnome\gnorba applications, but it makes it impossible to have gnome
applications communicate with other Orb implementations.

The only fix I could find suggested hacking the gnome sources and recompiling
them. Which of course is unsatisfing. So I made a good fix to overrule this
security mechanism:

1. Code the gnome application just the way it's supposed to be done, with the
gnome-init stuff etc.
2. Hook the ORBit connection handlers to the glib main event loop by writing
your own handlers. This is explained at
http://www.gimp.org/~imain/ORBit-GTK/ORBit-GTK-1.html
3. Now comes the real fix. Gnorba initializes by setting up a new validation-
and default principal handlers. You need to reset those again in order to
disable the security mechanism. Just before you execute the gnome main loop (or
applet main, gtk main,  glib main which are all the same) you place this code:
--- cut ---
    ORBit_set_request_validation_handler(ORBit_request_validate_Hook);
    ORBit_set_default_principal(&_gnorba_request_cookie);
--- cut ---

Where ORBit_request_validate_Hook is like this:
--- cut ---
ORBit_MessageValidationResult ORBit_request_validate_Hook(CORBA_unsigned_long
request_id,CORBA_Principal *principal,CORBA_char *operation)
{
    return ORBIT_MESSAGE_ALLOW_ALL;
}
--- cut ---

and _gnorba_request_cookie is defined like this:
--- cut ---
static CORBA_Principal _gnorba_request_cookie = { 0, 0, NULL, CORBA_TRUE };
--- cut ---

Sometimes gnome isn't that easy ;-)

bye,
jarl





More information about the Pipet-Devel mailing list