Guest User

Untitled

a guest
May 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use common::sense;
  4.  
  5. SimpleEchoServer->run(port => 80);
  6.  
  7.  
  8. package SimpleEchoServer;
  9.  
  10. use common::sense;
  11. use POSIX;
  12. use Privileges::Drop;
  13. use base 'Net::Server';
  14.  
  15. my $EOL = "\r\n";
  16.  
  17. sub post_bind { drop_privileges('nobody'); $0 = "echo_server.pl" }
  18.  
  19. sub process_request {
  20. my $this = shift;
  21. my $addr = $this->{server}{peeraddr};
  22. my $line = <STDIN>; chomp $line;
  23.  
  24. $this->log(1, "connection from $addr");
  25.  
  26. print "$line\n";
  27. }
  28.  
  29. sub log {
  30. my $this = shift;
  31. my ($l, $m) = @_;
  32.  
  33. $m =~ s/^\s+//; $m =~ s/\s+$//; $m =~ s/[\r\n]//g;
  34.  
  35. if( $l > 3 ) {
  36. $m = "[DEBUG] $m";
  37. }
  38.  
  39. $m = strftime('%Y-%m-%d %H:%M:%S ', localtime) . sprintf('%7s: %s', "[$$]", $m);
  40.  
  41. $this->SUPER::log($l, "$m\n");
  42. }
  43.  
  44.  
  45. 1;
Add Comment
Please, Sign In to add comment