void print_userstat(struct userec* user) { FILE *fp; struct userec tmp; int logins=0, posts=0, stays=0, lifes=0, total=0, exps=0; clear(); move(1,1); if(!strcasecmp(user->userid, "guest")){ prints("faint! guest ҲҪ��ȫվ������\n"); pressanykey(); return; } fp=fopen(".PASSWDS", "r"); while(1) { if(fread(&tmp, sizeof(tmp), 1, fp) <= 0) break; if(tmp.userid[0] < 'A') continue; if(tmp.userlevel == 0) continue; if(tmp.numposts >= user->numposts) posts ++; if(tmp.numlogins >= user->numlogins) logins ++; if(tmp.stay >= user->stay) stays ++; if(tmp.firstlogin <= user->firstlogin) lifes++; if(countexp(&tmp) >= countexp(user)) exps++; total++; } fclose(fp); prints(" %s -- ��������ͳ�� [ʹ����: %s]\n\n\n",BBSNAME, user->userid); prints(" ��Ŀ ��ֵ ȫվ���� ��Ա���\n"); //prints��֧��%f,���ø��ˣ�ֱ���� prints(" ��վ���� %8d�� %8d TOP %3d.%2d%%\n", (time(0) - user->firstlogin)/86400, lifes, lifes*100/total, (lifes - lifes/total*total)*10000/total %100); prints(" ��վ���� %8d�� %8d TOP %3d.%2d%%\n", user->numlogins, logins, logins*100/total, (logins - logins/total*total)*10000/total %100); prints(" �������� %8d�� %8d TOP %3d.%2d%%\n", user->numposts, posts, posts*100/total, (posts - posts/total*total)*10000/total %100); prints(" ����ʱ�� %8d�� %8d TOP %3d.%2d%%\n", user->stay/60, stays, stays*100/total, (stays - stays/total*total)*10000/total %100); prints(" �ܾ���ֵ %8d�� %8d TOP %3d.%2d%%\n", countexp(user) , exps , exps*100/total, (exps - exps/total*total)*10000/total %100); prints(" ���û��� %8d\n", total); pressanykey(); return; }
static void post_add(FILE *fp, const struct userec *user, fb_time_t now) { fprintf(fp, "\033[1;37m%s \033[m(\033[1;33m%s\033[m) 共上站 " "\033[1;32m%d\033[m 次 [\033[1;3%dm%s\033[m]\n", user->userid, user->username, user->numlogins, (user->gender == 'F') ? 5 : 6, horoscope(user->birthmonth, user->birthday)); fprintf(fp, "上 次 在:[\033[1;32m%s\033[m] 从 [\033[1;32m%s\033[m] " "到本站一游。\n", getdatestring(user->lastlogin, DATE_ZH), (user->lasthost[0] == '\0' ? "(不详)" : user->lasthost)); fprintf(fp, "离站时间:[\033[1;32m%s\033[m] ", getdatestring(user->lastlogout, DATE_ZH)); int exp = countexp(user); int perf = countperf(user); #ifdef SHOW_PERF fprintf(fp, "表现值:%d(\033[1;33m%s\033[m)\n", perf, cperf(perf)); #else fprintf(fp, "表现值:[\033[1;33m%s\033[m]\n", cperf(perf)); #endif #ifdef ALLOWGAME fprintf(fp, "银行存款: [\033[1;32m%d元\033[m] " "目前贷款: [\033[1;32m%d元\033[m](\033[1;33m%s\033[m) " "经验值:[\033[1;32m%d\033[m](\033[1;33m%s\033[m)。\n", user->money, user->bet, cmoney(user->money - user->bet), exp, cexpstr(exp)); fprintf(fp, "文 章 数: [\033[1;32m%d\033[m] " "奖章数: [\033[1;32m%d\033[m](\033[1;33m%s\033[m) 生命力:" "[\033[1;32m%d\033[m] 网龄[\033[1;32m%"PRIdFBT"天\033[m]\n\n", user->numposts, user->nummedals, cnummedals(user->nummedals), compute_user_value(user), (now - user->firstlogin) / 86400); #else fprintf(fp, "文 章 数:[\033[1;32m%d\033[m] 经 验 值:" #ifdef SHOWEXP "%d(\033[1;33m%-10s\033[m)" #else "[\033[1;33m%-10s\033[m]" #endif " 生命力:[\033[1;32m%d\033[m] 网龄[\033[1;32m%d天\033[m]\n\n", user->numposts, #ifdef SHOWEXP exp, #endif cexpstr(exp), compute_user_value(user), (now - user->firstlogin) / 86400); #endif }
int statit(struct userec *user, void *arg) { int i,j,d; if (!strcmp(user->userid,"guest")) return 0; if (user->userid[0]<'A'||user->userid[0]>'z') return 0; switch (flag) { case 0: d = user->numlogins; break; case 1: d = user->numposts; break; case 2: d = user->stay; break; case 3: d = countexp(user); break; case 4: { #ifdef HAVE_BIRTHDAY struct userdata aman; if (read_userdata(user->userid, &aman) == 0) { if (aman.birthmonth == tm_mon && aman.birthday == tm_mday) { if (cur < total) { strcpy(lib[cur].id, user->userid); strcpy(lib[cur].nick, user->username); cur++; } } } #endif return 1; } break; default: return 1; } for (i=0; i<total; i++) if (lib[i].data<d) { for (j=total-1;j>i;j--) memcpy(&lib[j],&lib[j-1],sizeof(struct libstruct)); strcpy(lib[i].id, user->userid); strcpy(lib[i].nick, user->username); lib[i].data = d; break; } return 1; }
int bbsqry_main() { FILE *fp; char userid[14], filename[80], buf[512]; struct userec *x; int tmp2; struct in_addr in; html_header(1); check_msg(); changemode(QUERY); strsncpy(userid, getparm("U"), 13); if (!userid[0]) strsncpy(userid, getparm("userid"), 13); printf("<body><center>"); printf("%s -- 查询网友<hr>\n", BBSNAME); if (userid[0] == 0) { printf("<form name=qry action=bbsqry>\n"); printf ("请输入用户名: <input name=userid maxlength=12 size=12>\n"); printf("<input type=submit value=查询用户>\n"); printf("</form><hr>\n"); printf("<script>document.qry.userid.focus();</script>"); http_quit(); } if (getuser(userid, &x) <= 0) { printf("不可能,肯定是你敲错了,根本没这人啊"); printf("<p><a href=javascript:history.go(-1)>快速返回</a>"); http_quit(); } printf("</center><pre>\n"); if (x->mypic) { printf("<table align=left><tr><td><center>"); printmypic(x->userid); printf("</center></td></tr></table>"); } printf("<b><font size=+1>%s</font></b> (<font class=gre>%s</font>) " "共上站 <font class=gre>%d</font> 次," "发表文章 <font class=gre>%d</font> 篇\n", x->userid, x->username, x->numlogins, x->numposts); // show_special(x->userid); in.s_addr = x->lasthost & 0x0000ffff; printf ("上次在 <font color=green>%s</font> 从 <font color=green>%s</font> 到本站一游。<br>", Ctime(x->lastlogin), inet_ntoa(in)); mails(userid, &tmp2); printf("信箱:[<font color=green>%s</font>],", tmp2 ? "⊙" : " "); if (!strcasecmp(x->userid, currentuser->userid)) { printf ("经验值:[<font color=green>%d</font>](<font color=olive>%s</font>) ", countexp(x), cuserexp(countexp(x))); printf ("表现值:[<font color=green>%d</font>](<font color=olive>%s</font>) ", countperf(x), cperf(countperf(x))); } if (x->dieday) { printf ("<br>已经离开了人世,呜呜...<br>还有 [<b>%d</b>] 天就要转世投胎了<br>", countlife(x)); } else { printf("生命力:[<font color=red>%d</font>]。<br>", countlife(x)); if (x->userlevel & PERM_BOARDS) { int i; printf("担任版务:"); for (i = 0; i < MAXBOARD && i < shm_bcache->number; i++) bm_printboard(&shm_bcache->bcache[i], x->userid); printf("<br>"); } if (!show_onlinestate(userid)) { printf ("目前不在站上, 上次离站时间 [<font color=blue>%s</font>]\n\n", (x->lastlogout >= x->lastlogin) ? Ctime(x-> lastlogout) : "因在线上或不正常断线不详"); } } printf("\n"); printf("</pre><table width=100%%><tr><td>"); sethomefile(filename, x->userid, "plans"); fp = fopen(filename, "r"); sprintf(filename, "00%s-plan", x->userid); fdisplay_attach(NULL, NULL, NULL, NULL); if (fp) { while (1) { if (fgets(buf, 256, fp) == 0) break; if (!strncmp(buf, "begin 644 ", 10)) { errlog("old attach %s", filename); fdisplay_attach(stdout, fp, buf, filename); continue; } fhhprintf(stdout, "%s", buf); } fclose(fp); } else { printf("<font color=teal>没有个人说明档</font><br>"); } printf("</td></tr></table>"); printf ("<br><br><a href=bbspstmail?userid=%s&title=没主题>[书灯絮语]</a> ", x->userid); printf("<a href=bbssendmsg?destid=%s>[发送讯息]</a> ", x->userid); printf("<a href=bbsfadd?userid=%s>[加入好友]</a> ", x->userid); printf("<a href=bbsfdel?userid=%s>[删除好友]</a> ", x->userid); if (x->userlevel & PERM_SPECIAL8) { printf ("<a href=bbs0an?path=/groups/GROUP_0/Personal_Corpus/%c/%s>[个人文集]</a> ", mytoupper(x->userid[0]), x->userid); } sethomefile(filename, x->userid, "B/config"); if (file_isfile(filename)) { printf ("<a href=blog?U=%s>[Blog]</a>", x->userid); } printf("<hr>"); printf("<center><form name=qry action=bbsqry>\n"); printf("请输入用户名: <input name=userid maxlength=12 size=12>\n"); printf("<input type=submit value=查询用户>\n"); printf("</form><hr>\n"); printf("</body>\n"); http_quit(); return 0; }
//Send user's status and check lvl up void Sendstatus(int clientfd, DATA* ch) { unsigned char buffer[1024]; while (ch->exp > countexp(ch->level)) ch->level++; size_t packetsize = pack(buffer, "hslllllll",1,ch->name,ch->exp,ch->level,ch->damage,ch->armor,ch->hp,ch->win,ch->lose); sendall(clientfd,buffer,&packetsize); }
int countexp(int lvl) { if (lvl == 1) return 0; else return (countexp(lvl-1) + lvl*20); }
int apiqry_main() { FILE *fp; char userid[14], filename[80], buf[512], output[4096],output_utf8[4096]; struct userec *x; struct user_info *u; int i, tmp2, num; json_header(); // changemode(QUERY); strsncpy(userid, getparm("U"), 13); if (!userid[0]) strsncpy(userid,getparm("userid"), 13); if (userid[0] == '\0') { printf("{\"User\":null}"); return 0; } x = getuser(userid); if (x == 0) { printf("{\"User\":null}"); return 0; } // ��ʼ����û����� sstrcat(output, "{\"User\":{"); // ��ʾ�������� sstrcat(output, "\"UserID\":\"%s\",\"UserNickName\":\"%s\",\"LoginCounts\":%d,\"PostCounts\":%d,\"LastLogin\":\"%s\",\"LastHost\":\"%s\",", x->userid, x->username, x->numlogins, x->numposts,Ctime(x->lastlogin), x->lasthost); // ��ʾ�������� if(!strcasecmp(x->userid, currentuser.userid)){ sstrcat(output, "\"Exp\":%d,\"ExpLevel\":\"%s\",\"Perf\":%d,\"PerfLevel\":\"%s\"",countexp(x), cexp(countexp(x)), countperf(x), cperf(countperf(x))); } // ��ʾ����վ�����Ϣ if(x->userlevel & PERM_BOARDS) { sstrcat(output, "\"BOARDBM\":["); sethomefile(filename, x->userid, "mboard"); new_apply_record(filename, sizeof(struct boardmanager), (void *)bm_printboardapi, output); sstrcat(output, "],"); } if((x->userlevel & PERM_SYSOP) && (x->userlevel&PERM_ARBITRATE)) sstrcat(output, "\"Job\":\"��վ������\","); else if(x->userlevel & PERM_SYSOP) sstrcat(output, "\"Job\":\"����վ��\","); else if(x->userlevel & PERM_OBOARDS) sstrcat(output, "\"Job\":\"ʵϰվ��\","); else if(x->userlevel & PERM_ARBITRATE) sstrcat(output, "\"Job\":\"���μ�ί\","); else if(x->userlevel & PERM_SPECIAL4) sstrcat(output, "\"Job\":\"����\","); else if(x->userlevel & PERM_WELCOME) sstrcat(output, "\"Job\":\"ϵͳ����\","); else if(x->userlevel & PERM_SPECIAL7) { if((x->userlevel & PERM_SPECIAL1) && !(x->userlevel & PERM_CLOAK)) sstrcat(output, "\"Job\":\"���γ���Ա\","); else sstrcat(output, "\"Job\":\"�������Ա\","); } else if(x->userlevel & PERM_ACCOUNTS) sstrcat(output, "\"Job\":\"�ʺŹ���Ա\","); // ��ʾ��ǰ״̬��null ���� array num = 0; sstrcat(output, "\"States\":"); for (i=0; i<MAXACTIVE; ++i) { u = &(shm_utmp->uinfo[i]); if(!strcmp(u->userid, x->userid)) { if(u->active == 0 || u->pid ==0 || (u->invisible && !HAS_PERM(PERM_SEECLOAK))) continue; ++num; if(num == 1) sstrcat(output, "["); if(u->mode != USERDF4){ if(u->invisible) sstrcat(output, "\"C%s\"", ModeType(u->mode)); else sstrcat(output, "\"%s\"", ModeType(u->mode)); } else // �Զ���״̬ sstrcat(output, "%s", u->user_state_temp); } if( (num>0) && (i == MAXACTIVE - 1)) sstrcat(output, "],"); } if (num == 0 ) { sstrcat(output, "\"null\","); if( x->lastlogout != NULL ) sstrcat(output, "\"LastLogout\":\"%s\",",Ctime(x->lastlogout)); else sstrcat(output, "\"LastLogout\":null,"); } // ��ʾ˵���� sethomefile(filename,x->userid,"plans"); fp = fopen(filename, "r"); sprintf(filename, "00%s-plan", x->userid); if (fp) { sstrcat(output, "\"PersonalIntro\":\""); // ��ʼ����˵���� while(1){ if(fgets(buf,256,fp) == 0) break; if (buf[strlen(buf) - 1] == '\n'){ int currentlength; currentlength = strlen(buf); buf[currentlength - 1] = '\\'; buf[currentlength] = 'n'; buf[currentlength + 1] = 0; } if(!strncmp(buf,"bigin 644",10)){ // errlog() // fdisplay_attach() } sstrcat(output, "%s", buf); } sstrcat(output, "\","); // ��������˵���� fclose(fp); } else //û�и���˵���� sstrcat(output, "\"PersonalIntro\":null,"); // ��ʾ�����ǩ show_special_api(x->userid, output); // ������� sstrcat(output, "}}"); g2u(output,sizeof(output), output_utf8,sizeof(output_utf8)); printf("%s", output_utf8); //http_quit(); return 0; }
int bbsqry_main() { FILE *fp; char userid[14], filename[80], buf[512]; struct userec *x; struct user_info *u; int i, tmp2, num; html_header(1); check_msg(); changemode(QUERY); strsncpy(userid, getparm("U"), 13); if (!userid[0]) strsncpy(userid, getparm("userid"), 13); printf("<body><center>"); printf("<div class=rhead>%s -- ��ѯ����</div><hr>\n", BBSNAME); if (userid[0] == 0) { printf("<form action=bbsqry>\n"); printf ("�������û���: <input name=userid maxlength=12 size=12>\n"); printf("<input type=submit value=��ѯ�û�>\n"); printf("</form><hr>\n"); http_quit(); } x = getuser(userid); if (x == 0) { int i, j = 0; printf("û������û������ѵ�����Щ:<p>"); printf("<table width=600>"); for (i = 0; i < shm_ucache->number; i++) if (strcasestr(shm_ucache->userid[i], userid) == shm_ucache->userid[i]) { j++; if (j % 6 == 1) printf("<tr>"); printf("<td>"); printf("<a href=bbsqry?userid=%s>%s</a>", shm_ucache->userid[i], shm_ucache->userid[i]); printf("</td>"); sprintf(buf, "bbsqry?userid=%s", shm_ucache->userid[i]); if (j % 6 == 0) printf("</tr>"); if (j >= 12 * 6) break; } printf("</table>"); if (!j) printf("�����ܣ��϶������ô��ˣ�����û���˰�"); if (j == 1) redirect(buf); printf("<p><a href=javascript:history.go(-1)>���ٷ���</a>"); http_quit(); } printf("</center><pre style='font-size:14px'>\n"); sprintf(buf, "%s ([33m%s[37m) ����վ [1;32m%d[m �Σ��������� [1;32m%d[m ƪ", x->userid, x->username, x->numlogins, x->numposts); hprintf("%s", buf); show_special_web(x->userid);//add by wjbta@bmy ����id��ʶ printf("\n"); hprintf("�ϴ��� [[1;32m%s[m] �� [[1;32m%s[m] ����վһ�Ρ�\n", Ctime(x->lastlogin), x->lasthost); mails(userid, &tmp2); hprintf("���䣺[[1;32m%s[m]��", tmp2 ? "��" : " "); if (!strcasecmp(x->userid, currentuser.userid)) { hprintf("����ֵ��[[1;32m%d[m]([33m%s[m) ", countexp(x), cexp(countexp(x))); hprintf("����ֵ��[[1;32m%d[m]([33m%s[m) ", countperf(x), cperf(countperf(x))); } hprintf("��������[[1;32m%d[m]��\n", count_life_value(x)); if (x->userlevel & PERM_BOARDS) { hprintf("���ΰ���"); sethomefile(filename, x->userid, "mboard"); new_apply_record(filename, sizeof (struct boardmanager), (void *) bm_printboard, NULL); if (x->userlevel & !strcmp(x->userid, "SYSOP")) hprintf("[[1;36mϵͳ����Ա[m]"); else if (x->userlevel & !strcmp(x->userid, "lanboy")) hprintf("[[1;36mϵͳ����Ա[m]"); else if ((x->userlevel&PERM_SYSOP) && (x->userlevel&PERM_ARBITRATE) ) hprintf("[[1;36m��վ������[m]"); else if (x->userlevel & PERM_SYSOP) hprintf("[[1;36m����վ��[m]"); else if (x->userlevel & PERM_OBOARDS) hprintf("[[1;36mʵϰվ��[m]"); else if (x->userlevel & PERM_ARBITRATE) hprintf("[[1;36m���μ�ί[m]"); else if (x->userlevel & PERM_SPECIAL4) hprintf("[[1;36m����[m]"); else if (x->userlevel & PERM_WELCOME) hprintf("[[1;36mϵͳ����[m]"); else if (x->userlevel & PERM_SPECIAL7) { if ( (x->userlevel & PERM_SPECIAL1) && !(x->userlevel & PERM_CLOAK) ) hprintf("[[1;36m���γ���Ա[m]"); else hprintf("[[1;36m�������Ա[m]"); } else if (x->userlevel & PERM_ACCOUNTS) hprintf ("[[1;36m�ʺŹ���Ա[m]"); hprintf("\n"); } num = 0; for (i = 0; i < MAXACTIVE; i++) { u = &(shm_utmp->uinfo[i]); if (!strcmp(u->userid, x->userid)) { if (u->active == 0 || u->pid == 0 || (u->invisible && !HAS_PERM(PERM_SEECLOAK))) continue; num++; if (num == 1) hprintf("Ŀǰ��վ��, ״̬����:\n"); if (u->invisible) hprintf("[36mC[37m"); if (u->mode != USERDF4) hprintf("\033[%dm%s[m ", u->pid == 1 ? 35 : 32, ModeType(u->mode)); else /* �Զ���״̬ */ hprintf("\033[%dm%s[m ", u->pid == 1 ? 35 : 32, u->user_state_temp); if (num % 5 == 0) printf("\n"); } } if (num == 0) { hprintf("Ŀǰ����վ��, �ϴ���վʱ�� [[1;32m%s[m]\n\n", x->lastlogout ? Ctime(x->lastlogout) : "�������ϻ��������߲���"); } printf("\n"); printf("</pre><table width=100%%><tr><td class=f2>"); sethomefile(filename, x->userid, "plans"); fp = fopen(filename, "r"); sprintf(filename, "00%s-plan", x->userid); fdisplay_attach(NULL, NULL, NULL, NULL); if (fp) { while (1) { if (fgets(buf, 256, fp) == 0) break; if (!strncmp(buf, "begin 644 ", 10)) { errlog("old attach %s", filename); fdisplay_attach(stdout, fp, buf, filename); continue; } fhhprintf(stdout, "%s", buf); } fclose(fp); } else { hprintf("[36mû�и���˵����[37m\n"); } printf("</td></tr></table>"); printf ("<br><br><a href=bbspstmail?userid=%s&title=û����>[�������]</a> ", x->userid); printf("<a href=bbssendmsg?destid=%s>[����ѶϢ]</a> ", x->userid); printf("<a href=bbsfadd?userid=%s>[�������]</a> ", x->userid); printf("<a href=bbsfdel?userid=%s>[ɾ������]</a>", x->userid); printf("<hr>"); printf("<center><form action=bbsqry>\n"); printf("�������û���: <input name=userid maxlength=12 size=12>\n"); printf("<input type=submit value=��ѯ�û�>\n"); printf("</form><hr>\n"); printf("</body>\n"); http_quit(); return 0; }
void disply_userinfo( struct userec *u ) { int num, exp; char buf[80]; //#ifdef REG_EXPIRED time_t now; #ifndef AUTOGETPERM //#endif #endif move(2, 0); clrtobot(); now = time (0); set_safe_record(); // prints("���Ĵ��� : %-14s", u->userid); // prints("���Ĵ��� : \033[%dm%-14s\033[37m%", GetAuthUserDispColor(u->userid),u->userid); prints("���Ĵ��� : "); PrintColorUser(u->userid); prints("\033[37m"); prints(" �dz� : %-20s", u->username); prints(" �Ա� : %s", (u->gender == 'M' ? "��" : "Ů")); prints("\n��ʵ���� : %-40s", u->realname); prints(" �������� : %d/%d/%d", u->birthmonth, u->birthday, u->birthyear + 1900); prints("\n��ססַ : %-38s", u->address); { int tyear,tmonth,tday; tyear = u->birthyear+1900; tmonth = u->birthmonth; tday = u->birthday; countdays(&tyear,&tmonth,&tday,now); prints("�ۼ��������� : %d\n",abs(tyear)); } prints("�����ʼ����� : %s\n", u->email); prints("��ʵ E-mail : %s\n", u->reginfo); if HAS_PERM (PERM_ADMINMENU) prints("Ident ���� : %s\n", u->ident); prints("������ٻ��� : %-22s", u->lasthost); prints("�ն˻���̬ : %s\n", u->termtype); getdatestring(u->firstlogin,NA); prints("�ʺŽ������� : %s[��� %d ��]\n", datestring,(now-(u->firstlogin))/86400); getdatestring(u->lastlogin,NA); prints("����������� : %s[��� %d ��]\n", datestring,(now-(u->lastlogin))/86400); #ifndef AUTOGETPERM /*#ifndef REG_EXPIRED getdatestring(u->lastjustify,NA); prints("���ȷ������ : %s\n",(u->lastjustify==0)? "δ��ע��" :datestring); #else if(u->lastjustify == 0) prints("���ȷ�� : δ��ע��\n"); else { prints("���ȷ�� : ����ɣ���Ч����: "); nextreg = u->lastjustify + REG_EXPIRED * 86400; getdatestring(nextreg,NA); sprintf(genbuf,"%14.14s[%s]������ %d ��\n", datestring ,datestring+23,(nextreg - now) / 86400); prints(genbuf); } #endif*/ #endif #ifdef ALLOWGAME prints("������Ŀ : %-20d ������Ŀ : %d\n",u->numposts,u->nummedals); prints("˽������ : %d ��\n", u->nummails); prints("������д�� : %dԪ ���� : %dԪ (%s)\n", u->money,u->bet,cmoney(u->money-u->bet)); #else prints("������Ŀ : %-20d \n", u->numposts); #ifdef ALLOW_MEDALS int sum = 0; int i; for(i = 1; i <= 7; i++){ sum += (u -> nummedals >> (i << 2)) & 0x0f; } prints ("������Ŀ : %d\n", sum); #endif prints("˽������ : %d �� \n", u->nummails); #endif prints("��վ���� : %d �� ", u->numlogins); prints("��վ��ʱ�� : %d Сʱ %d ����\n",u->stay/3600,(u->stay/60)%60); exp = countexp(u); prints("����ֵ : %d (%s) ", exp, cexp(exp)); exp = countperf(u); prints("����ֵ : %d (%s)\n", exp, cperf(exp)); strcpy(genbuf, "bTCPRD#@XWBA#VS-DOM-F0s2345678"); for (num = 0; num < strlen(genbuf) ; num++) if (!(u->userlevel & (1 << num))) genbuf[num] = '-'; prints("ʹ����Ȩ�� : %s\n", genbuf); prints("\n"); if (u->userlevel & PERM_SYSOP) { prints(" ���DZ�վ��վ��, ��л���������Ͷ�.\n"); } else if (u->userlevel & PERM_BOARDS) { prints(" ���DZ�վ�İ���, ��л���ĸ���.\n"); } else if (u->userlevel & PERM_LOGINOK) { prints(" ����ע������Ѿ����, ��ӭ���뱾վ.\n"); } else if (u->lastlogin - u->firstlogin < 3 * 86400) { prints(" ������·, ���Ķ� BBSHelp ������.\n"); } else { prints(" ע����δ�ɹ�, ��ο���վ��վ����˵��.\n"); } if(HAS_PERM(PERM_LOOKADMIN)) { sprintf(buf, "ADMINQuery '%s'", u->userid); report(buf); } /* added report for all users */ else //if(HAS_PERM(PERM_LOOKADMIN)) { sprintf(buf, "ADMINQuery2 '%s'", u->userid); report(buf); } }
int tui_query_result(const char *userid) { struct userec user; int unum = getuserec(userid, &user); if (!unum) return -1; screen_move(0, 0); screen_clrtobot(); int color = 2; if (HAS_DEFINE(user.userdefine, DEF_COLOREDSEX)) color = (user.gender == 'F') ? 5 : 6; char horo[32] = ""; if (HAS_DEFINE(user.userdefine, DEF_S_HOROSCOPE) && strcasecmp(user.userid, "guest") != 0) { snprintf(horo, sizeof(horo), "[\033[1;3%dm%s\033[m] ", color, horoscope(user.birthmonth, user.birthday)); } //% prints("\033[0;1;37m%s \033[m(\033[1;33m%s\033[m) 共上站 \033[1;32m%d\033[m " prints("\033[0;1;37m%s \033[m(\033[1;33m%s\033[m) \xb9\xb2\xc9\xcf\xd5\xbe \033[1;32m%d\033[m " //% "次 %s\n", user.userid, user.username, user.numlogins, horo); "\xb4\xce %s\n", user.userid, user.username, user.numlogins, horo); bool self = !strcmp(currentuser.userid, user.userid); const char *host; if (user.lasthost[0] == '\0') { //% host = "(不详)"; host = "(\xb2\xbb\xcf\xea)"; } else { if (self || HAS_PERM2(PERM_OCHAT, ¤tuser)) host = user.lasthost; else host = mask_host(user.lasthost); } //% prints("进站 [\033[1;32m%s\033[m] %s[\033[1;32m%s\033[m]\n", prints("\xbd\xf8\xd5\xbe [\033[1;32m%s\033[m] %s[\033[1;32m%s\033[m]\n", format_time(user.lastlogin, TIME_FORMAT_ZH), //% strlen(host) > IPADDR_OMIT_THRES ? "" : "来自 ", host); strlen(host) > IPADDR_OMIT_THRES ? "" : "\xc0\xb4\xd7\xd4 ", host); user_id_t uid = get_user_id(userid); session_basic_info_t *res = get_sessions(uid); bool any_session_visible = false; for (int i = 0; i < (res ? session_basic_info_count(res) : 0); ++i) { if (HAS_PERM(PERM_SEECLOAK) || session_basic_info_visible(res, i)) { any_session_visible = true; break; } } if (any_session_visible) { //% prints("在线 [\033[1;32m讯息器:(\033[36m%s\033[32m)\033[m] ", prints("\xd4\xda\xcf\xdf [\033[1;32m\xd1\xb6\xcf\xa2\xc6\xf7:(\033[36m%s\033[32m)\033[m] ", //% "打开"); "\xb4\xf2\xbf\xaa"); } else { fb_time_t t = user.lastlogout; if (user.lastlogout < user.lastlogin) t = ((fb_time() - user.lastlogin) / 120) % 47 + 1 + user.lastlogin; //% prints("离站 [\033[1;32m%s\033[m] ", format_time(t, TIME_FORMAT_ZH)); prints("\xc0\xeb\xd5\xbe [\033[1;32m%s\033[m] ", format_time(t, TIME_FORMAT_ZH)); } char path[HOMELEN]; snprintf(path, sizeof(path), "mail/%c/%s/%s", toupper(user.userid[0]), user.userid, DOT_DIR); int perf = countperf(&user); //% prints("表现值 " prints("\xb1\xed\xcf\xd6\xd6\xb5 " #ifdef SHOW_PERF "%d(\033[1;33m%s\033[m)" #else "[\033[1;33m%s\033[m]" #endif //% " 信箱 [\033[1;5;32m%2s\033[m]\n" " \xd0\xc5\xcf\xe4 [\033[1;5;32m%2s\033[m]\n" #ifdef SHOW_PERF , perf #endif //% , cperf(perf), (check_query_mail(path) == 1) ? "信" : " "); , cperf(perf), (check_query_mail(path) == 1) ? "\xd0\xc5" : " "); int exp = countexp(&user); uinfo_t u; uinfo_load(user.userid, &u); #ifdef ENABLE_BANK //% prints("贡献 [\033[1;32m%d\033[m", TO_YUAN_INT(u.contrib)); prints("\xb9\xb1\xcf\xd7 [\033[1;32m%d\033[m", TO_YUAN_INT(u.contrib)); if (self || HAS_PERM2(PERM_OCHAT, ¤tuser)) { prints("/\033[1;33m%d\033[m", TO_YUAN_INT(u.money)); } { char rank_buf[8]; snprintf(rank_buf, sizeof(rank_buf), "%.1f%%", PERCENT_RANK(u.rank)); prints("](%s) ", rank_buf); } #endif #ifdef ALLOWGAME //% prints("存贷款 [\033[1;32m%d\033[m/\033[1;32m%d\033[m]" prints("\xb4\xe6\xb4\xfb\xbf\xee [\033[1;32m%d\033[m/\033[1;32m%d\033[m]" //% "(\033[1;33m%s\033[m) 经验值 [\033[1;32m%d\033[m]\n", "(\033[1;33m%s\033[m) \xbe\xad\xd1\xe9\xd6\xb5 [\033[1;32m%d\033[m]\n", user.money, user.bet, cmoney(user.money - user.bet), exp); //% prints("发文 [\033[1;32m%d\033[m] 奖章 [\033[1;32m%d\033[m]" prints("\xb7\xa2\xce\xc4 [\033[1;32m%d\033[m] \xbd\xb1\xd5\xc2 [\033[1;32m%d\033[m]" //% "(\033[1;33m%s\033[m) 生命力 [\033[1;32m%d\033[m]\n", "(\033[1;33m%s\033[m) \xc9\xfa\xc3\xfc\xc1\xa6 [\033[1;32m%d\033[m]\n", user.numposts, user.nummedals, cnummedals(user.nummedals), compute_user_value(&user)); #else //% prints("发文 [\033[1;32m%d\033[m] ", user.numposts); prints("\xb7\xa2\xce\xc4 [\033[1;32m%d\033[m] ", user.numposts); //% prints("经验值 [\033[1;33m%-10s\033[m]", cexpstr(exp)); prints("\xbe\xad\xd1\xe9\xd6\xb5 [\033[1;33m%-10s\033[m]", cexpstr(exp)); #ifdef SHOWEXP prints("(%d)", exp); #endif //% prints(" 生命力 [\033[1;32m%d\033[m]\n", compute_user_value(&user)); prints(" \xc9\xfa\xc3\xfc\xc1\xa6 [\033[1;32m%d\033[m]\n", compute_user_value(&user)); #endif char buf[160]; show_position(&user, buf, sizeof(buf), u.title); //% prints("身份 %s\n", buf); prints("\xc9\xed\xb7\xdd %s\n", buf); uinfo_free(&u); if (any_session_visible) show_statuses(res); session_basic_info_clear(res); show_user_plan(userid); return 0; }
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; }
DOUBLE FunctionHelper::getY(DOUBLE x) { return countexp(this->_rpn, x); }