/[pxelator]/lib/PXElator/tftpd.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/PXElator/tftpd.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 141 by dpavlin, Tue Aug 4 17:29:59 2009 UTC revision 208 by dpavlin, Wed Aug 12 23:59:01 2009 UTC
# Line 6  use strict; Line 6  use strict;
6  use Net::TFTPd 0.03 qw(%OPCODES);  use Net::TFTPd 0.03 qw(%OPCODES);
7  use IO::Socket::INET;  use IO::Socket::INET;
8  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
9    use CouchDB;
10    
11  use server;  use server;
12    
# Line 46  sub tftp_request { Line 47  sub tftp_request {
47    
48          warn 'request: ', dump( $request ) if $debug;          warn 'request: ', dump( $request ) if $debug;
49    
50          config::for_ip( $request->{_REQUEST_}->{PeerAddr} );          my $ip = $request->{_REQUEST_}->{PeerAddr};
51            config::for_ip( $ip );
52    
53          if ( $request->{RootDir} ne $dir ) {          if ( $request->{RootDir} ne $dir ) {
54                  $request->{RootDir} = $dir;                  $request->{RootDir} = $dir;
# Line 54  sub tftp_request { Line 56  sub tftp_request {
56          }          }
57    
58          my $file = $request->{'_REQUEST_'}{'FileName'};          my $file = $request->{'_REQUEST_'}{'FileName'};
59          # received request          my $opcode = $OPCODES{$request->{'_REQUEST_'}{'OPCODE'}};
60          print $OPCODES{$request->{'_REQUEST_'}{'OPCODE'}}, " $file\n";  
61            my $audit = {
62                    ip => $ip,
63                    opcode => $opcode,
64                    file => $file,
65                    state => 'start',
66            };
67            CouchDB::audit( $opcode, $audit );
68    
69          progress_bar::start;          progress_bar::start;
70    
71          # process the request          # process the request
72          if( $request->processRQ() ) {          if( $request->processRQ() ) {
73                  print "\nOK completed $file ", -s "$dir/$file", "\n";                  my $size = -s "$dir/$file";
74                    $audit->{state} = 'finish';
75                    $audit->{size} = $size;
76                    CouchDB::audit( $opcode, $audit );
77          } else {          } else {
78                  print "ERROR ", Net::TFTPd->error, "\n";                  $audit->{state} = 'error';
79                    $audit->{error} = Net::TFTPd->error;
80                    CouchDB::audit( $opcode, $audit );
81                  $request->processRQ();                  $request->processRQ();
82          }          }
83    
# Line 107  sub start { Line 121  sub start {
121    
122          warn 'listener: ',dump( $listener ) if $debug;          warn 'listener: ',dump( $listener ) if $debug;
123    
124          printf "TFTP listen %s:%d timeout: %d dir: $dir\n",          CouchDB::audit( 'start', {
125                  $listener->{LocalAddr},                  addr => $listener->{LocalAddr},
126                  $listener->{LocalPort},                  port => $listener->{LocalPort},
127                  $listener->{Timeout};                  timeout => $listener->{Timeout},
128                    params => { %params },
129            });
130    
131          while(1) {          while(1) {
132    

Legend:
Removed from v.141  
changed lines
  Added in v.208

  ViewVC Help
Powered by ViewVC 1.1.26