Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/perl
- use 5.016;
- use DDP;
- use Socket ':all';
- use LocalClient::lib::Local::Client;
- use FindBin;
- use lib "$FindBin::Bin/../lib", glob("$FindBin::Bin/../*/lib*"),;
- my $port = @ARGV[1];
- our $dir = @ARGV[0];
- my $address = 'localhost';
- our $verbose = 0;
- socket (my $srv, AF_INET, SOCK_STREAM, IPPROTO_TCP) or die $!;
- setsockopt ($srv, SOL_SOCKET, SO_REUSEPORT, 1) or die $!;
- bind $srv, sockaddr_in($port, inet_aton($address) ) or die $!;
- listen $srv, SOMAXCONN or die $!;
- my ($port, $addr) = sockaddr_in(getsockname($srv));
- say "Listining on ".inet_ntoa($addr).":".$port;
- #$SIG{CHLD} = sub {};
- #while(){
- while (my $peer = accept my $cln, $srv ) {
- defined( my $chld = fork() ) or die "fork: $!";
- if ($chld) {
- close $cln;
- }
- else {
- close $srv;
- while (<$cln>) {
- say "SERVER:";
- my $std = $_;
- my $symbol = 0;
- if ( $std =~ /\!\w+\s/ ) {
- my @arrCurSTD = split(" ",$std);
- my ($symbol) = $arrCurSTD[0] =~ /^(\!)\w+/ ;
- my (@args) = $std =~ /\s([^\'\s]*\'[^\']+\'[^\s]*|[\w+|\/|\?+|\[|\]|\{|\}|\,|\*|\.]+)/g;
- our ($select) = $std =~ /\!(\w+)\s.*/;
- my $object = Client->new(
- symbol => $symbol,
- method => $select,
- # dir => $currentdir,
- verbose => $verbose,
- args => [@args],
- );
- $object->Method;
- }
- else {
- our @arrstd = split(" ",$std);
- my ($method) = $std =~ /(\w+)\s.*/;
- my (@args) = $std =~ /\s([^\'\s]+\'[^\']+\'[^\s]*|[\w+|\/|\?+|\[|\]|\{|\}|\,|\*|\.]+)/g;
- my $object = Client->new(
- symbol => $symbol,
- method => $method,
- dir => $dir,
- verbose => $verbose,
- # currentdir => $currentdir,
- args => [@args],
- );
- p $object;
- $object->Method;
- }
- }
- say "FINISH";
- exit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement