
- UID
- 2033152
- 威望
- 1 点
- 金钱
- 3090 金币
- 点卡
- 0 点
|
1#
发表于 2003-9-3 18:18
| 只看该作者
[转帖]一个bbs telnet proxy
需要创建一个bbs用户,密码为空(用root passwd bbs ,连续回车)
将它的shell改为bbs.pl,需要路径
在multi.txt中存储允许多个用户的IP,每行一个:IP正则表达式::允许数目
例:
166\.111\.::2
\.edu\.cn::3
没有::的行都可以作为注释
在banned.txt中可以存储禁止穿梭的用户,每行一个正则表达式
例:(禁止教育网)
166\.111
162\.105
202\.20\d
\.edu\.cn
banned.txt优先权大于multi.txt,如果一个IP符合多个multi.txt的条件,选择最多的
!!!!!如果正则表达式有误,程序会出错的,我觉得没必要用eval,方便大家查错!!!
在welcome.txt中存放欢迎信息
在deny.txt存放对被拒绝的用户的解释
具体服务还需要修改程序
主文件
bbs.pl
#START
#!/usr/local/bin/perl
use strict;
############## GET IP ####################
my $result = "";
my @temp = ();
my $thisip = "";
$result = `last -n 1 bbs`;
@temp=split("\n", $result);
@temp = split(" ", shift @temp);
$thisip = $temp[2];
$result=`finger | grep bbs`;
@temp=split("\n",$result);
my $online={};
my $flag=0;
############# GET USER #####################
foreach $result(@temp)
{
next if $result!~m{\w*\s*(\d*)\s*(\d*) \d*) \((.*)\)};
$online->{$4}++;
}
############## RESTRICT #####################
open(FH,'multi.txt');
my $allow=1;
my $line=undef;
while($line=<FH>)
{
chomp($line);
my ($rexp,$allow2)=split('::',$line);
next if !$allow2;
if($thisip=~m{$rexp})
{
#print "DEBUG: $allow $allow2";
$allow=$allow>$allow2?$allow allow2;
}
}
if($online->{$thisip}>$allow || scalar(keys %$online)>=12)
{
print " 这台机器还有其它的用途,资源有限。所以最多只允许12人在线。一个IP
只允许\n一个用户在线,如果你们通过一台机器,与星星bbs论坛的magic联系。
\n";
exit;
}
open(FH,'banned.txt');
while($line=<FH>)
{
chomp($line);
if($thisip=~m{$line})
{
print "$thisip 是不受欢迎的用户,对不起。\n";
exec('cat deny.txt') if (-e 'deny.txt');
exit;
}
}
############## MAIN #####################
print "欢迎你,来自",$thisip," [$online->{$thisip}/$allow] 的朋友 \n";
for(1...5)
{
system('cat welcome.txt') if (-e 'welcome.txt');
my $choice=<STDIN>;
chomp($choice);
chomp($choice);
if($choice==1)
{
exec('telnet smth.org');
exit;
}
elsif($choice==2)
{
system('finger | grep bbs');
}
elsif($choice==3)
{
print "\n谢谢使用,再见。";
exit;
}
else
{
print "\n无效输入\n";
}
}
print "\n谢谢使用,再见。";
#END |
|