int bbslogin_main() { int n, t; time_t dtime; char filename[128], buf[256], id[20], pw[20], url[10], *ub = FIRST_PAGE; // main_page[STRLEN]; struct userec *x; int ipmask; html_header(3); strsncpy(id, getparm("id"), 13); strsncpy(pw, getparm("pw"), 13); strsncpy(url, getparm("url"), 3); ipmask = atoi(getparm("ipmask")); if (loginok && strcasecmp(id, currentuser.userid) && !isguest) { http_fatal ("系统检测到目前你的计算机上已经登录有一个帐号 %s,请先退出.(选择正常logout)", currentuser.userid); } if (!strcmp(id, "")) { strcpy(id, "guest"); } x = getuser(id); if (x == 0) { printf("%s<br>", id); http_fatal("错误的使用者帐号"); } strcpy(id, x->userid); if (strcasecmp(id, "guest")) { if (checkbansite(fromhost)) { http_fatal ("对不起, 本站不欢迎来自 [%s] 的登录. <br>若有疑问, 请与SYSOP联系.", fromhost); } if (userbansite(x->userid, fromhost)) http_fatal("本ID已设置禁止从%s登录", fromhost); if (!checkpasswd(x->passwd, pw)) { logattempt(x->userid, fromhost, "WWW", now_t); http_fatal("密码错误"); } if (!user_perm(x, PERM_BASIC)) http_fatal ("此帐号已被停机, 若有疑问, 请用其他帐号在sysop版询问."); if (file_has_word(MY_BBS_HOME "/etc/prisonor", x->userid)) http_fatal("安心改造,不要胡闹"); if (x->dietime) http_fatal("死了?还要做什么? :)"); t = x->lastlogin; x->lastlogin = now_t; if (abs(t - now_t) < 20) { http_fatal("两次登录间隔过密!"); } dtime = t - 4 * 3600; t = localtime(&dtime)->tm_mday; dtime = now_t - 4 * 3600; if (t < localtime(&dtime)->tm_mday && x->numdays < 800) x->numdays++; x->numlogins++; strsncpy(x->lasthost, fromhost, 16); save_user_data(x); currentuser = *x; } sprintf(buf, "%s enter %s www", x->userid, fromhost); newtrace(buf); n = 0; if (loginok && isguest) { bzero(u_info, sizeof (struct user_info)); } if (strcasecmp(id, "guest")) { sethomepath(filename, x->userid); mkdir(filename, 0755); strsncpy(buf, getparm("style"), 3); wwwstylenum = -1; if (isdigit(buf[0])) wwwstylenum = atoi(buf); if ((wwwstylenum > NWWWSTYLE || wwwstylenum < 0)) if (!readuservalue (x->userid, "wwwstyle", buf, sizeof (buf))) wwwstylenum = atoi(buf); if (wwwstylenum < 0 || wwwstylenum >= NWWWSTYLE) wwwstylenum = 1; currstyle = &wwwstyle[wwwstylenum]; } else { wwwstylenum = 1; currstyle = &wwwstyle[wwwstylenum]; } ub = wwwlogin(x, ipmask); if (!strcmp(url, "1")) /*printf("<link href=\"images/@byron.css\" rel=stylesheet type=\"text/css\">\n <frameset cols=135,* frameSpacing=0 frameborder=no id=fs0>\n <frame src=\"%sbbsleft?t=%ld\" name=f2 frameborder=no scrolling=no>\n <frameset id=fs1 rows=0,*,18 frameSpacing=0 frameborder=no border=0>\n <frame scrolling=no name=fmsg src=\"%sbbsmsg\">\n <frame name=f3 src=\"%sbbsfoot\">\n <frame scrolling=no name=f4 src=\"%sbbsfoot.htm\">\n </frameset>\n </frameset>\n", ub, now_t, ub, ub, ub);*/ //add by mintbaggio 040411 for new www // html_header(3); printf ("<script>opener.parent.f2.location.href=\"%sbbsleft?t=%ld\";\n" "opener.parent.fmsg.location.href=\"%sbbsgetmsg\";\n" //"opener.parent.f4.location.href=\"%sbbsfoot\";\n" "a=window.opener.location.href;\n" "l=a.length;\n" "t=a.indexOf('/" SMAGIC "',1);\n" "t=a.indexOf('/',t+1);\n" "nu=\"%s\"+a.substring(t+1,l);\n" "window.opener.location.href=nu;window.close();</script>", ub, now_t, ub, ub, ub); //} else redirect(ub); //else { // print_session_string(ub); // html_header(3); // // sprintf(main_page, "/%s/", SMAGIC); // redirect(main_page); //} http_quit(); return 0; }
int main(int n, char *cmd[]) { int c, m, i; int dx, dy; telnet_init(); if (map_init() == 0) printf("map.dat error\n"); if (n >= 2) { char buf[40]; strsncpy(userid, cmd[1], sizeof (userid)); readuservalue(userid, "worker.laststage", buf, sizeof (buf)); lastMaxStage = atoi(buf); if (lastMaxStage >= map_total) lastMaxStage = map_total - 1; stage = lastMaxStage; } if (n >= 3) strsncpy(fromhost, cmd[2], sizeof (fromhost)); if (stage == 0) { clear(); printf("»¶Ó¹âÁÙ[1;32mÍÆÏä×Ó[mÓÎÏ·¡£\r\n"); printf ("¹æÔòºÜ¼òµ¥£¬Ö»Ðè°ÑËùÓеÄ'¡õ'¶¼ÍƵ½'¡¤'ÉÏÃæÈ¥(»á±ä³ÉÂÌÉ«)¾Í¹ý¹ØÁË¡£\r\n"); printf("µ«ÍæÆðÀ´ÄѶȿÉÊÇÏ൱´óµÄ£¬²»ÒªÇáÊÓม£\r\n"); pressanykey(); goto start; } win_showrec(); clear(); printf("ÇëÓ÷½Ïò¼üÑ¡¹Ø, »Ø³µ¼üÈ·ÈÏ: %d ", stage); move(0, 14); while (1) { c = inkey(); if ((c == KEY_LEFT || c == KEY_UP) && stage > 0) stage--; if ((c == KEY_RIGHT || c == KEY_DOWN) && stage < lastMaxStage) stage++; if (c == 10 || c == 13) break; if (c == 3 || c == 4 || c == 32) quit(); move(0, 14); printf("%d ", stage); move(0, 14); } start: if (stage < 0 || stage >= map_total) stage = 0; clear(); printf("ÍÆÏä×Ó: µÚ [1;32m%d[m ¹Ø:\033[m", stage); move(20, 0); refresh(); sleep(1); start2: for (n = 0; n < 20; n++) for (m = 0; m < 30; m++) map_now[n][m] = map_data[stage][n][m]; if (!find_y_x(&now_y, &now_x)) printf("stage error\n"); map_show(); bzero(&my_history, sizeof (my_history)); while (1) { c = inkey(); if (my_history.max >= 1999) { move(21, 0); printf("ÄãÓÃÁË2000²½»¹Ã»Óйý¹Ø! GAME OVER."); quit(); } dx = 0; dy = 0; if (c == 8 && my_history.max > 0) { my_history.max--; i = my_history.max; map_move(my_history.y1[i], my_history.x1[i], my_history.y0[i], my_history.x0[i]); find_y_x(&now_y, &now_x); move(now_y, now_x); continue; } if (c == ' ') quit(); if (c == '') map_show(); if (c == 9) goto start2; if (c == KEY_UP) dy = -1; if (c == KEY_DOWN) dy = 1; if (c == KEY_LEFT) dx = -1; if (c == KEY_RIGHT) dx = 1; if (dx == 0 && dy == 0) continue; if (map_now[now_y + dy][now_x + dx] & 4) if (map_now[now_y + dy * 2][now_x + dx * 2] < 2) { map_move(now_y + dy, now_x + dx, now_y + dy * 2, now_x + dx * 2); i = my_history.max; my_history.y0[i] = now_y + dy; my_history.x0[i] = now_x + dx; my_history.y1[i] = now_y + dy * 2; my_history.x1[i] = now_x + dx * 2; my_history.max++; } if (map_now[now_y + dy][now_x + dx] < 2) { map_move(now_y, now_x, now_y + dy, now_x + dx); i = my_history.max; my_history.y0[i] = now_y; my_history.x0[i] = now_x; my_history.y1[i] = now_y + dy; my_history.x1[i] = now_x + dx; my_history.max++; } if (check_if_win()) break; find_y_x(&now_y, &now_x); move(now_y, now_x); } move(19, 0); printf("×£ºØÄã, Äã³É¹¦ÁË£¡"); steps = my_history.max; win_checkrec(); stage++; if (stage > lastMaxStage) { lastMaxStage = stage; if (strcmp(userid, "null.")) { char buf[30]; sprintf(buf, "%d", lastMaxStage); saveuservalue(userid, "worker.laststage", buf); } } goto start; }
int bbsleft_main() { int i; int div = 0; // changemode(MMENU); if (0) errlog("%s-%s-%s-%s", getsenv("HTTP_ACCEPT_LANGUAGE"), getsenv("Accept"), getsenv("Accept-Charset"), getsenv("Accept-Encoding")); html_header(2); #if 0 { char *ptr; char buf[256]; ptr = getsenv("HTTP_USER_AGENT"); sprintf(buf, "%-14.14s %.100s", currentuser->userid, ptr); addtofile(MY_BBS_HOME "/browser.log", buf); } #endif printf("<script src=" BBSLEFTJS "></script>\n" "<script src=" BBSJS "></script>\n" "<script src=" BBSAJAXJS "></script>\n" "<script src=" BBSJSONJS "></script>\n" "<script src=" BBSBRDJS "></script>\n" "<body onMouseOver='doMouseOver()' " "onMouseEnter='doMouseOver()' " "onMouseOut='doMouseOut()'>\n<nobr>"); if (!loginok || isguest) { printf("<table width=100%%>\n"); /*由于去掉了框架,暂时去掉https的跳转支持 #ifdef HTTPS_DOMAIN #ifdef USESESSIONCOOKIE printf("<form name=l action=https://%s/" SMAGIC "/bbslogin " "method=post target=_top>", getsenv("HTTP_HOST")); #else printf("<form name=l action=https://" HTTPS_DOMAIN "/" SMAGIC "/bbslogin method=post target=_top>"); #endif printf("<input type=hidden name=usehost " "value='http%s://%s:%s'>", strcasecmp(getsenv("HTTPS"), "ON")?"":"s", getsenv("HTTP_HOST"), getsenv("SERVER_PORT")); #else printf("<form name=l action=bbslogin method=post target=_top>"); #endif */ printf("<form name=l action=bbslogin method=post target=_top>"); printf("<tr><td>" "<input type=hidden name=lastip1 value=''>" "<input type=hidden name=lastip2 value=''>" "帐号<input type=text name=id maxlength=%d size=11><br>" "密码<input type=password name=pw maxlength=%d size=11><br>" "<a href=/ipmask.html target=_blank>范围</a>" "<select name=ipmask style='width: 78px;'>\n" "<option value=0 selected>单IP</option>\n" "<option value=1>2 IP</option>\n" "<option value=2>4 IP</option>\n" "<option value=3>8 IP</option>\n" "<option value=4>16 IP</option>\n" "<option value=5>32 IP</option>\n" "<option value=6>64 IP</option>\n" "<option value=7>128 IP</option>\n" "<option value=8>256 IP</option>\n" "<option value=15>32K IP</option></select>" "<input type=submit value=登录> " "<input type=submit value=注册 onclick=\"{top.location.href='/" SMAGIC "/bbsemailreg';return false}\">\n" "</td></tr></form></table>\n", IDLEN, PASSLEN - 1); } else { char buf[256] = "未注册用户"; printf ("用户: <a href=bbsqry?userid=%s target=_top>%s</a><br>", currentuser->userid, currentuser->userid); if (currentuser->userlevel & PERM_LOGINOK) strcpy(buf, cuserexp(currentuser->exp_group, countexp(currentuser, 2))); if (currentuser->userlevel & PERM_BOARDS) strcpy(buf, "版主"); if (currentuser->userlevel & PERM_XEMPT) strcpy(buf, "永久帐号"); if (currentuser->userlevel & PERM_SYSOP) strcpy(buf, "本站站长"); printf("级别: %s<br>", buf); printf("<a href=bbslogout target=_top>注销本次登录</a><br>\n"); } printf("<hr>"); check_msg(); //如果有新消息,则print链接 printf(" <a target=_top href=boa?secstr=?>一路bbs导读</a><br>\n"); printf(" <a href=\"/ku\" target=\"_blank\">一路精华区(新)</a><br>\n"); printf(" <a target=_top href=bbs0an>精华公布栏</a><br>\n"); printf(" <a target=_top href=bbstop10>十大热门话题</a><br>\n"); printf(" <a target=_top href=digest?C=0>近日精彩话题</a><br>\n"); #if ENABLE_BLOG printf(" <a target=_blank href=blogpage>一路博客</a><br>\n"); #endif // printf(" <a target==_BLANK href=http://yjrg.net/wiki><font color=brown>如故知识库</font></a><br>\n"); if (loginok && !isguest) { char buf[10]; unsigned int mybrdmode; readuservalue(currentuser->userid, "mybrd_mode", buf, sizeof(buf)); mybrdmode = atoi(buf); printdiv(&div, "订阅讨论区"); bbsmybrd_show_left(mybrdmode); printf (" <a target=_top href=bbsboa?secstr=*>预定区总览</a><br>\n"); printf (" <a target=_top href=bbsmybrd?mode=1>预定管理</a><br>\n"); printf("</div>\n"); } printdiv(&div, "分类讨论区"); printsectree(§ree); printf("</div>\n"); #if 0 printf("<div class=r>"); for (i = 0; i < sectree.nsubsec; i++) { const struct sectree *sec = sectree.subsec[i]; if (!sec->nsubsec) continue; printf ("--<a target=_top href=bbsboa?secstr=%s>%s</a><br>\n", sec->basestr, sec->title); } printf("</div>\n"); #endif printdiv(&div, "谈天说地"); if (loginok && !isguest) { printf (" <a href=bbsfriend target=_top>在线好友</a><br>\n"); } // printf // (" <a href=bbsufind?search=A&limit=20 target=_top>环顾四方</a><br>\n"); printf(" <a href=bbsqry target=_top>查询网友</a><br>\n"); if (currentuser->userlevel & PERM_PAGE) { printf (" <a href=bbssendmsg target=_top>发送短消息</a><br>\n"); printf (" <a href=bbsmsg target=_top>查看所有短消息</a><br>\n"); } printf("</div>\n"); if (loginok && !isguest) { #ifdef HTTPS_DOMAIN char str[STRLEN + 10], *ptr; //char taskfile[256]; #endif printdiv(&div, "个人设置"); #ifdef HTTPS_DOMAIN strsncpy(str, getsenv("SCRIPT_URL"), STRLEN); ptr = strrchr(str, '/'); if (ptr) strcpy(ptr, "/bbspwd"); printf(" <a target=_top href=https://" HTTPS_DOMAIN "%s>修改密码</a><br>", str); #else printf(" <a target=_top href=bbspwd>修改密码</a><br>"); #endif printf(" <a target=_top href=bbsinfo>个人资料和头像</a><br>" " <a target=_top href=bbsplan>改说明档</a><br>" " <a target=_top href=bbssig>改签名档</a><br>" " <a target=_top href=bbsparm>修改个人参数</a><br>" " <a target=_top href=bbsmywww>WWW个人定制</a><br>" " <a target=_top href=bbsmyclass>底栏显示的版面</a><br>" " <a target=_top href=bbsnick>临时改昵称</a><br>" " <a target=_top href=bbsstat>排名统计</a><br>" " <a target=_top href=bbsfall>设定好友</a><br>"); if (currentuser->userlevel & PERM_CLOAK) printf(" <a target=_top " "onclick='return confirm(\"确实切换隐身状态吗?\")' " "href=bbscloak>切换隐身</a><br>\n"); printf("</div>"); printdiv(&div, "处理信件"); printf(" <a target=_top href=bbsnewmail>未读邮件</a><br>" " <a target=_top href=bbsmail>所有邮件</a><br>" " <a target=_top href=bbspstmail>发送邮件</a><br>" "</div>"); // " <a target=_top href=bbsspam>垃圾邮件</a><br>" } printdiv(&div, "特别服务"); //printf(" <a target=_top href=bbssechand>二手市场</a><br>\n"); printf(" <a target=_top href=/wnl.html>万年历</a><br>\n"); //以下特别服务里注释的地方暂时坏了或者没有打开 //printf(" <a target=_top href=/cgi-bin/cgincce>科技词典</a><br>\n"); printf (" <a target=_top href=/scicalc.html>科学计算器</a><br>\n"); //printf(" <a target=_top href=/periodic/periodic.html>元素周期表</a><br>\n"); //printf(" <a target=_top href=/cgi-bin/cgiman>Linux手册查询</a><br>\n"); printf(" <a href=bbsfind target=_top>文章查询</a><br>\n"); //printf(" <a target=_top href=/cgi-bin/cgifreeip>IP地址查询</a><br>\n"); //printf(" <a target=_top href=bbs0an>精华公布栏</a><br>\n"); //printf(" <a target=_top href=bbsx?chm=1>下载精华区</a><br>\n"); //printf(" <a target=_top href=http://%s/tools/telnet_tools/index.html>" "Telnet工具下载</a><br>\n", getsenv("HTTP_HOST")); printf("</div>\n"); if (loginok && !isguest && (currentuser->userlevel & PERM_DEFAULT) == PERM_DEFAULT) { printdiv(&div, "我的地盘"); if (*system_load() >= 1.7 || count_online() > ONLINELIMIT) printf(" 我的帖子(系统负载过高,暂停使用)<br>\n"); else printf(" <a target=_top href=bbsfind?user=%s&day=180>我的帖子</a><br>\n",currentuser->userid); #ifdef ENABLE_BLOG if (currentuser->hasblog) printf(" <a target=_top href=blog?U=%s>我的Blog</a><br>\n",currentuser->userid); #endif if (isalpha(currentuser->userid[0]) && (currentuser->userlevel & PERM_SPECIAL8)) { printf (" <a target=_top href=bbs0an?path=/groups/GROUP_0/Personal_Corpus/%c/%s>我的文集</a>", toupper(currentuser->userid[0]), currentuser->userid); } } printf("</div>\n"); printf("<div class=r>"); // printf(" <a target=_top href=bbs0an?path=/groups/GROUP_0/Personal_Corpus>个人文集区</a><br>\n"); printf(" <a target=_top href=bbsall>所有讨论区</a><br>\n"); #ifdef ENABLE_INVITATION if (loginok && !isguest && (currentuser->userlevel & PERM_DEFAULT) == PERM_DEFAULT) printf (" <a target=_top href=bbsinvite>邀请朋友</a><br>"); #endif bbsadv_show(2); printf("<hr>"); printf("<table width=100%%><tr><form action=bbssearchboard method=post target=_top><td><div align=center>" "<input type=text style='width:100px' name=match maxlength=24 " "size=9 value=搜索讨论区 onclick=\"this.select()\" align=left></div></td></form></tr></table>\n"); printf("<hr>"); printf(" <a href='telnet:%s'>Telnet登录</a><br>\n", BBSHOST); printf(" <a target=_top href=home?B=BBSHelp>用户帮助</a>\n"); #if 0 /* 先去掉,有空改成再发送一次注册确认信 */ if (loginok && !isguest && !(currentuser->userlevel & PERM_LOGINOK) && !has_fill_form(currentuser->userid)) printf ("<br> <a target=_top href=bbsform><font color=red>填写注册单</font></a>\n"); #endif if (loginok && !isguest && USERPERM(currentuser, PERM_ACCOUNTS)) printf ("<br> <a href=bbsscanreg target=_top>SCANREG</a>"); if (loginok && !isguest && USERPERM(currentuser, PERM_SYSOP)) printf("<br> <a href=kick target=_top>踢www下站</a>"); //if(loginok && !isguest) printf("<br> <a href='javascript:openchat()'>bbs茶馆</a>"); printf ("<br> <a href=bbsselstyle target=_top>换个界面看看</a>"); printf("<br> 当前在线[%d] ", count_online()); printf("<hr />\n"); printf("<!-- SiteSearch Google --><form method=\"get\" action=\"http://www.google.com/custom\" target=\"google_window\"><table border=\"0\"><tr><td nowrap=\"nowrap\" valign=\"top\" align=\"left\" height=\"32\"></td><td nowrap=\"nowrap\"><input type=\"hidden\" name=\"domains\" value=\"yilubbs.com\"></input><label for=\"sbi\" style=\"display: none\">输入您的搜索字词</label><input type=\"text\" name=\"q\" size=\"15\" maxlength=\"255\" value=\"\" id=\"sbi\"></input></td></tr><tr><td> </td><td nowrap=\"nowrap\"><table><tr><td><input type=\"radio\" name=\"sitesearch\" value=\"yilubbs.com\" id=\"ss1\" checked></input><label for=\"ss1\" title=\"搜索 yilubbs.com\"><font size=\"-1\" color=\"#000000\">yilubbs.com</font></label></td><td></td></tr></table><label for=\"sbb\" style=\"display: none\">提交搜索表单</label><input type=\"submit\" name=\"sa\" value=\"Google 搜索\" id=\"sbb\"></input><input type=\"hidden\" name=\"client\" value=\"pub-7608613947207155\"></input><input type=\"hidden\" name=\"forid\" value=\"1\"></input><input type=\"hidden\" name=\"ie\" value=\"GB2312\"></input><input type=\"hidden\" name=\"oe\" value=\"GB2312\"></input><input type=\"hidden\" name=\"cof\" value=\"GALT:#008000;GL:1;DIV:#FFFFFF;VLC:663399;AH:center;BGC:FFFFFF;LBGC:FFFFFF;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:50;LW:110;L:http://www.yilubbs.com/ku/images/logo.gif;S:http://www.yilubbs.com;FORID:1\"></input><input type=\"hidden\" name=\"hl\" value=\"zh-CN\"></input></td></tr></table></form><!-- SiteSearch Google -->"); /* printf("<hr />\n" "<!-- Google CSE Search Box Begins -->\n" "<div align=center>" "<form action=\"/fulltext.htm\" id =\"" SEARCHID "\" " "target=_blank>\n" "<input type=\"hidden\" name=\"cx\" value=\"" SEARCHID "\" />\n" "<input type=\"hidden\" name=\"cof\" value=\"FORID:11\" />\n" "<input type=\"text\" name=\"q\" size=\"14\" />\n<br>\n" "<input type=\"submit\" name=\"sa\" value=\"全文搜索\" />\n" "</form>" "<script type=\"text/javascript\" src=\"http://" "www.google.com/coop/cse/brand?form=searchbox_" SEARCHID "\">\n</script>\n" "</div>" "<!-- Google CSE Search Box Ends -->"); */ if (1 || strcmp(MY_BBS_ID, "YTHT")) printf("<br><br><center><img src=/coco.gif>"); else { printf ("<br><center><a href=http://www.cbe-amd.com target=_blank><img src=/cbe-amd.gif border=0></a>"); printf ("<br><center><a href=http://www.amdc.com.cn/products/cpg/amd64/ target=_blank><img src=/AMD64_logo.gif border=0></a>"); } printf ("<br><a target=_top href=bug ><strong>报告Bug</strong></a>"); printf("</div>"); printf("<script>if(isNS4) arrange();if(isOP)alarrangeO();</script>"); if (loginok && !isguest) { if (USERPERM(currentuser, PERM_LOGINOK) && !USERPERM(currentuser, PERM_POST)) printf ("<script>alert('您被封禁了全站发表文章的权限, 请参看sysop版公告, 期满后在sysop版申请解封. 如有异议, 发信给arbitration帐号投诉)</script>\n"); mails(currentuser->userid, &i); if (i > 0) printf("<script>alert('您有新信件!')</script>\n"); } // if(loginok&¤tuser.userdefine&DEF_ACBOARD) // printf("<script>window.open('bbsmovie','','left=200,top=200,width=600,height=240');</script>"); //virusalert(); if (isguest && 0) printf ("<script>setTimeout('open(\"regreq\", \"winREGREQ\", \"width=600,height=460\")', 1800000);</script>"); if (loginok && !isguest) { char filename[80]; sethomepath(filename, currentuser->userid); mkdir(filename, 0755); sethomefile(filename, currentuser->userid, BADLOGINFILE); if (file_exist(filename)) { printf("<script>" "window.open('bbsbadlogins', 'badlogins', 'toolbar=0, scrollbars=1, location=0, statusbar=1, menubar=0, resizable=1, width=450, height=300');" "</script>"); } } bbsadv_show(0); if (!via_proxy && wwwcache->text_accel_port && wwwcache->text_accel_addr.s_addr) printf("<script src=http://proxy.%s:%d/testdoc.js></script>", MY_BBS_DOMAIN, wwwcache->text_accel_port); else if (via_proxy) w_info->doc_mode = 0; //printf("<script src=/testdoc.js></script>"); if (!loginok || isguest) setlastip(); printf("</body></html>"); return 0; }
int bbsmybrd_main() { //modify by mintbaggio 20040829 for new www int type, mode, mybrdmode; char buf[80]; html_header(1); check_msg(); if (!loginok || isguest) http_fatal("尚未登录或者超时"); changemode(ZAP); type = atoi(getparm("type")); if (type != 0) { read_submit(); http_quit(); } readmybrd(currentuser.userid); //printf("<style type=text/css>A {color: 000080} </style>\n"); //printf("<body><center>\n"); mode = atoi(getparm("mode")); if (mode == 2) { printf("<body leftmargin=0 topmargin=0>\n"); printf("<table width=100%% border=0 cellpadding=0 cellspacing=0>\n" "<tr><td height=30 colspan=2></td>\n" "</tr><tr><td height=70 colspan=2>\n" "<table width=100%% height=100%% border=0 cellpadding=0 cellspacing=0 class=\"level2\">\n"); printf("<tr>\n<td width=40 rowspan=2> </td>\n"); printf("<td height=35> %s > <span id=\"topmenu_b\">个人RSS订阅管理</span></td>\n", MY_BBS_NAME); printf("<tr>\n<td width=40 class=\"level1\"> </td>\n" "<td class=\"level1\"><br>\n"); showlist_grouped(1); printf("</td></tr></table></td></tr></table></body>\n"); http_quit(); return 0; } printf("<body leftmargin=0 topmargin=0>\n"); printf("<table width=100%% border=0 cellpadding=0 cellspacing=0>\n" "<tr><td height=30 colspan=2></td>\n" "</tr><tr><td height=70 colspan=2>\n" "<table width=100%% height=100%% border=0 cellpadding=0 cellspacing=0 class=\"level2\">\n"); printf("<tr>\n<td width=40 rowspan=2> </td>\n"); //printf("<div class=rhead>个人预定讨论区管理(您目前预定了<span class=h11>%d</span>个讨论区,最多可预定<span class=h11>%d</span>个)</div><br>\n", mybrdnum, GOOD_BRC_NUM); printf("<td height=35> %s > <span id=\"topmenu_b\">个人预定讨论区管理</span>\n", MY_BBS_NAME); printf("[ 目前预定: <span class=\"smalltext\">%d</span>个 | 最多预定:</b> <span class=\"smalltext\">%d</span>个 ]</td>\n" , mybrdnum, GOOD_BRC_NUM); printf("</tr>\n <td height=35 valign=top><a href=\"bbsmybrd?mode=0\" class=\"btnsubmittheme\">按字母顺序排列</a>\n" "<a href=\"bbsmybrd?mode=1\" class=\"btnsubmittheme\">按分类排列</a></td></tr>\n"); #if 0 printf("<a href=bbsmybrd?mode=0>按字母顺序排列</a> " "<a href=bbsmybrd?mode=1>按分类排列</a><hr>"); #endif printf("<tr>\n<td width=40 class=\"level1\"> </td>\n" "<td class=\"level1\"><br>\n" "<form action=bbsmybrd?type=1&confirm1=1 method=post>\n"); printf("<input type=hidden name=confirm1 value=1>\n"); if (mode == 0) showlist_alphabetical(NULL, 0); else showlist_grouped(0); readuservalue(currentuser.userid, "mybrdmode", buf, sizeof (buf)); mybrdmode = atoi(buf); printf ("<br>\n<input type=radio name=mybrdmode value='0' %s>预定讨论区显示中文描述 " "<input type=radio name=mybrdmode value='1' %s>预定讨论区显示英文名称<br>", mybrdmode ? "" : "checked", mybrdmode ? "checked" : ""); printf ("<input type=submit class=resetlong value=确认预定> <input type=reset class=sumbitlong value=复原>\n"); printf("</form></td></tr></table></td></tr></table></body>\n"); http_quit(); return 0; }
int bbslogin_main() { int n, t, infochanged = 0; time_t dtime; char filename[128], buf[256], id[20], pw[PASSLEN], url[10], *ub = FIRST_PAGE; char *ptr; char md5pass[MD5LEN]; struct userec *x, tmpu; int ipmask; int uid; html_header(3); if (loginok && !isguest) { sprintf(buf, "/" SMAGIC "/?t=%d", (int) now_t); redirect(buf); } strsncpy(id, strtrim(getparm("id")), 13); strsncpy(pw, getparm("pw"), PASSLEN); strsncpy(url, getparm("url"), 3); ipmask = atoi(getparm("ipmask")); if (!id[0]) { strcpy(id, "guest"); ipmask = 8; } if (!strcmp(MY_BBS_ID, "YTHT") && !strcmp(id, "guest")) { http_fatal("请输入用户名和密码以登录。"); } if (strcmp(id, "guest")) { ipmask = extandipmask(ipmask, getparm("lastip1"), realfromhost); ipmask = extandipmask(ipmask, getparm("lastip2"), realfromhost); } if ((uid = getuser(id, &x)) <= 0) { printf("%s<br>", id); http_fatal("错误的使用者帐号"); } strcpy(id, x->userid); if (strcasecmp(id, "guest")) { if (checkbansite(realfromhost)) { http_fatal ("对不起, 本站不欢迎来自 [%s] 的登录. <br>若有疑问, 请与SYSOP联系.", realfromhost); } if (userbansite(x->userid, realfromhost)) http_fatal("本ID已设置禁止从%s登录", realfromhost); if (!checkpasswd(x->passwd, x->salt, pw)) { logattempt(x->userid, realfromhost, "WWW", now_t); http_fatal ("密码错误,如有疑问请联系站务组,提供注册资料找回密码"); } if (!user_perm(x, PERM_BASIC)) http_fatal ("由于本帐号名称不符合帐号管理办法,已经被管理员禁止继续上站。<br>请用其他帐号登录在 <font color=red>" DEFAULTBOARD "</font> 版询问."); if (file_has_word(MY_BBS_HOME "/etc/prisonor", x->userid)) { if (x->inprison == 0) { memcpy(&tmpu, x, sizeof (tmpu)); tmpu.inprison = 1; tmpu.dieday = 2; updateuserec(&tmpu, 0); } http_fatal("安心改造,不要胡闹"); } if (x->dieday) http_fatal("死了?还要做什么? :)"); t = x->lastlogin; memcpy(&tmpu, x, sizeof (tmpu)); if (tmpu.salt == 0) { tmpu.salt = getsalt_md5(); genpasswd(md5pass, tmpu.salt, pw); memcpy(tmpu.passwd, md5pass, MD5LEN); infochanged = 1; } if (count_uindex(uid) == 0) { if (now_t - t > 1800) tmpu.numlogins++; infochanged = 1; tmpu.lastlogin = now_t; dtime = t - 4 * 3600; t = localtime(&dtime)->tm_mday; dtime = now_t - 4 * 3600; if (t < localtime(&dtime)->tm_mday && x->numdays < 60000) { tmpu.numdays++; } } if (abs(t - now_t) < 5) { http_fatal("两次登录间隔过密!"); } if (x->lasthost != from_addr.s_addr) { tmpu.lasthost = from_addr.s_addr; infochanged = 1; } if (infochanged) updateuserec(&tmpu, 0); currentuser = x; } ptr = getsenv("HTTP_X_FORWARDED_FOR"); tracelog("%s enter %s www %d %s", x->userid, realfromhost, infochanged, ptr); n = 0; if (loginok && isguest) { u_info->wwwinfo.iskicked = 1; } if (strcasecmp(id, "guest")) { sethomepath(filename, x->userid); mkdir(filename, 0755); strsncpy(buf, getparm("style"), 3); wwwstylenum = -1; if (isdigit(buf[0])) wwwstylenum = atoi(buf); if ((wwwstylenum > NWWWSTYLE || wwwstylenum < 0)) if (!readuservalue (x->userid, "wwwstyle", buf, sizeof (buf))) wwwstylenum = atoi(buf); if (wwwstylenum < 0 || wwwstylenum >= NWWWSTYLE) wwwstylenum = 1; currstyle = &wwwstyle[wwwstylenum]; } else { wwwstylenum = 1; currstyle = &wwwstyle[wwwstylenum]; } ub = wwwlogin(x, ipmask); #ifdef USESESSIONCOOKIE { extern char sessionCookie[]; printf ("<script>document.cookie='SESSION=%s; path=/';</script>", urlencode(sessionCookie)); } #endif if (!strcmp(url, "1")) { #if 1 printf ("<script>\n" "function URLencode(sStr) {\n" "return escape(sStr).replace(/\\+/g, '%%2C').replace(/\\\"/g,'%%22').replace(/\\'/g, '%%27');\n" "}\n" "a=window.opener.location.href;\n" "l=a.length;\n" "t=a.indexOf('/" SMAGIC "',1);\n" "t=a.indexOf('/',t+1);\n" //"nu=\"%s\"+\"?t=%ld&b=\"+URLencode(a.substring(t+1,l));\n" "nu=\"%s\"+\"?t=%ld&b=\"+a.substring(t+1,l);\n" "opener.top.location.href=nu;window.close();</script>", ub, now_t); #else printf ("<script>opener.top.location.href='%s?t=%d';window.close();</script>", ub, now_t); #endif } else { char buf[256]; if (strcmp(x->userid, "guest") && shouldbroadcast(uid)) sprintf(buf, "%s?t=%d&b=ooo", ub, (int) now_t); else sprintf(buf, "%s?t=%d", ub, (int) now_t); redirect(buf); } http_quit(); return 0; }
char * wwwlogin(struct userec *user, int ipmask) { FILE *fp1; int fd; int n, uid; struct user_info u; char *urlbase, fname[80]; char buf[20]; uid = getuser(user->userid, NULL); fd = open(MY_BBS_HOME "/" ULIST_BASE "." MY_BBS_DOMAIN, O_WRONLY); flock(fd, LOCK_EX); if ((urlbase = check_multi(user->userid, uid))) { flock(fd, LOCK_UN); close(fd); return urlbase; } if (strcasecmp(user->userid, "guest") && count_uindex(uid) >= 3) { flock(fd, LOCK_UN); close(fd); http_fatal("您已经登录了三个帐号,不能再登录了"); } bzero(&u, sizeof (struct user_info)); u.active = 1; u.uid = uid; u.pid = 1; u.mode = LOGIN; u.userlevel = user->userlevel; u.lasttime = now_t; u.curboard = 0; if (user_perm(user, PERM_LOGINCLOAK) && (user->flags[0] & CLOAK_FLAG)) u.invisible = YEA; u.pager = 0; if (user->userdefine & DEF_FRIENDCALL) u.pager |= FRIEND_PAGER; if (user->flags[0] & PAGER_FLAG) { u.pager |= ALL_PAGER; u.pager |= FRIEND_PAGER; } if (user->userdefine & DEF_FRIENDMSG) u.pager |= FRIENDMSG_PAGER; if (user->userdefine & DEF_ALLMSG) { u.pager |= ALLMSG_PAGER; u.pager |= FRIENDMSG_PAGER; } strsncpy(u.from, fromhost, sizeof (u.from)); u.fromIP = from_addr.s_addr; strsncpy(u.username, user->username, NAMELEN); strsncpy(u.userid, user->userid, IDLEN + 1); getrandomstr(u.sessionid); n = utmp_login(&u); if (n > MAXACTIVERUN || n <= 0) { flock(fd, LOCK_UN); close(fd); http_fatal ("抱歉,目前在线用户数已达上限%d,无法登录。请稍后再来。", MAXACTIVERUN); } flock(fd, LOCK_UN); close(fd); n--; urlbase = makeurlbase(n, uid); u_info = &(shm_utmp->uinfo[n]); w_info = &(u_info->wwwinfo); w_info->login_start_time = now_t; w_info->ipmask = ipmask; if (strcasecmp(user->userid, "guest")) { u_info->unreadmsg = get_unreadcount(user->userid); initfriends(u_info); sethomefile(fname, user->userid, "clubrights"); if ((fp1 = fopen(fname, "r")) == NULL) { memset(u_info->clubrights, 0, CLUB_SIZE * sizeof (int)); } else { fread(&(u_info->clubrights), sizeof (int), CLUB_SIZE, fp1); fclose(fp1); } if (readuservalue(user->userid, "signature", buf, sizeof (buf)) >= 0) u_info->signature = atoi(buf); w_info->edit_mode = 1; set_my_cookie(); } else { u_info->unreadmsg = 0; memset(u_info->friend, 0, sizeof (u.friend)); memset(u_info->clubrights, 0, CLUB_SIZE * sizeof (int)); w_info->t_lines = 20; w_info->att_mode = 0; w_info->doc_mode = 1; } if ((user->userlevel & PERM_BOARDS)) setbmstatus(user, 1); return urlbase; }