Net-Shadowsocks
view release on metacpan or search on metacpan
lib/Net/Shadowsocks/Server.pm view on Meta::CPAN
$decrypt_nonce = $decrypt_nonce->increment();
$decryptor->reset();
$decryptor->iv_add($decrypt_nonce);
$decryptor->adata_add("");
$decrypted_data = $decryptor->decrypt_add(substr($incoming_data,18,$header_len ));
my $header_tag = substr($incoming_data,18 + $header_len,16);
my $header_result = $decryptor->decrypt_done($header_tag);
if ( !$header_result )
{
AE::log error => "data forged!";
$chandle->destroy();
}
else
{
$decrypt_nonce = $decrypt_nonce->increment();
#$decryptor->reset();
$incoming_data = substr($incoming_data,$chunk_len);
$chandle->{rbuf} = $incoming_data;
#carp "more chunk to process" if (length($incoming_data ) > 0);
}
}
}
}
}
}
else
{
$decrypted_data = $decryptor->decrypt($incoming_data,$key,$client_iv);
}
if (defined($remotehandler))
{
$remotehandler->push_write($decrypted_data);
}
else
{
AE::log error => "lost connection to remote";
$mode = 0;
$chandle ->destroy();
}
}
}
}
if ($self->{method} !~ /gcm$/ and $self->{method} !~ /poly1305$/)
{
$chandle->{rbuf} = undef;
}
}
);
},
sub
{
my $client_socket = shift;
setsockopt($client_socket,,SOL_SOCKET, SO_REUSEADDR, 1);
if ( $_osname eq "linux" and -e "/proc/sys/net/ipv4/tcp_fastopen")
{
if (-r "/proc/sys/net/ipv4/tcp_fastopen")
{
my $_tfo = do
{
local ( @ARGV, $/ ) = "/proc/sys/net/ipv4/tcp_fastopen";<>;
};
if ( $_tfo == 2 or $_tfo == 3 )
{
setsockopt( $client_socket, IPPROTO_TCP, TCP_FASTOPEN, 1 );
AE::log info => "TCP Fast Open enabled on server.";
}
}
}
elsif ( $_osname eq "darwin" )
{
my $_version_major = substr( $_osvers, 0, index( $_osvers, "." ) );
if ( $_version_major >= 15 )
{
setsockopt( $client_socket, IPPROTO_TCP, TCP_FASTOPEN, 1 );
AE::log info => "TCP Fast Open enabled on server.";
}
}
},
);
my $cv = AE::cv;
$cv->recv();
return $self;
}
1; # End of Net::Shadowsocks::Server
__END__
=pod
=encoding utf8
=head1 NAME
Net::Shadowsocks::Server - Shadowsocks protocol server module.
=head1 VERSION
Version 0.9.3.2
=head1 SYNOPSIS
use Net::Shadowsocks::Server;
=head1 DESCRIPTION
1. A total of 34 encryption methods are supported:
aes-128-cfb aes-128-ctr aes-128-gcm aes-128-ofb
aes-192-cfb aes-192-ctr aes-192-gcm aes-192-ofb
aes-256-cfb aes-256-ctr aes-256-gcm aes-256-ofb
camellia-128-cfb camellia-128-ctr camellia-128-ofb
camellia-192-cfb camellia-192-ctr camellia-192-ofb
camellia-256-cfb camellia-256-ctr camellia-256-ofb
chacha20-ietf chacha20-ietf-poly1305
rc4-md5
rc6-128-cfb rc6-128-ctr rc6-128-ofb
rc6-192-cfb rc6-192-ctr rc6-192-ofb
rc6-256-cfb rc6-256-ctr rc6-256-ofb
spritz
( run in 0.792 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )