[ic] Using Interchange as a SOAP server

Mike Heins mike at perusion.com
Thu Apr 14 10:12:51 EDT 2005


Quoting Dr. Michael Streubel (michael.streubel at ibizplanet.com):
> 
> 
> Mike Heins wrote:
> 
> >Quoting Chris Sendall (cjs2 at admin.cam.ac.uk):
> > 
> >
> >>If there are no SOAP_Control definitions in interchange.cfg then the 
> >>catalog.cfg
> >>is not checked
> >>   
> >>
> >
> >Exactly as designed. Since the SOAP module allows direct subroutine
> >calls to the Interchange core, we don't want to allow them unless
> >they are specifically enabled.
> >
> >If you want a promiscuous server then you need to put in interchange.cfg:
> >
> >	SOAP_Control Tag  always
> >
> >If you wanted to prevent only a few tags you would do:
> >
> >	SOAP_Control Tag 	    always
> >	SOAP_Control Tag/writefile  never
> >	SOAP_Control Tag/dangerous  never
> >
> > 
> >
>
> Thanks for elucidating. But how about the reverse? I want a server
> with closed borders, but only one of my catalogs opens the door for a
> specific tag.

I suppose we could add a mechanism to disable SOAP for all but
some catalogs, i.e. with a check of AllowGlobal.

	AllowGlobal     somecat

Then with soap_gate:

sub soap_gate {
    my (@args, $status, $subref, $spath);

    my @controllers;

    if($Global::AllowGlobal->{$Vend::Cat}) {
	@controllers =  $Vend::Cfg->{SOAP_Control};
    }
    else {
	# check first global control configuration which takes
	# precedence, then catalog control configuration
    	@controllers = ($Global::SOAP_Control, $Vend::Cfg->{SOAP_Control});
    }

    for $subref (@controllers) {
        @args = @_;
[snip]
    }

    die errmsg("Unauthorized access to '%s' method\n", join('/', @_))
        unless $status;

    return 1;
}

We could also add a SOAP_Delegate configuration directive that
would do the same thing.

-- 
Mike Heins
Perusion -- Expert Interchange Consulting    http://www.perusion.com/
phone +1.765.647.1295  tollfree 800-949-1889 <mike at perusion.com>

For a successful technology, reality must take precedence over public
relations, for Nature cannot be fooled. -- Dick Feynman


More information about the interchange-users mailing list