Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.38 KB | None | 0 0
  1. #! /usr/bin/perl
  2. use 5.016;
  3. use DDP;
  4. use Socket ':all';
  5. use LocalClient::lib::Local::Client;
  6. use FindBin;
  7. use lib "$FindBin::Bin/../lib", glob("$FindBin::Bin/../*/lib*"),;
  8.  
  9.  
  10. my $port = @ARGV[1];
  11. our $dir = @ARGV[0];
  12. my $address = 'localhost';
  13. our $verbose = 0;
  14.  
  15. socket (my $srv, AF_INET, SOCK_STREAM, IPPROTO_TCP) or die $!;
  16. setsockopt ($srv, SOL_SOCKET, SO_REUSEPORT, 1) or die $!;
  17. bind $srv, sockaddr_in($port, inet_aton($address) ) or die $!;
  18. listen $srv, SOMAXCONN or die $!;
  19. my ($port, $addr) = sockaddr_in(getsockname($srv));
  20. say "Listining on ".inet_ntoa($addr).":".$port;
  21.  
  22. #$SIG{CHLD} = sub {};
  23. #while(){
  24.         while (my $peer =  accept my $cln, $srv ) {
  25.                 defined( my $chld = fork() ) or die "fork: $!";
  26.                 if ($chld) {
  27.                         close $cln;
  28.                 }
  29.                 else {
  30.                         close $srv;
  31.  
  32.                         while (<$cln>) {
  33.  
  34.                                 say "SERVER:";
  35.                                 my $std = $_;
  36.                                 my $symbol = 0;
  37.                                 if ( $std =~ /\!\w+\s/ ) {
  38.                                         my @arrCurSTD = split(" ",$std);
  39.                                         my ($symbol) = $arrCurSTD[0] =~ /^(\!)\w+/ ;
  40.                                         my (@args) = $std =~ /\s([^\'\s]*\'[^\']+\'[^\s]*|[\w+|\/|\?+|\[|\]|\{|\}|\,|\*|\.]+)/g;
  41.                                         our ($select) = $std =~ /\!(\w+)\s.*/;
  42.                                         my $object = Client->new(
  43.                                                         symbol          =>      $symbol,
  44.                                                         method          =>      $select,
  45.                                                 #       dir             =>      $currentdir,
  46.                                                         verbose         =>      $verbose,
  47.                                                         args            =>      [@args],
  48.                                                         );
  49.  
  50.                                         $object->Method;
  51.                                 }
  52.                                 else {
  53.                                         our @arrstd = split(" ",$std);
  54.                                         my ($method) = $std =~ /(\w+)\s.*/;
  55.                                         my (@args) = $std =~ /\s([^\'\s]+\'[^\']+\'[^\s]*|[\w+|\/|\?+|\[|\]|\{|\}|\,|\*|\.]+)/g;
  56.                                         my $object = Client->new(
  57.                                                         symbol          =>      $symbol,
  58.                                                         method          =>      $method,
  59.                                                         dir             =>      $dir,
  60.                                                         verbose         =>      $verbose,
  61.                                                 #       currentdir      =>      $currentdir,
  62.                                                         args            =>      [@args],
  63.                                                         );
  64.  
  65.                                         p $object;
  66.                                         $object->Method;
  67.  
  68.                                 }
  69.                         }
  70.                         say "FINISH";
  71.                         exit;
  72.                 }
  73.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement