int main(int argc, char *argv[]) { FILE *fp, *fp2; struct userec1 bh; struct userec2 bhnew; int i; if (argc != 3) { printf("usage: convert Old_PASSWDS_FILE New_PASSWDS_FILE\n"); exit(0); } if ((fp = fopen(argv[2], "r")) != NULL) { printf("NEW FILE exist!"); fclose(fp); exit(0); } if ((fp = fopen(argv[1], "r")) == NULL) { printf("open .BOARDS file failed!"); exit(0); } if ((fp2 = fopen(argv[2], "w")) == NULL) { printf("cant create newboards file!"); exit(0); } while (fread(&bh, sizeof(struct userec1), 1, fp)) { memset(&bhnew, 0, sizeof(struct userec2)); memcpy(&bhnew, &bh, sizeof(struct userec1)); #ifdef HAVE_USERMONEY bhnew.money = 1000; bhnew.score = 0; #endif SET_UNDEFINE((&bhnew), DEF_SHOWREALUSERDATA); fwrite(&bhnew, sizeof(struct userec2), 1, fp2); printf("%s\n", bhnew.userid); } fclose(fp2); fclose(fp); return 0; }
void new_register() { struct userec newuser; int allocid, do_try, flag; char buf[STRLEN]; /* temp !!!!!*/ #ifdef SECONDSITE prints("不接受新帐号注册!!!\n"); oflush(); sleep(2); exit(-1); #else /* prints("Sorry, we don't accept newusers due to system problem, we'll fixit ASAP\n"); oflush(); sleep(2); exit(-1); */ memset(&newuser, 0, sizeof(newuser)); getdata(0, 0, "使用GB编码阅读?(\xa8\xcf\xa5\xce BIG5\xbd\x58\xbe\x5c\xc5\xaa\xbd\xd0\xbf\xefN)(Y/N)? [Y]: ", buf, 4, DOECHO, NULL, true); if (*buf == 'n' || *buf == 'N') if (!convcode) switch_code(); ansimore("etc/register", false); do_try = 0; while (1) { if (++do_try >= 10) { prints("\n掰掰,按太多下 <Enter> 了...\n"); refresh(); longjmp(byebye, -1); } getdata(0, 0, "请输入代号: ", newuser.userid, IDLEN + 1, DOECHO, NULL, true); flag = 1; if (id_invalid(newuser.userid) == 1) { prints("帐号必须由英文字母或数字组成,并且第一个字符必须是英文字母!\n"); /* prints("帐号必须由英文字母或数字,而且帐号第一个字是英文字母!\n"); */ flag = 0; } if (flag) { if (strlen(newuser.userid) < 2) { prints("代号至少需有两个英文字母!\n"); } else if ((strcasecmp(newuser.userid, "SYSOP") == 0) && (strcmp(newuser.userid, "SYSOP") != 0) && searchuser("SYSOP") == 0) { prints("抱歉,本站只允许注册*全部*大写的SYSOP用户ID。\n"); } else if (!strcasecmp(newuser.userid, "guest") && strcmp(newuser.userid, "guest") && !searchuser("guest")) { prints("抱歉,本站只允许注册*全部*小写的guest用户ID。\n"); } else if ((*newuser.userid == '\0') || bad_user_id(newuser.userid) || (strcasecmp(newuser.userid, "SYSOPS") == 0) || (strcasecmp(newuser.userid, "BMS") == 0)) { prints("抱歉,本站暂不提供此帐号注册。\n"); } else if (searchuser(newuser.userid) != 0) { /*( dosearchuser( newuser.userid ) ) midified by dong , 1998.12.2, change getuser -> searchuser , 1999.10.26 */ prints("此帐号已经有人使用\n"); } else { /*--- ---*/ struct stat lst; time_t lnow; lnow = time(NULL); sethomepath(genbuf, newuser.userid); if (!stat(genbuf, &lst) && S_ISDIR(lst.st_mode) && (lnow - lst.st_ctime < SEC_DELETED_OLDHOME /* 3600*24*30 */)) { prints("目前无法注册帐号%s,请与系统管理人员联系。\n", newuser.userid); sprintf(genbuf, "IP %s new id %s failed[home changed in past 30 days]", getSession()->fromhost, newuser.userid); bbslog("user","%s",genbuf); } else { /* etnlegend, 2006.10.14, 新用户可能继承原有同名用户信件... */ sethomepath(genbuf,newuser.userid); my_f_rm(genbuf); setmailpath(genbuf,newuser.userid); my_f_rm(genbuf); break; } } } } newuser.firstlogin = newuser.lastlogin = time(NULL) - 13 * 60 * 24; do_try = 0; while (1) { char passbuf[STRLEN], passbuf2[STRLEN]; if (++do_try >= 10) { prints("\n掰掰,按太多下 <Enter> 了...\n"); refresh(); longjmp(byebye, -1); } getdata(0, 0, "请设定您的密码: ", passbuf, 39, NOECHO, NULL, true); if (strlen(passbuf) < 4 || !strcmp(passbuf, newuser.userid)) { prints("密码太短或与使用者代号相同, 请重新输入\n"); continue; } getdata(0, 0, "请再输入一次你的密码: ", passbuf2, 39, NOECHO, NULL, true); if (strcmp(passbuf, passbuf2) != 0) { prints("密码输入错误, 请重新输入密码.\n"); continue; } setpasswd(passbuf, &newuser); #ifdef NEWSMTH strcpy(getSession()->passwd, passbuf); #endif break; } if (searchuser(newuser.userid) != 0) { prints("此帐号已经有人使用\n"); refresh(); longjmp(byebye, -1); } newuser.userlevel = PERM_BASIC; newuser.userdefine[0] = -1; newuser.userdefine[1] = -1; /* newuser.userdefine&=~DEF_MAILMSG; newuser.userdefine&=~DEF_EDITMSG; */ SET_UNDEFINE(&newuser, DEF_NOTMSGFRIEND); if (convcode) SET_UNDEFINE(&newuser, DEF_USEGB); SET_UNDEFINE(&newuser, DEF_SHOWREALUSERDATA); newuser.exittime = time(NULL) - 100; /*newuser.unuse2 = -1;*/ newuser.flags |= PAGER_FLAG; newuser.title = 0; newuser.firstlogin = newuser.lastlogin = time(NULL); allocid = getnewuserid2(newuser.userid); if (allocid > MAXUSERS || allocid <= 0) { prints("抱歉, 由于某些系统原因, 无法注册新的帐号.\n\r"); oflush(); sleep(2); exit(1); } newbbslog(BBSLOG_USIES, "APPLY: %s uid %d from %s", newuser.userid, allocid, getSession()->fromhost); update_user(&newuser, allocid, 1); if (!dosearchuser(newuser.userid)) { /* change by KCN 1999.09.08 fprintf(stderr,"User failed to create\n") ; */ prints("User failed to create %d-%s\n", allocid, newuser.userid); oflush(); exit(1); } bbslog("user","%s","new account"); #endif /* SECONDSITE */ }
main() { FILE *rec; int i = 0; struct userec user; unsigned int perm; rec = fopen(BBSHOME "/.PASSWDS", "rb"); if(NULL==rec) { printf("Can not open .PASSWDS"); return 0; } printf("\033[1;31;5mUserLevel Records Transfering...\n\033[m"); while (1) { if (fread(&user, sizeof(user), 1, rec) <= 0) break; i++; if (user.numlogins <= 0) continue; printf("%d %s\t\n", i, user.userid); perm = user.userlevel; user.userlevel = PERM_BASIC; user.userlevel |= PERM_CHAT; user.userlevel |= PERM_PAGE; user.userlevel |= PERM_POST; user.userlevel |= PERM_LOGINOK; if (perm & PERM_CLOAK) user.userlevel |= PERM_CLOAK; if (perm & PERM_SEECLOAK) user.userlevel |= PERM_SEECLOAK; if (perm & PERM_XEMPT) user.userlevel |= PERM_XEMPT; if (perm & PERM_BOARDS) user.userlevel |= PERM_BOARDS; if (perm & PERM_ACCOUNTS) user.userlevel |= PERM_ACCOUNTS; if (perm & PERM_CHATCLOAK) user.userlevel |= PERM_CHATCLOAK; if (perm & PERM_SYSOP) { user.userlevel |= PERM_SYSOP; user.userlevel |= PERM_ADMIN; } if (perm & PERM_HORNOR) user.userlevel &=~PERM_HORNOR; if (perm & PERM_POSTMASK) user.userlevel |= PERM_POSTMASK; if (perm & PERM_ANNOUNCE) user.userlevel |= PERM_ANNOUNCE; if (perm & PERM_OBOARDS) user.userlevel |= PERM_OBOARDS; if (perm & PERM_ACBOARD) user.userlevel |= PERM_ACBOARD; if (perm & PERM_NOZAP) user.userlevel |= PERM_NOZAP; if (perm & PERM_JURY) user.userlevel &=~PERM_JURY; user.userdefine[0] = -1; user.userdefine[1] = -1; #ifdef HAVE_WFORUM SET_UNDEFINE(&user,DEF_SHOWREALUSERDATA); #endif user.flags = CURSOR_FLAG; user.flags |= PAGER_FLAG; user.title = 0; /* user.userdefine |= DEF_ALLMSG; user.userdefine |= DEF_FRIENDMSG; user.userdefine |= DEF_SOUNDMSG; user.userdefine &= ~DEF_MAILMSG; */ substitute_record(BBSHOME "/.PASSWDS", &user, sizeof(user), i, NULL, NULL); } printf("\n\033[1m%d \033[32mUsers Attribute Tranfered...\033[m\n", i); fclose(rec); }