From f7580a82e730f46435f9ed3b28ad3d64794123a2 Mon Sep 17 00:00:00 2001 From: ptt Date: Tue, 30 Mar 2004 07:27:50 +0000 Subject: passwd update debug git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1636 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- include/proto.h | 1 + mbbsd/passwd.c | 3 ++- mbbsd/register.c | 14 +++----------- mbbsd/user.c | 18 ++++++++++++------ 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/proto.h b/include/proto.h index 25857b96..cd3e791c 100644 --- a/include/proto.h +++ b/include/proto.h @@ -584,6 +584,7 @@ void sortsong(); int topsong(); /* user */ +int kill_user(int num); int u_editcalendar(); void user_display(userec_t *u, int real); void uinfo_query(userec_t *u, int real, int unum); diff --git a/mbbsd/passwd.c b/mbbsd/passwd.c index 5cafc88e..e9c3ccb8 100644 --- a/mbbsd/passwd.c +++ b/mbbsd/passwd.c @@ -97,7 +97,7 @@ passwd_update(int num, userec_t * buf) int pwdfd; char path[256]; - sethomefile(path, getuserid(num), ".passwd"); + sethomefile(path, buf->userid, ".passwd"); buf->money = moneyof(num); if ((pwdfd = open(path, O_WRONLY|O_CREAT, 0600)) < 0) exit(1); @@ -126,6 +126,7 @@ passwd_query(int num, userec_t * buf) int pwdfd; char path[256]; + sethomefile(path, getuserid(num), ".passwd"); if((pwdfd = open(path, O_RDONLY)) < 0) { // copy from index // tempory code, will be removed diff --git a/mbbsd/register.c b/mbbsd/register.c index afbd3ea2..0580e485 100644 --- a/mbbsd/register.c +++ b/mbbsd/register.c @@ -107,7 +107,6 @@ compute_user_value(userec_t * urec, time_t clock) int check_and_expire_account(int uid, userec_t * urec) { - userec_t zerorec; char genbuf[200], genbuf2[200]; int val; if ((val = compute_user_value(urec, now)) < 0) { @@ -115,7 +114,6 @@ check_and_expire_account(int uid, userec_t * urec) uid, urec->userid, ctime(&(urec->lastlogin)) + 4, urec->numlogins, urec->numposts, val); if (val > -1 * 60 * 24 * 365) { - memset(&zerorec, 0, sizeof(zerorec)); log_usies("CLEAN", genbuf); snprintf(genbuf, sizeof(genbuf), "home/%c/%s", urec->userid[0], urec->userid); @@ -126,9 +124,7 @@ check_and_expire_account(int uid, userec_t * urec) urec->userid[0], urec->userid); system(genbuf); } - passwd_index_update(uid, &zerorec); - remove_from_uhash(uid - 1); - add_to_uhash(uid - 1, ""); + kill_user(uid); } else { val = 0; log_usies("DATED", genbuf); @@ -143,12 +139,11 @@ getnewuserid() { char genbuf[50]; char *fn_fresh = ".fresh"; - userec_t utmp, zerorec; + userec_t utmp; time_t clock; struct stat st; int fd, i; - memset(&zerorec, 0, sizeof(zerorec)); clock = now; /* Lazy method : 先找尋已經清除的過期帳號 */ @@ -185,10 +180,7 @@ getnewuserid() snprintf(genbuf, sizeof(genbuf), "uid %d", i); log_usies("APPLY", genbuf); - strlcpy(zerorec.userid, str_new, sizeof(zerorec.userid)); - zerorec.lastlogin = clock; - passwd_index_update(i, &zerorec); - setuserid(i, zerorec.userid); + kill_user(i); passwd_unlock(); return i; } diff --git a/mbbsd/user.c b/mbbsd/user.c index a0be22e3..c5a501eb 100644 --- a/mbbsd/user.c +++ b/mbbsd/user.c @@ -5,7 +5,15 @@ static char *sex[8] = { MSG_BIG_BOY, MSG_BIG_GIRL, MSG_LITTLE_BOY, MSG_LITTLE_GIRL, MSG_MAN, MSG_WOMAN, MSG_PLANT, MSG_MIME }; - +int +kill_user(int num) +{ + userec_t u; + memset(&u, 0, sizeof(u)); + setuserid(num, ""); + passwd_index_update(num, &u); + return 0; +} int u_loginview() { @@ -192,9 +200,8 @@ violate_law(userec_t * u, int unum) Rename(src, dst); log_usies("KILL", u->userid); post_violatelaw(u->userid, cuser.userid, reason, "砍除 ID"); - u->userid[0] = '\0'; - setuserid(unum, u->userid); - passwd_index_update(unum, u); + kill_user(unum); + } else { u->userlevel |= PERM_VIOLATELAW; u->vl_count++; @@ -604,8 +611,7 @@ uinfo_query(userec_t * u, int real, int unum) snprintf(dst, sizeof(dst), "tmp/%s", x.userid); Rename(src, dst); /* do not remove user home */ log_usies("KILL", x.userid); - x.userid[0] = '\0'; - setuserid(unum, x.userid); + kill_user(unum); } else log_usies("SetUser", x.userid); if (money_change) -- cgit v1.2.3