Add proxy.pl

This commit is contained in:
sergiotarxz 2024-07-25 07:15:52 +02:00
parent 978b2feee1
commit f14ea51fd7
1 changed files with 51 additions and 0 deletions

51
proxy.pl Normal file
View File

@ -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);
}