荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: jjk (kernel), 信区: InstallBBS
标 题: nju-0.9 uid error(转寄)
发信站: 荔园晨风BBS站 (Tue Mar 5 20:54:36 2002), 转信
【 以下文字转载自 jjk 的信箱 】
【 原文由 jjksam@smth.org 所发表 】
发信人: FIA (菲亚), 信区: BBSMan_Dev
标 题: nju-0.9 uid error(转寄)
发信站: BBS 水木清华站 (Mon Mar 4 08:28:46 2002)
我按照下面的文章做的修改(除了收藏夹的修改以外)
结果用IE浏览可以看到开始的界面
各个栏目都是好的,都可以看到
只是不能登录,输入账号密码后提示uid error
该怎么办?
我用的是fb2000 v1126
发信人: Haishion (Dog), 信区: BBSDev
标 题: nju-0.9 uid error(转寄)
发信站: 南京大学小百合站 (Mon Sep 10 17:16:28 2001), 站内信件
其实很早就安装了NJUWebBBS,安装在http://cs3.xmu.edu.cn,一直想把安装过程给整
理
成文档出来,让后人不至于重蹈覆辙:)苦于没有时间,近日上nju,惊闻zhch将中止
NJUWebBBS的后续开发,全面转向新bbs体系的开发,于是决心把这篇文章写出来了。
申明:这篇文章是在查看了njubbs的BBSDev版的大部分文章整理出来了,是njubbs
BBSDev版所有人的劳动成功,我只是整理,顺便记录下自己所做的改动,为了大家的方
便,有错误或者建议欢迎指出。
地址:cs3.xmu.edu.cn
系统:Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.2-2 on an i686
先前安装的是FB2000v1219.tar.gz
⑴
首先去下载http://lily.nju.edu.cn/cgi-bin/bbs/showfile?name=NJUWEBBS-0.9.tgz,
下载回来是showfile.zip,把他改名字为NJUWEBBS-0.9.tgz,然后用bbs用户上传到bbs
主机上,我是放在/home/bbssrc下面,(如果你看过我前面的Haishion教你当站长文章,
应该知道:)
⑵
[bbs@cs3 bbssrc]$tar zxvf NJUWEBBS-0.9.tgz
代码解开了,在/home/bbssrc/NJU-0.9下面
===============以下使用root用户修改=========
⑶
[root@bbs /root] cd /home/bbssrc/NJU-0.9
[root@bbs /NJU-0.9] mkdir /var/www/cig-bin/bbs
[root@bbs /NJU-0.9] chmod bbs.bbs /var/www/cgi-bin/bbs
⑷
[root@bbs /NJU-0.9] vi MakeFile
把最前面三行
BBSHOME = /home/bbs
CGIPATH = /home/httpd/cgi-bin/bbs
HTMPATH = /home/httpd/html
根据我的系统设置改为
BBSHOME = /home/bbs
CGIPATH = /var/www/cgi-bin/bbs
HTMPATH = /var/www/html
把
install: all
rm -rf $(CGIPATH)/bbslogin
cp $(CGI) $(CGIPATH)
chmod +s $(CGIPATH)/*
cp html/* $(HTMPATH)
改为
install: all
rm -rf $(CGIPATH)/bbslogin
cp $(CGI) $(CGIPATH)
chmod +s $(CGIPATH)/*
chown bbs.bbs $(CGIPATH) -R
cp html/* $(HTMPATH)
这样就自动修改了cgi的owner。
⑸
[root@bbs /root] vi BBSLIC.inc
把
#include "/home/bbs/bbs/bbssrc/include/bbs.h"
改为
#include "/home/bbssrc/include/bbs.h"
把
case WFRIEND: return "寻人名册";
去掉,我的系统上没有:)
把
while(1) {
if(fgets(buf3, 10000, fp2)<=0) break;
改为
while(1) {
if(fgets(buf3, 1000, fp2)<=0) break;
纯属笔误
把
char seccode[SECNUM][5]={
"a", "bcd", "mn", "efg", "hij", "kl", "op", "qr", "s"
};
根据menu.ini修改,本站分类比较奇怪:)
查找bbs.nju.edu.cn,在文章来源处,修改为cs3.xmu.edu.cn
(相应的修改在bbsgetmsg.c里面也有:))
这里可以使用grep bbs.nju.edu.cn *.c查找全部,然后一个个替换:)zhch不要砍我。。
。
SECNUM从9改为8,本站分类只有8个
然后再viBBSLIB.inc bbsleft.c两个文件修改一下分类。
⑹
[root@bbs /root] vi bbsgetmsg.c
init_all()函数后面加入
printf("<meta http-equiv=\"pragma\" content=\"no-cache\">");
让刷新不会有cache
⑺
[root@bbs /root] vi bbsall.c
查找,里面有一处bbsqry?userid==应该为bbsqry?userid=,
笔误
⑻
[root@bbs /root] vi bbsdoc.c
查找文件上载,把文件上载去掉,本站没有文件上载功能暂时
[root@bbs /root] vi bbsleft.c
查找精华区下载,把下载精华区去掉
[root@bbs /root] vi bbsdoc.c
[root@bbs /root] vi bbstdoc.c
查找下载精华区,去掉。
⑼
[root@bbs /root] vi bbschat.c
把bbschat.c 把%I改为/i,笔误
⑽
[root@bbs /root] vi bbsdoreg.c
adduser()函数最后加入
system("touch .PASSFLUSH");
解决www注册id无法telnet
查找
sprintf(salt, "%c%c", 65+rand()*26, 65+rand()*26);
改成
sprintf(salt, "%c%c", 65+rand()%26, 65+rand()%26);
解决www用户telnet登录时显示密码错误.
⑾
[root@bbs /root] vi bbslogin.c
把abort_program()替换为
void abort_program() {
int stay=0;
struct userec *x;
if(!strcmp(u_info->userid, currentuser.userid)) {
stay=abs(time(0) - *(int*)(u_info->from+32));
bzero(u_info, sizeof(struct user_info));
}
if(stay>7200) stay=7200;
x=getuser(currentuser.userid);
if(x) {
x->stay+=stay;
x->lastlogout=time(0);
save_user_data(x);
}
exit(0);
}
⑿
[root@bbs /root] vi bbsdelmail.c
全部内容替换为
#include "BBSLIB.inc"
int main() {
FILE *fp;
struct fileheader f;
char path[80], file[80], *id;
int num=0;
init_all();
if(loginok == 0) http_fatal("您尚未登录");
id=currentuser.userid;
strsncpy(file, getparm("file"), 20);
if(strncmp(file, "M.", 2) || strstr(file, "..")) http_fatal("错误的参
数");
sprintf(path, "mail/%c/%s/.DIR", toupper(id[0]), id);
fp=fopen(path, "r");
if(fp==0) http_fatal("错误的参数2");
while(1) {
if(fread(&f, sizeof(f), 1, fp)<=0) break;
num++;
if(!strcmp(f.filename, file)) {
fclose(fp);
del_record(path, sizeof(struct fileheader), num-1);
sprintf(path, "mail/%c/%s/%s", toupper(id[0]), id, f
.
filename);
unlink(path);
printf("信件已删除.<br><a href=bbsmail>返回所有信件列
表</a>\n");
http_quit();
}
}
fclose(fp);
http_fatal("信件不存在, 无法删除");
}
解决njuwebbbs-0.9删除信件的bug,只动了.DIR,忘了删文件。
⒀
在开始->运行里面直接打入下面3个url下载
http://bbs.nju.edu.cn/bbschat.css
http://bbs.nju.edu.cn/bbschat2.css
http://bbs.nju.edu.cn/msg.wav
使用ftp工具上载放到/home/bbssrc/NJU-0.9/html目录下面
⒁
最后一个大的修改,原因是先前我安装的是FB2000v1219.tar.gz,里面的收藏夹是存放
在
.goodbrd里面,而NJUWEBBBS是放在.mybrd里面,所有导致telnet里面收藏夹和Web的收
藏夹不一致,于是修改了bbsbrdadd.c、bbsleft.c、bbsmybrd.c3个文件,把mybrds改为
.goodbrd,为了使改动尽量最少,代码可能写的有点冗余。如果你觉得麻烦,或者觉得
没
必要,可以不改。首先在BBSLIB.c最后增加两个函数
//2001.09.04 Haishion add for convert GoodBrd 2 MyBrds begin
#define GOOD_BRC_NUM 50
int LoadMyBrdsFromGoodBrd(char userid[IDLEN + 2], char mybrd[GOOD_BRC_NUM][8
0])
{
FILE *fp;
char fname[STRLEN];
int i;
sprintf(fname, "home/%c/%s/.goodbrd", toupper(userid[0]), userid);
if (fp = fopen(fname, "r")) {
for (i = 0; i< GOOD_BRC_NUM; i++) {
if (EOF == fscanf(fp, "%s\n", mybrd[i]))
break;
}
fclose(fp);
}
return i;
}
void SaveMyBrdsToGoodBrd(char userid[IDLEN + 2], char mybrd[GOOD_BRC_NUM][80
], i
nt mybrdnum)
{
FILE *fp;
char fname[STRLEN];
int i;
sprintf(fname, "home/%c/%s/.goodbrd", toupper(userid[0]), userid);
if (fp = fopen(fname, "w")) {
for (i = 0; i< mybrdnum; i++)
fprintf(fp, "%s\n", mybrd[i]);
fclose(fp);
}
}
//2001.09.04 Haishion add for convert GoodBrd 2 MyBrds end
然后修改下面bbsbrdadd.c、bbsleft.c、bbsmybrd.c3个文件
我只把大致改动列在这里,希望大家看得懂
bbsbrdadd.c全部文件内容:
#include "BBSLIB.inc"
//char mybrd[32][80];
char mybrd[GOOD_BRC_NUM][80];
int mybrdnum=0;
struct boardheader x;
int ismybrd(char *board) {
int n;
for(n=0; n<mybrdnum; n++)
if(!strcasecmp(mybrd[n], board)) return n;
return -1;
}
int main() {
// FILE *fp;
char file[200], board[200];
init_all();
strsncpy(board, getparm("board"), 32);
if(!loginok) http_fatal("超时或未登录,请重新login");
// sprintf(file, "home/%c/%s/mybrds", toupper(currentuser.userid[0]), c
urre
ntuser.userid);
// fp=fopen(file, "r");
// if(fp) {
// mybrdnum=fread(mybrd, sizeof(mybrd[0]), 30, fp);
// fclose(fp);
// }
mybrdnum = LoadMyBrdsFromGoodBrd(currentuser.userid, mybrd);
if(mybrdnum>=GOOD_BRC_NUM) http_fatal("您预定讨论区数目已达上限,不能
增
");
if(ismybrd(board)>=0) http_fatal("你已经预定了这个讨论区");
if(!has_read_perm(¤tuser, board)) http_fatal("此讨论区不存在")
;
strcpy(mybrd[mybrdnum], board);
// fp=fopen(file, "w");
// fwrite(mybrd, 80, mybrdnum+1, fp);
// fclose(fp);
SaveMyBrdsToGoodBrd(currentuser.userid, mybrd, mybrdnum + 1);
printf("<script>top.f2.location='bbsleft'</script>\n");
printf("预定讨论区成功<br><a href='javascript:history.go(-1)'>快速返
回</
a>");
http_quit();
}
bbsleft.c
if(loginok) {
FILE *fp;
int i, mybrdnum=0;
// char mybrd[32][80];
char mybrd[GOOD_BRC_NUM][80];
printf("<img src=/folder.gif name=img0><a href='javascript:
t(do
cument.all.div0, document.img0)'>我的收藏夹</a><br>\n");
printf("<div id=div0 style='display:none'>\n");
// sprintf(buf, "home/%c/%s/mybrds", toupper(currentuser.userid
[0])
, currentuser.userid);
// fp=fopen(buf, "r");
// if(fp) mybrdnum=fread(mybrd, sizeof(mybrd[0]), 30, fp);
// if(fp) fclose(fp);
mybrdnum = LoadMyBrdsFromGoodBrd(currentuser.userid, mybrd);
for(i=0; i<mybrdnum; i++)
printf("<img src=/link.gif><a target=f3 href=bbsdoc?
boar
d=%s>%s</a><br>\n", mybrd[i], mybrd[i]);
printf("<img src=/link.gif><a target=f3 href=bbsmybrd>预定管
理</
a><br>\n");
printf("</div>\n");
}
bbsmybrd.c,一下列举的代码为注释掉上面,并增加下面的代码
//char mybrd[32][80];
char mybrd[GOOD_BRC_NUM][80];
// FILE *fp;
// sprintf(path, "home/%c/%s/mybrds", toupper(currentuser.userid[0]), c
urre
ntuser.userid);
// fp=fopen(path, "r");
// if(fp) {
// mybrdnum=fread(mybrd, sizeof(mybrd[0]), 30, fp);
// fclose(fp);
// }
mybrdnum = LoadMyBrdsFromGoodBrd(currentuser.userid, mybrd);
// sprintf(buf1, "home/%c/%s/mybrds", toupper(currentuser.userid[0]),
cur
rentuser.userid);
// fp=fopen(buf1, "w");
// fwrite(mybrd, 80, mybrdnum, fp);
// fclose(fp);
SaveMyBrdsToGoodBrd(currentuser.userid, mybrd, mybrdnum);
修改完毕。
===============以上使用root用户修改=========
===============以下使用bbs用户修改原先的设置=========
使用bbs用户,不是root咯。
⒂
[bbs@cs3 bbssrc]$ vi /home/bbssrc/include/struch.h
在struct user_info加入一项
int utmpkey;
⒃
[bbs@cs3 bbssrc]$ vi /home/bbssrc/src/modetype.c
加入
case 10001:
return "Web浏览";
⒄
然后重新编译并重新启动bbsd,一下为shell命令
make clean update 由于修改了.h文件,必须重新make clean
killall -9 bbsd 杀掉所有bbsd进程,要先广播一下咯:)
ipcs -m | awk '$0~/bbs/ {system(sprintf("ipcrm shm %s",$2));}'
清除共享内存
/home/bbs/bin/bbsd 23
用root重新启动bbsd
===============以上使用bbs用户修改原先的设置=========
⒅
最后使用root用户在
[root@cs3 NJU-0.9]# make install
⒆
使用IE访问
WELL DONE。
--
※ 来源:.南京大学小百合站 bbs.nju.edu.cn.[FROM: 210.34.218.160]
--
※ 修改:·FIA 於 Mar 4 08:35:47 修改本文·[FROM: 202.194.3.29]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.194.3.29]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店