#!/usr/bin/env perl # # test-connection.pl - log in and out to Sakai using SOAP # # $Id$ # based on this original (which almost worked): # http://source.cet.uct.ac.za/svn/sakai/scripts/trunk/wscxf/soap_cxf_login.pl use strict; use warnings; use SOAP::Lite; #use SOAP::Lite +trace => [ all ]; #use Data::Dumper; #$Data::Dumper::Indent = 1; use Getopt::Std; ############## PARAMETER SPECIFICATION ############## my %opt; getopts( 'H:P:p:u:N', \%opt ) or die "Cannot parse command line\n"; my $user = $opt{u} // $ENV{SAKAI_USER} // 'admin'; my $password = $opt{p} // $ENV{SAKAI_PASSWORD} // 'minda'; my $host = $opt{H} // $ENV{SAKAI_HOST} // 'sakai2.win.tue.nl'; my $port = $opt{P} // $ENV{SAKAI_PORT} // ( $opt{N} ? 80 : 443 ); my $http = $opt{N} ? 'http' : 'https'; my $server = "$http://$host:$port/"; my $ns_uri = 'http://webservices.sakaiproject.org/'; ############## END OF PARAMETER SPECIFICATION ####### my $proxy = $server . 'sakai-ws/soap/login'; my $loginsoap = SOAP::Lite->uri($ns_uri)->proxy($proxy)->on_action( sub { return '' } ) or die "No SOAP login object for site $server\n"; sub method { SOAP::Data->name( "ns1:" . $_[0] )->attr( { 'xmlns:ns1' => $ns_uri } ); } sub param { SOAP::Data->name(@_); } #my $login = $loginsoap->loginToServer(id=>$user, pw=>$password) my $login = $loginsoap->call( method('loginToServer'), param( 'id' => $user ), param( 'pw' => $password ) ) or die "Cannot log in as $user to $server\n"; my ( $session, $server_direct ) = $login->result or die "Cannot log in as $user to site $server\n"; warn "session is: $session\n"; # logout #my $logout = $loginsoap->logout($session)->result; my $logout = $loginsoap->call( method('logout'), param( 'sessionid' => $session ) ); warn 'logging out ', $logout ? 'succeeded' : 'failed', "\n";