(cherry picked from commit cbe335a5e0)
agranig/webphone
parent
a30e471799
commit
213355944c
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/perl -w
|
||||
use strict;
|
||||
|
||||
use XML::Mini::Document;
|
||||
use Data::Printer;
|
||||
|
||||
my $f = 'banlist.xml';
|
||||
my $data = do { local $/; open my $fh, $f or die $!; <$fh> };
|
||||
my $xmlDoc = XML::Mini::Document->new();
|
||||
$xmlDoc->parse($data);
|
||||
my $xmlHash = $xmlDoc->toHash();
|
||||
my @ips = ();
|
||||
|
||||
# non empty response
|
||||
if(defined $xmlHash->{methodResponse}->{params}->{param}->{value} and
|
||||
'' ne $xmlHash->{methodResponse}->{params}->{param}->{value} ) {
|
||||
|
||||
# single IP
|
||||
if(ref $xmlHash->{methodResponse}->{params}->{param}->{value}->{struct} eq 'HASH') {
|
||||
push @ips, { ip => $xmlHash->{methodResponse}->{params}->{param}->{value}->{struct}->{member}->[2]->{value}->{struct}->{member}->{value}->{struct}->{member}->[0]->{value}->{string} };
|
||||
}
|
||||
# multiple IPs
|
||||
else {
|
||||
for my $struct ( @{ $xmlHash->{methodResponse}->{params}->{param}->{value}->{struct} } ) {
|
||||
if(ref $struct->{member}->[2]->{value}->{struct}->{member} eq 'HASH') {
|
||||
push @ips, { ip => $struct->{member}->[2]->{value}->{struct}->{member}->{value}->{struct}->{member}->[0]->{value}->{string} };
|
||||
} else {
|
||||
foreach my $member(@{ $struct->{member}->[2]->{value}->{struct}->{member} }) {
|
||||
push @ips, { ip => $member->{value}->{struct}->{member}->[0]->{value}->{string} };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p @ips;
|
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0"?>
|
||||
<methodResponse>
|
||||
<params>
|
||||
<param>
|
||||
<value><struct><member><name>entry</name><value><int>0</int></value></member><member><name>size</name><value><int>2</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.106.0.73</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.56</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>13</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>10.155.142.202</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>48</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.107.8.15</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>60</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.110.5.248</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>68</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.70</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>84</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.107.0.114</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>87</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>178.19.227.146</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>128</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.5.13</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>129</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>192.227.156.98</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>141</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.3.99</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>144</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.2</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>150</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.100.87.204</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>163</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.110.0.15</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>166</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.107.6.245</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>181</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.107.0.220</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>183</int></value></member><member><name>size</name><value><int>2</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.107</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.143</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>184</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.107.2.46</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>185</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.5.196</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>190</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.111.0.196</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>225</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.100.13.169</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
<struct><member><name>entry</name><value><int>247</int></value></member><member><name>size</name><value><int>1</int></value></member><member><name>slot</name><value><struct><member><name>item</name><value><struct><member><name>name</name><value><string>100.110.8.119</string></value></member><member><name>value</name><value><int>1</int></value></member></struct></value></member></struct></value></member></struct>
|
||||
</value>
|
||||
</param>
|
||||
</params>
|
||||
</methodResponse>
|
||||
Loading…
Reference in new issue