SOAP API examples

This section contains examples for using the SOAP API in the following languages: PERL, PHP, and Python.

PERL example

#!/usr/bin/perl -w

use Data::Dumper;

#use SOAP::Lite ( +trace => all, maptype => {} );

use SOAP::Lite;

#$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

my $soap = SOAP::Lite->proxy('https://localhost/AFA/php/ws.php?wsdl');

# Do not verify the SSL key

$soap->transport->ssl_opts(

verify_hostname => 0,

SSL_verify_mode => 0x00

);

#

# Login to AFA Web Service

#

sub ConnectAFA

{

my $sUserName = shift; # User name

my $sPassword = shift; # Password

my $sDomain = shift; # Domain name or empty for non domain envirnment

$sDomain = (!defined $sDomain) ? '' : $sDomain;

my $method = SOAP::Data->name('ConnectRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});

my @params = (

SOAP::Data->name(UserName => $sUserName),

SOAP::Data->name(Password => $sPassword),

SOAP::Data->name(Domain => $sDomain)

);

my $sSessionID = $soap->call($method => @params)->result;

}

#

# Executing query request

#

sub ExecQuery

{

my $sSessionID = shift;

my $sQueryTarget = shift;

$sQueryTarget = (!defined $sQueryTarget) ? '' : $sQueryTarget;

my $method = SOAP::Data->name('QueryRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});

my $QueryInput = SOAP::Data->name('QueryRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});

my @params = (

SOAP::Data->name(SessionID => $sSessionID),

SOAP::Data->name(QueryInput => \SOAP::Data->value(

SOAP::Data->name(Source => '*'),

SOAP::Data->name(Destination => '*'),

SOAP::Data->name(Service => '80'),

SOAP::Data->name(Service => '443')

)

),

SOAP::Data->name(QueryTarget => $sQueryTarget)

);

return $soap->call($method => @params);

}

#

# Disconnect from AFA Web Service (terminate session)

#

sub DisconnectAFA

{

my $sSessionID = shift;

my $method = SOAP::Data->name('DisconnectRequest')->attr({xmlns => 'https://www.algosec.com/afa-ws'});

my @params = (

SOAP::Data->name(SessionID => $sSessionID),

);

return $soap->call($method => @params)->valueof('//DisconnectResponse');

}

my $sSessionID = ConnectAFA('admin', 'algosec', '');

print "\n";

print "Session ID: '" . $sSessionID ."'";

print "\n";

my $QueryResult = ExecQuery($sSessionID, 'afa-276');

foreach my $Result ($QueryResult->valueof('//QueryResult/')) {

print Dumper($Result);

}

print "\n";

my $Disconnect = DisconnectAFA($sSessionID);

print "Disconnect: ";

print $Disconnect;

print "\n";

Back to top

PHP example

<?php

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache for development

$sHost = '10.135.1.45'; // AFA host

$sWSDLlocavion = 'https://'.$sHost.'/AFA/php/ws.php?wsdl';

$client = new SoapClient($sWSDLlocavion);

$src = '192.168.1.100';

$dst = '10.228.16.10';

$srv = 'tcp/22';

try {

$client->__setLocation($sWSDLlocavion);

$return = $client->connect(array('UserName'=>'admin','Password'=>'algosec','Domain'=>''));

echo "Response of the 'connect' method: \n";

print_r($return);

echo "\n";

flush();

if (isset($return->SessionID)) {

$sSessionID = $return->SessionID;

echo 'Submitting query request...' . "\n";

flush();

$query = array('Source'=>$src, 'Destination'=>$dst, 'Service'=>$srv);

$QueryResult = $client->query(array('SessionID'=>$sSessionID,'QueryInput'=>$query));

echo "Response of the 'query' method: \n";

flush();

print_r($QueryResult);

echo "\n";

$QueryHTMLlink = $QueryResult->QueryUIResult;

echo 'Query HTML link: ' . $QueryHTMLlink."\n";

flush();

$return = $client->disconnect(array('SessionID'=>$sSessionID));

echo "Response of the 'disconnect' method (terminating session): \n";

print_r($return);

echo "\n";

}

}

catch (Exception $objException) {

echo 'Error: '.$objException->getMessage ();

echo 'Error: '.$objException->faultstring;

echo '<xmp>';

print_r($objException);

echo '</xmp>';

}

?>

Back to top

Python example

#!/usr/bin/python

from SOAPpy import SOAPProxy

def ConnectAFA(params):

# username/password

username = params['UserName']

password = params['Password']

domain = params['Domain']

proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'

namespace = 'https://www.algosec.com/afa-ws'

server = SOAPProxy(proxy, namespace)

if (DebugMode):

# uncomment these for debugging output

server.config.dumpHeadersIn = 1

server.config.dumpHeadersOut = 1

server.config.dumpSOAPOut = 1

server.config.dumpSOAPIn = 1

response = server.ConnectRequest(UserName=username, Password=password, Domain=domain)

return response

def SendQueryRequest(params):

# username/password

SessionID = params['SessionID']

QueryInput = params['QueryInput']

proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'

namespace = 'https://www.algosec.com/afa-ws'

server = SOAPProxy(proxy, namespace)

if (DebugMode):

# uncomment these for debugging output

server.config.dumpHeadersIn = 1

server.config.dumpHeadersOut = 1

server.config.dumpSOAPOut = 1

server.config.dumpSOAPIn = 1

response = server.QueryRequest(SessionID=SessionID, QueryInput=QueryInput)

return response

def DisconnectAFA(params):

# username/password

SessionID = params['SessionID']

proxy = 'https://'+sHost+'/AFA/php/ws.php?wsdl'

namespace = 'https://www.algosec.com/afa-ws'

server = SOAPProxy(proxy, namespace)

if (DebugMode):

# uncomment these for debugging output

server.config.dumpHeadersIn = 1

server.config.dumpHeadersOut = 1

server.config.dumpSOAPOut = 1

server.config.dumpSOAPIn = 1

response = server.DisconnectRequest(SessionID=SessionID)

return response

sHost = '192.168.3.82'

#DebugMode = True

DebugMode = False

print "\n" + "Submitting connect request:" + "\n"

values = {'UserName': 'admin', 'Password': 'algosec', 'Domain': ''}

afa_connect = ConnectAFA(values)

SessionID = afa_connect

print "Returned Session ID: "+repr(SessionID)

print "\n" + "Submitting query request:" + "\n"

QueryParams = {'SessionID': SessionID,'QueryInput': {'Source': '192.168.1.100', 'Destination': '10.228.16.10', 'Service': 'tcp/22'}}

QueryResult = SendQueryRequest(QueryParams)

print QueryResult

print "\n" + "Submitting disconnect request:" + "\n"

DisconnectParams = {'SessionID': SessionID}

DisconnectResult = DisconnectAFA(DisconnectParams)

print DisconnectResult

Back to top