/[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

Annotation of /google/acs.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (hide annotations)
Mon May 21 17:53:48 2007 UTC (17 years ago) by dpavlin
File MIME type: text/plain
File size: 4067 byte(s)
cleanup code and some comments
1 dpavlin 2 #!/usr/bin/perl
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 11 use lib 'lib';
7 dpavlin 2 use SOAP::Transport::HTTP +trace => 'debug';
8 dpavlin 15 use HTTP::Cookies;
9     use CGI::Simple::Cookie;
10 dpavlin 2
11 dpavlin 17 #SOAP::Trace->import( 'all' );
12 dpavlin 15
13 dpavlin 2 # 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 dpavlin 17 ->dispatch_with({
25     'urn:dslforum-org:cwmp-1-0' => 'CWMP',
26     'http://schemas.xmlsoap.org/soap/envelope/' => 'CWMP',
27     })
28 dpavlin 2 ;
29    
30 dpavlin 15 my $cookies = new CGI::Simple::Cookie(
31     -name => 'foo',
32     -value => 'bar',
33     );
34     $daemon->options->{simple_cookie} = $cookies;
35 dpavlin 2
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 dpavlin 7 use Carp qw/cluck/;
44 dpavlin 2
45     sub new {
46     bless {}, shift;
47     }
48    
49 dpavlin 12 # 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 dpavlin 2 # Server methods Calling Responding
69 dpavlin 12 #
70 dpavlin 2 # GetRPCMethods Optional Required
71     # Inform Required Required
72     # TransferComplete Required Required
73     # RequestDownload Optional Optional
74     # Kicked Optional Optional
75    
76 dpavlin 12
77     my $ID;
78    
79 dpavlin 17 my @queue = qw/
80     GetRPCMethods
81     /;
82    
83 dpavlin 18 sub consume_queue {
84     my @results = ( SOAP::Header->name('ID' => $ID)->prefix('cwmp')->mustUnderstand(1) );
85     if ( ! @queue ) {
86     push @results, SOAP::Header->name('NoMoreRequests' => 1)->prefix('cwmp');
87     } else {
88     my $op = shift @queue;
89     push @results, SOAP::Data->name( $op )->prefix('cwmp');
90     }
91     warn "consume queue results = ", dump( @results );
92     return @results;
93     }
94    
95     ## SOAP ACS methods
96    
97 dpavlin 2 sub Inform {
98 dpavlin 7 my ($self, $DeviceId, $Event, $MaxEnvelopes, $CurrentTime, $RetryCount, $ParameterList, $headers) = @_;
99 dpavlin 2
100     my $p;
101    
102 dpavlin 7 #cluck dump( $daemon );
103     #warn dump( $headers );
104    
105 dpavlin 12 $ID = ( grep { $_->name eq 'ID' } @$headers )[0]->value;
106 dpavlin 7
107 dpavlin 2 foreach ( @$ParameterList ) {
108     $p->{ $_->{Name} } = $_->{Value};
109     }
110    
111 dpavlin 7 warn "request $ID from ", dump( $DeviceId ), " with events ",dump( $Event ), "maxEnvelopes: $MaxEnvelopes on $CurrentTime retry $RetryCount params ", dump( $p );
112 dpavlin 2
113 dpavlin 17 return SOAP::Data->name('MaxEnvelopes' => 1);
114 dpavlin 2 }
115 dpavlin 12
116     sub GetParameterValuesResponse {
117 dpavlin 17 my $self = shift;
118    
119 dpavlin 12 warn "GetParameterValuesResponse ",dump( @_ );
120 dpavlin 17
121     return;
122 dpavlin 12 }
123    
124 dpavlin 17 sub Fault {
125     my $self = shift;
126    
127     warn "Fault ",dump( @_ );
128    
129     return;
130     }
131    
132 dpavlin 18 ## special handling of empty POST request from CPE
133 dpavlin 17
134 dpavlin 12 sub empty_request {
135     my (undef, $self) = @_;
136    
137     $self->serializer->soapversion(SOAP::Lite->soapversion);
138     $self->serializer->xmlschema($SOAP::Constants::DEFAULT_XML_SCHEMA);
139    
140     my @results = (
141 dpavlin 17 # 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 dpavlin 12 );
150    
151 dpavlin 17 push @results, consume_queue;
152    
153 dpavlin 12 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 dpavlin 15 print "empty request result: $xml\n", dump( $self->request->headers, $self->response->headers, $self->packager->headers_http );
163 dpavlin 12
164     return $result;
165     }
166 dpavlin 17

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26