Add proxy.pl
This commit is contained in:
parent
978b2feee1
commit
f14ea51fd7
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
use v5.38.2;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use IO::Socket::INET;
|
||||||
|
|
||||||
|
my $server = IO::Socket::INET->new(
|
||||||
|
LocalPort => 19132,
|
||||||
|
LocalHost => '0.0.0.0',
|
||||||
|
Proto => 'udp',
|
||||||
|
);
|
||||||
|
|
||||||
|
my %sockets;
|
||||||
|
|
||||||
|
my $buf = '';
|
||||||
|
while ($server->recv($buf, 1024)) {
|
||||||
|
my $host = $server->peerhost;
|
||||||
|
my $port = $server->peerport;
|
||||||
|
my $source = "$host:$port";
|
||||||
|
generate_socket($source, $server) if !defined $sockets{$source};
|
||||||
|
my $final_socket = $sockets{$source};
|
||||||
|
$final_socket->send($buf);
|
||||||
|
$buf = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub generate_socket($source, $server) {
|
||||||
|
$sockets{$source} = connect_final();
|
||||||
|
my $pid = fork;
|
||||||
|
if (!$pid) {
|
||||||
|
my $buf = '';
|
||||||
|
while ($sockets{$source}->recv($buf, 1024)) {
|
||||||
|
$server->send($buf);
|
||||||
|
$buf = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub connect_udp($host, $port) {
|
||||||
|
my $socket = IO::Socket::INET->new(
|
||||||
|
PeerPort => $port,
|
||||||
|
PeerHost => $host,
|
||||||
|
Proto => 'udp',
|
||||||
|
);
|
||||||
|
return $socket;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub connect_final {
|
||||||
|
return connect_udp('192.168.2.1', 19132);
|
||||||
|
}
|
Loading…
Reference in New Issue