Exemple #1
0
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;
}
Exemple #2
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 */
}
Exemple #3
0
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);
}