#!/usr/bin/perl -w # # # ------------------------------------------------------------------- # X-BONE # # http://www.isi.edu/xbone # USC Information Sciences Institute (USC/ISI) # Marina del Rey, California 90292, USA # Copyright (c) 1998-2005 # # ------------------------------------------------------------------- # # Copyright (c) 1998-2005 by the University of Southern California. # All rights reserved. # # Permission to use, copy, modify, and distribute this software and # its documentation in source and binary forms for non-commercial # purposes and without fee is hereby granted, provided that the above # copyright notice appear in all copies and that both the copyright # notice and this permission notice appear in supporting # documentation, and that any documentation, advertising materials, # and other materials related to such distribution and use acknowledge # that the software was developed by the University of Southern # California, Information Sciences Institute. The name of the # University may not be used to endorse or promote products derived # from this software without specific prior written permission. # # THE UNIVERSITY OF SOUTHERN CALIFORNIA MAKES NO REPRESENTATIONS ABOUT # THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. THIS SOFTWARE IS # PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # Other copyrights might apply to parts of this software and are so # noted when applicable. # # ------------------------------------------------------------------- # # Effort partly sponsored by the Defense Advanced Research Projects # Agency (DARPA) and Air Force Research Laboratory, Air Force Materiel # Command, USAF, under agreement numbers F30602-98-1-0200 (X-Bone) and # F30602-01-2-0529 (DynaBone). The views and conclusions contained # herein are those of the authors and should not be interpreted as # necessarily representing the official policies or endorsements, # either expressed or implied, of the Defense Advanced Research # Projects Agency (DARPA), the Air Force Research Laboratory, or the # U.S. Government. # # This work was partly supported by the NSF STI-XTEND (ANI-0230789) # and NETFS (ANI-0129689) projects. Any opinions, findings, and # conclusions or recommendations expressed in this material are those # of the authors and do not necessarily reflect the views of the # National Science Foundation. # # ------------------------------------------------------------------- # $RCSfile: xb-xml-admin.pl,v $ # # $Revision: 1.10 $ # $Author: pingali $ # $Date: 2005/03/31 07:04:03 $ # $State: Exp $ # ---------------------------------------------------------------------------- # # Primary Author: Lars Eggert use strict; use sigtrap; use lib qw(../lib); use CGI qw(:standard :html3); use CGI::Carp qw(fatalsToBrowser); #use XB_Common; use XB_XML_Interface; use XB_XML_GUI; use XB_XML_scan; use Data::Dumper; XB_XML_Interface::init(); my $host = `uname -n`; chomp($host); my $canned_destroyall_overlays_reply = " "; #################################################### # Construct the user info. it will handy later on. ################################################### my %user = XB_XML_Interface::user_info(); my $myurl = "/cgi-bin/xb-xml-admin.pl"; my $indexurl = "/cgi-bin/xb-xml-index.pl"; if (not defined param("manager")){ XB_XML_Interface::show_error "Please define an overlay manager", "", $indexurl; } ############################################################ # present the basic page if submit button as not be pressed ############################################################ if(not param("submit")) { my $msg = "content-type: text/xml\n\n"; $msg .= "\n"; $msg .= "\n"; $msg .= "\n"; $msg .= " \n"; $msg .= " $user{User} \n"; $msg .= " $user{Location}\n"; $msg .= " $user{Organization}\n"; $msg .= " \n"; $msg .= "" . param("manager") . "\n"; $msg .= "$host\n"; $msg .= " \n"; print $msg; exit; } ############################################################ # The user has pressed the submit button. process it. ############################################################ my ($cmdref, $userid, $authtype, $result); if (CGI::https()) { $userid = $ENV{SSL_CLIENT_S_DN_Email}; $authtype = 'x509'; } else { $userid = $ENV{REMOTE_ADDR}; $authtype = 'ipaddr'; }; ################################# # Generate API destroyall message ################################# my %args = (); $args{auth_type} = $authtype; $args{user_id} = $userid; $cmdref = XB_XML_GUI::XB_build_destroyall_overlays_msg (\%args); # make a call to the OM $result = XB_XML_Interface::OverlayManagerInterface (param("manager"), $$cmdref); #use canned message for testing purposes. #$result = $canned_destroyall_overlays_reply; # the result is an XML message. parse it to see if it fine. my $parseresult = XB_XML_scan::XB_XML_parse (\$result); if ( $parseresult ne "") { XB_XML_Interface::show_error ("Error while parsing the reply of the OM", $parseresult, $myurl); }; # construct a hash to simplify the processing later on. my $hashresult = XB_XML_scan::XB_XML_hash (\$result); # Check to make sure that the the parser was able to parse the # message. if (! $hashresult) { XB_XML_Interface::show_error "Invalid response from the Overlay Manager. Please contact" . "<a href=\"http://www.isi.edu/xbone\">" . "X-Bone Support</a>", "", $myurl; } # fix the properties list XB_XML_scan::XB_XOL_xbone_list_sub ($hashresult); # test the hash if (!$hashresult or ! $hashresult->{command}){ XB_XML_Interface::show_error "Reply from OM could not be parsed.", "", $myurl; } # see if this is an error. If so, show an error. if (defined $hashresult->{command}{error_reply}){ my $errmsg = $hashresult->{command}{error_reply}{property}{error}; XB_XML_Interface::show_error "Overlay destory command failed!", $errmsg, $myurl; } # if not error, make sure the message is a create message. if (not defined $hashresult->{command}{destroyall_overlays_reply}){ XB_XML_Interface::show_error "Dont know how to parse the OM reply!", "", $myurl; } show_success $hashresult->{command}{destroyall_overlays_reply}{property}{message}, "", $indexurl; 1;