/[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 93 by dpavlin, Fri Jul 31 19:59:28 2009 UTC revision 138 by dpavlin, Tue Aug 4 15:25:09 2009 UTC
# Line 5  use strict; Line 5  use strict;
5    
6  use Net::TFTPd 0.03 qw(%OPCODES);  use Net::TFTPd 0.03 qw(%OPCODES);
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
 use Module::Refresh;  
8    
9  use server;  use server;
10    
# Line 22  sub path { Line 21  sub path {
21          return $path;          return $path;
22  }  }
23    
24  STDERR->autoflush(1);  use progress_bar;
25    
26  sub transfer_status {  sub transfer_status {
27          my $req = shift;          my $request = shift;
28          if( $req->{'_REQUEST_'}{'OPCODE'} eq $OPCODES{'RRQ'} ) {          my $r = $request->{'_REQUEST_'} || die "no _REQUEST_ in ",dump( $request );
29                  printf STDERR "RRQ %s %u\/%u\r", map { $req->{_REQUEST_}->{$_} } ( 'FileName', 'LASTACK', 'LASTBLK' );  
30          } elsif ( $req->{'_REQUEST_'}{'OPCODE'} eq $OPCODES{'WRQ'} ) {          if( $r->{'OPCODE'} eq $OPCODES{'RRQ'} ) {
31                    progress_bar::tick( $r->{FileName}, $r->{BlkSize} * $r->{LASTACK}, $r->{BlkSize} * $r->{LASTBLK} );
32            } elsif ( $r->{'OPCODE'} eq $OPCODES{'WRQ'} ) {
33                  die "WRQ disabled";                  die "WRQ disabled";
                 printf STDERR "WRQ: %u\/%u\n", $req->{'_REQUEST_'}{'LASTBLK'}, $req->{'_REQUEST_'}{'LASTACK'};  
34          } else {          } else {
35                  warn "IGNORED: ", dump( $req );                  warn "IGNORED: ", dump( $request );
36          }          }
37  }  }
38    
39    use config;
40    
41  sub tftp_request {  sub tftp_request {
42          my $request = shift;          my $request = shift;
43    
44            server->refresh;
45    
46          warn 'request: ', dump( $request ) if $debug;          warn 'request: ', dump( $request ) if $debug;
47    
48            config::for_ip( $request->{_REQUEST_}->{PeerAddr} );
49    
50          if ( $request->{RootDir} ne $dir ) {          if ( $request->{RootDir} ne $dir ) {
51                  $request->{RootDir} = $dir;                  $request->{RootDir} = $dir;
52                  warn "new root: $dir";                  warn "new root: $dir";
# Line 50  sub tftp_request { Line 56  sub tftp_request {
56          # received request          # received request
57          print $OPCODES{$request->{'_REQUEST_'}{'OPCODE'}}, " $file\n";          print $OPCODES{$request->{'_REQUEST_'}{'OPCODE'}}, " $file\n";
58    
59            progress_bar::start;
60    
61          # process the request          # process the request
62          if( $request->processRQ() ) {          if( $request->processRQ() ) {
63                  print "\nOK completed $file ", -s "$dir/$file", "\n";                  print "\nOK completed $file ", -s "$dir/$file", "\n";
# Line 88  sub start { Line 96  sub start {
96    
97          while(1) {          while(1) {
98    
                 Module::Refresh->refresh;  
   
99                  # wait for any request (RRQ or WRQ)                  # wait for any request (RRQ or WRQ)
100                  if(my $request = $listener->waitRQ()) {                  if(my $request = $listener->waitRQ()) {
101                          tftp_request $request;                          tftp_request $request;
102                  } else {                  } elsif ( my $error = Net::TFTPd->error ) {
103                          warn Net::TFTPd->error;                          warn $error;
104                  }                  }
105    
106          }          }

Legend:
Removed from v.93  
changed lines
  Added in v.138

  ViewVC Help
Powered by ViewVC 1.1.26