晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/doc/perl-IO-Socket-SSL/example/ |
Upload File : |
#!/usr/bin/perl
# simple HTTPS proxy with SSL bridging, uses Net::PcapWriter to
# to log unencrypted traffic
my $listen = '127.0.0.1:8443'; # where to listen
my $connect = 'www.google.com:443'; # where to connect
use strict;
use warnings;
use IO::Socket::SSL;
use IO::Socket::SSL::Intercept;
use IO::Socket::SSL::Utils;
my ($proxy_cert,$proxy_key) = CERT_create(
CA => 1,
subject => { commonName => 'foobar' }
);
my $mitm = IO::Socket::SSL::Intercept->new(
proxy_cert => $proxy_cert,
proxy_key => $proxy_key,
);
my $listener = IO::Socket::INET->new(
LocalAddr => $listen,
Listen => 10,
Reuse => 1,
) or die "failed to create listener: $!";
while (1) {
# get connection from client
my $toc = $listener->accept or next;
# create new connection to server
my $tos = IO::Socket::SSL->new(
PeerAddr => $connect,
SSL_verify_mode => 1,
SSL_ca_path => '/etc/ssl/certs',
) or die "ssl connect to $connect failed: $!,$SSL_ERROR";
# clone cert from server
my ($cert,$key) = $mitm->clone_cert( $tos->peer_certificate );
# and upgrade connection to client to SSL with cloned cert
IO::Socket::SSL->start_SSL($toc,
SSL_server => 1,
SSL_cert => $cert,
SSL_key => $key,
) or die "failed to ssl upgrade: $SSL_ERROR";
# transfer data
my $readmask = '';
vec($readmask,fileno($tos),1) = 1;
vec($readmask,fileno($toc),1) = 1;
while (1) {
select( my $can_read = $readmask,undef,undef,undef ) >0 or die $!;
# try to read the maximum frame size of SSL to avoid issues
# with pending data
if ( vec($can_read,fileno($tos),1)) {
sysread($tos,my $buf,16384) or last;
print $toc $buf;
}
if ( vec($can_read,fileno($toc),1)) {
sysread($toc,my $buf,16384) or last;
print $tos $buf;
}
}
}