/[cwmp]/google/acs.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /google/acs.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17 - (show annotations)
Mon May 21 17:41:32 2007 UTC (17 years ago) by dpavlin
File MIME type: text/plain
File size: 4100 byte(s)
Dispatch error back to CWMP class, rudamentary support for command queue to CPE
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use lib 'lib';
7 use SOAP::Transport::HTTP +trace => 'debug';
8 use HTTP::Cookies;
9 use CGI::Simple::Cookie;
10
11 #SOAP::Trace->import( 'all' );
12
13 # Eh...
14 $SOAP::Constants::DO_NOT_CHECK_MUSTUNDERSTAND = 1;
15
16 $SIG{PIPE} = $SIG{INT} = 'IGNORE'; # don't want to die on 'Broken pipe' or Ctrl-C
17
18 my $daemon = SOAP::Transport::HTTP::Daemon->new(
19 #LocalAddr => 'localhost',
20 LocalPort => 3333,
21 Reuse => 1,
22 #'Listen' => 128,
23 )
24 ->dispatch_with({
25 'urn:dslforum-org:cwmp-1-0' => 'CWMP',
26 'http://schemas.xmlsoap.org/soap/envelope/' => 'CWMP',
27 })
28 ;
29
30 my $cookies = new CGI::Simple::Cookie(
31 -name => 'foo',
32 -value => 'bar',
33 );
34 $daemon->options->{simple_cookie} = $cookies;
35
36 print "Contact to ACS server at ", $daemon->url, "\n";
37 $daemon->handle;
38
39 package CWMP;
40 use strict;
41
42 use Data::Dump qw/dump/;
43 use Carp qw/cluck/;
44
45 sub new {
46 bless {}, shift;
47 }
48
49 # CPE methods Responding Calling
50 #
51 # GetRPCMethods Required Optional
52 # SetParameterValues Required Required
53 # GetParameterValues Required Required
54 # GetParameterNames Required Required
55 # SetParameterAttributes Required Optional
56 # GetParameterAttributes Required Optional
57 # AddObject Required Optional
58 # DeleteObject Required Optional
59 # Reboot Required Optional
60 # Download Required Required
61 # Upload Optional Optional
62 # FactoryReset Optional Optional
63 # GetQueuedTransfers Optional Optional
64 # ScheduleInform Optional Optional
65 # SetVouchers Optional Optional
66 # GetOptions Optional Optional
67
68 # Server methods Calling Responding
69 #
70 # GetRPCMethods Optional Required
71 # Inform Required Required
72 # TransferComplete Required Required
73 # RequestDownload Optional Optional
74 # Kicked Optional Optional
75
76
77 my $ID;
78
79 my @queue = qw/
80 GetRPCMethods
81 /;
82
83 sub Inform {
84 my ($self, $DeviceId, $Event, $MaxEnvelopes, $CurrentTime, $RetryCount, $ParameterList, $headers) = @_;
85
86 my $p;
87
88 #cluck dump( $daemon );
89 #warn dump( $headers );
90
91 $ID = ( grep { $_->name eq 'ID' } @$headers )[0]->value;
92
93 foreach ( @$ParameterList ) {
94 $p->{ $_->{Name} } = $_->{Value};
95 }
96
97 warn "request $ID from ", dump( $DeviceId ), " with events ",dump( $Event ), "maxEnvelopes: $MaxEnvelopes on $CurrentTime retry $RetryCount params ", dump( $p );
98
99 return SOAP::Data->name('MaxEnvelopes' => 1);
100 }
101
102 sub GetParameterValuesResponse {
103 my $self = shift;
104
105 warn "GetParameterValuesResponse ",dump( @_ );
106
107 return;
108 }
109
110 sub Fault {
111 my $self = shift;
112
113 warn "Fault ",dump( @_ );
114
115 return;
116 }
117
118 sub consume_queue {
119 my @results = ( SOAP::Header->name('ID' => $ID)->prefix('cwmp')->mustUnderstand(1) );
120 if ( ! @queue ) {
121 push @results, SOAP::Header->name('NoMoreRequests' => 1)->prefix('cwmp');
122 } else {
123 my $op = shift @queue;
124 push @results, SOAP::Data->name( $op )->prefix('cwmp');
125 }
126 warn "consume queue results = ", dump( @results );
127 return @results;
128 }
129
130 sub empty_request {
131 my (undef, $self) = @_;
132
133 if ( ! @queue ) {
134 return '';
135 }
136
137 $self->serializer->soapversion(SOAP::Lite->soapversion);
138 $self->serializer->xmlschema($SOAP::Constants::DEFAULT_XML_SCHEMA);
139
140 my @results = (
141 # SOAP::Header->name('ID' => $ID)->prefix('cwmp')->mustUnderstand(1),
142 # SOAP::Data->name('GetParameterValues' =>
143 # SOAP::Data->value( 'ParametarNames' => [
144 # 'InternetGatewayDevice.ManagementServer.',
145 # 'a.', 'a.b.', 'a.b.c.',
146 # ],
147 # ),
148 # )->prefix('cwmp'),
149 );
150
151 push @results, consume_queue;
152
153 my $result = $self->serializer
154 # ->prefix('s') # distinguish generated element names between client and server
155 # ->uri('urn:dslforum-org:cwmp-1-0')
156 ->ns('urn:dslforum-org:cwmp-1-0', 'cwmp')
157 ->envelope( freeform => @results );
158
159 my $xml = $result;
160 $xml =~ s/</\n</gs;
161
162 print "empty request result: $xml\n", dump( $self->request->headers, $self->response->headers, $self->packager->headers_http );
163
164 return $result;
165 }
166
167 sub envelope_only {
168 warn "envelope_only = ", dump( @_ );
169
170 return;
171 }

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26