mirror of
https://github.com/Und3rf10w/Aggressor-scripts
synced 2026-06-08 12:46:53 +00:00
added webservice.sl for later use
This commit is contained in:
+167
@@ -0,0 +1,167 @@
|
||||
# Sleep Webservice Utilities
|
||||
#
|
||||
# To use this:
|
||||
# include('webservice.sl');
|
||||
#
|
||||
# debug(7 | 34) highly recommended
|
||||
#
|
||||
# Functions:
|
||||
#
|
||||
# $ post("url", %hash)
|
||||
# connects to "url", posts the data in the hash, returns a handle for reading
|
||||
#
|
||||
# % buildDataStructure("<xml>...</xml>");
|
||||
# creates a sleep hash tree from the XML document. each node in the hash is:
|
||||
# name => string : tagname
|
||||
# text => string : raw content of the tag (may be a bunch of spaces)
|
||||
# attributes => hash : attributes for the tag
|
||||
# children => array : an array of nodes (with this same structure)
|
||||
#
|
||||
# childrenToHash(%element)
|
||||
# constructs a hash out of an element's children... uses the tagnames for the
|
||||
# keys and each element for the values.
|
||||
#
|
||||
# walkData(%data, %functions)
|
||||
# walks through %data, calls the function held by %functions["tagName"] when
|
||||
# a tag is encountered. Argument $1 to the function is the current node.
|
||||
# uses a postorder traversal; children left to right, parent
|
||||
#
|
||||
# printNice(%data);
|
||||
# pretty prints a sleep hash tree
|
||||
#
|
||||
# Dependencies:
|
||||
#
|
||||
# This code assumes the following jars are in your Java classpath:
|
||||
#
|
||||
# commons-codec-1.2.jar - http://archive.apache.org/dist/commons/codec/
|
||||
# commons-httpclient-3.1.jar - http://hc.apache.org/downloads.cgi
|
||||
# commons-logging-api.jar - http://archive.apache.org/dist/commons/logging/binaries/
|
||||
# commons-logging.jar - http://archive.apache.org/dist/commons/logging/binaries/
|
||||
# jdom.jar - http://www.jdom.org
|
||||
#
|
||||
# Contact:
|
||||
#
|
||||
# Raphael Mudge (rsmudge@gmail.com)
|
||||
#
|
||||
# Release 15 Jul 08
|
||||
#
|
||||
|
||||
import org.apache.commons.httpclient.HttpClient;
|
||||
import org.apache.commons.httpclient.HttpStatus;
|
||||
import org.apache.commons.httpclient.methods.PostMethod;
|
||||
|
||||
import sleep.bridges.io.IOObject;
|
||||
|
||||
import org.jdom.*;
|
||||
import org.jdom.input.*;
|
||||
|
||||
sub post
|
||||
{
|
||||
local('$client $method $key $value $code');
|
||||
$client = [new HttpClient];
|
||||
$method = [new PostMethod: $1];
|
||||
|
||||
foreach $key => $value ($2)
|
||||
{
|
||||
[$method addParameter: $key, $value];
|
||||
}
|
||||
|
||||
$code = [$client executeMethod: $method];
|
||||
|
||||
if ($code != [HttpStatus SC_OK])
|
||||
{
|
||||
throw "Method failed: " . [$method getStatusLine];
|
||||
}
|
||||
|
||||
return [SleepUtils getIOHandle: [$method getResponseBodyAsStream], $null];
|
||||
}
|
||||
|
||||
sub buildDataStructure
|
||||
{
|
||||
local('$builder $doc $buffer');
|
||||
|
||||
$buffer = allocate(strlen($1));
|
||||
writeb($buffer, $1);
|
||||
closef($buffer);
|
||||
|
||||
$builder = [new SAXBuilder];
|
||||
$doc = [$builder build: [$buffer getInputStream]];
|
||||
|
||||
closef($buffer);
|
||||
|
||||
return [{
|
||||
local('$child %result');
|
||||
|
||||
%result["name"] = [$1 getName];
|
||||
%result["text"] = [$1 getText];
|
||||
%result["attributes"] = [{
|
||||
local('$attr %result');
|
||||
|
||||
foreach $attr ([SleepUtils getArrayWrapper: $1])
|
||||
{
|
||||
%result[[$attr getName]] = [$attr getValue];
|
||||
}
|
||||
|
||||
return %result;
|
||||
}: [$1 getAttributes]];
|
||||
|
||||
%result["children"] = @();
|
||||
|
||||
foreach $child ([SleepUtils getArrayWrapper: [$1 getChildren]])
|
||||
{
|
||||
push(%result["children"], [$this: $child]);
|
||||
}
|
||||
|
||||
return %result;
|
||||
}: [$doc getRootElement]];
|
||||
}
|
||||
|
||||
sub walkData
|
||||
{
|
||||
local('$child');
|
||||
|
||||
foreach $child ($1["children"])
|
||||
{
|
||||
walkData($child, $2);
|
||||
}
|
||||
|
||||
invoke($2, @($1), $1["name"]);
|
||||
}
|
||||
|
||||
sub childrenToHash
|
||||
{
|
||||
local('$child %results');
|
||||
|
||||
foreach $child ($1["children"])
|
||||
{
|
||||
%results[$child["name"]] = $child["text"];
|
||||
}
|
||||
|
||||
return %results;
|
||||
}
|
||||
|
||||
sub printNice
|
||||
{
|
||||
local('$k $v $2');
|
||||
|
||||
if (-isarray $1)
|
||||
{
|
||||
foreach $k => $v ($1)
|
||||
{
|
||||
println("$2 $+ $k $+ :");
|
||||
printNice($v, "$2 ");
|
||||
}
|
||||
}
|
||||
else if (-ishash $1)
|
||||
{
|
||||
foreach $k => $v ($1)
|
||||
{
|
||||
println("$2 $+ $k $+ :");
|
||||
printNice($v, "$2 ");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
println("$2 $+ $1");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user