- 主题:如何设定"不可上站的位置"使之仅对两个C段网络开放?
BBS的版本有点老: FB2000 v1126
想对"不可上站之位址"进行修正使得只能让类似10.1.1.*和10.1.2.*两个网段访问
要如何设定?
如果BBS设定无法达到目的
是不是可以通过Linux本身的telnet登陆相关参数设定来达到目的?
这要如何做?(Redhat 7.3)
谢谢
FB2000 v1126的管理者选单如下:
编修系统档案
[ 1] 特殊进站公布栏 [19] 注册失败信件
[ 2] 进站画面 [20] 新用户注册范例
[ 3] 进站欢迎档 [21] 用户第一次登陆公告
[ 4] 离站画面 [22] 国际会议厅清单
[ 5] 公用备忘录 [23] BBSNET 转站清单
[ 6] menu.ini [24] 区段删除不需备份之清单
[ 7] 不可注册的 ID [25] 都不想改
[ 8] 不可确认之E-Mail
[ 9] 不可上站之位址
[10] 每日自动送信档
[11] 不算POST数的板
[12] 管理者名单
[13] 定时砍信设定档
[14] 纪念日清单
[15] 暂停登陆(NOLOGIN)
[16] 暂停注册(NOREGISTER)
[17] 转信黑名单
[18] 注册成功信件
你要编修哪一项系统档案:
--
修改:blkf FROM 202.120.224.*
FROM 202.120.224.*
用防火墙?只允许这两个C段访问bbs的端口?
【 在 blkf@smth.org-SPAM.no (冰凉咖啡) 的大作中提到: 】
: BBS的版本有点老: FB2000 v1126
: 想对"不可上站之位址"进行修正使得只能让类似10.1.1.*和10.1.2.*两个网段访问
: 要如何设定?
: 如果BBS设定无法达到目的
: 是不是可以通过Linux本身的telnet登陆相关参数来达到目的?
: 这要如何做?(Redhat 7.3)
: 谢谢
: FB2000 v1126的管理者选单如下:
: ...................
--
FROM 219.225.4.84
修改登陆附近的一行代码使得功能变为“可上站之位置”
【 在 blkf (冰凉咖啡) 的大作中提到: 】
: BBS的版本有点老: FB2000 v1126
: 想对"不可上站之位址"进行修正使得只能让类似10.1.1.*和10.1.2.*两个网段访问
: 要如何设定?
: ...................
--
FROM 218.244.105.*
good idea!
只是...这段代码如何找啊 -.-
【 在 shipping (小平~~~终究还是我的) 的大作中提到: 】
: 修改登陆附近的一行代码使得功能变为“可上站之位置”
--
FROM 202.120.224.*
找登陆不可上站的提示语句
然后grep 就能找到函数定位了
【 在 blkf@smth.org-SPAM.no (冰凉咖啡) 的大作中提到: 】
: good idea!
: 只是...这段代码如何找啊 -.-
: 【 在 shipping (小平~~~终究还是我的) 的大作中提到: 】
: : 修改登陆附近的一行代码使得功能变为“可上站之位置”
--
FROM 10.2.168.224
bbsd.c
if (bad_host(fromhost) && !strcmp(remoteusername, "?"))
exit(1);
【 在 blkf (冰凉咖啡) 的大作中提到: 】
: good idea!
: 只是...这段代码如何找啊 -.-
--
FROM 218.244.113.*
貌似改成 !bad_host(fromhost) 就ok了,那位试试?说说灵不灵?
【 在 shipping (小平~~~终究还是我的) 的大作中提到: 】
: bbsd.c
: if (bad_host(fromhost) && !strcmp(remoteusername, "?"))
: exit(1);
: ...................
--
FROM 222.22.10.*
呵呵...想法不错,不过现在不需要这个功能了
下面看一下这段代码吧
bbsrf.c
int
check_ban_site(char *name)
{
FILE *list;
char buf[40], *ptr;
if (list = fopen(BAD_HOST, "r")) {
while (fgets(buf, 40, list)) {
ptr = strtok(buf, " \n\t\r");
if (ptr != NULL && *ptr != '#'){
if(!strcmp(ptr, name)){
fclose(list);
return 1;
}
//如果登陆ip在被禁列表里,则ban掉(返回值1)
if(ptr[0] == '#')continue;
//如果被禁列表的一行用#开头则跳过
//说明#起注释的作用
if(ptr[0] == '-' && !strcmp(name,&ptr[1])){
fclose(list);
return 0;
}
//如果被禁列表有一行以'-'开头,则拿'-'后面的部分和登陆ip比较
//相同则容许进入
//说明'-'开头起放入的作用
if(ptr[strlen(ptr)-1]=='.'&&!strncmp(ptr,name,strlen(ptr)-1)){
fclose(list);
return 1;
}
//如果被禁列表ip以'.'结尾,则只拿被禁列表的这个不完全ip的长度和登陆ip比较
//前面部分相同,则ban掉
//这一段的作用是让类似10.10.这样的设定何以ban掉整个b段
if(ptr[0]=='.'&&strlen(ptr)<strlen(name)&&
!strcmp(ptr,name+strlen(name)-strlen(ptr))){
fclose(list);
return 1;
}
//如果被禁列表以'.'开头,且被禁列表ip长度比登入ip短
//则只比较后面的部分,相同则ban掉
//则是对类似.10.10这样的最后部分的限定
}
}
fclose(list);
}
return 0;
如果都不符合,则让它通过
}
这段函数还是写得蛮紧凑的
唯一的缺点就是缺少对以'-'开头又以'.'结尾的ip的判断
在不做大变动的同时
加上一句这样的判断语句
再make clean update
就可以很简单地用
-10.1.1.
-10.1.2.
10.
这样的ip禁止登陆设定完成对内网的ip限定,使得只允许10.10.1/2.*两个c段进入
这是我一个比较保险的分析
【 在 chutium (阿新) 的大作中提到: 】
: 貌似改成 !bad_host(fromhost) 就ok了,那位试试?说说灵不灵?
--
修改:blkf FROM 202.120.224.*
FROM 202.120.224.*