diff options
author | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-10-30 11:08:26 +0800 |
---|---|---|
committer | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-10-30 11:08:26 +0800 |
commit | 93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e (patch) | |
tree | d640d3909573dd2d753b197c43c281f6fa6f8799 | |
parent | 35a342e7bb718eebeed70e13b3fafba0e69e0384 (diff) | |
download | pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar.gz pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar.bz2 pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar.lz pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar.xz pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.tar.zst pttbbs-93e84c9d6c3c5d95e21d0a30bd32e8c58f66e40e.zip |
feature for SOB users to import account
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2285 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | include/fpg.h | 179 | ||||
-rw-r--r-- | include/proto.h | 2 | ||||
-rw-r--r-- | mbbsd/menu.c | 2 | ||||
-rw-r--r-- | mbbsd/merge.c | 72 |
4 files changed, 86 insertions, 169 deletions
diff --git a/include/fpg.h b/include/fpg.h index 57ae46c3..0ceabd73 100644 --- a/include/fpg.h +++ b/include/fpg.h @@ -1,137 +1,72 @@ - - #define STRLEN 80 /* Length of most string data */ +#define BRC_STRLEN 15 /* Length of boardname */ #define BTLEN 48 /* Length of board title */ -#define FTTLEN 72 /* Length of title */ #define NAMELEN 40 /* Length of username/realname */ #define FNLEN 33 /* Length of filename */ + /* Ptt ���o�̦�bug*/ #define IDLEN 12 /* Length of bid/uid */ #define PASSLEN 14 /* Length of encrypted passwd field */ #define REGLEN 38 /* Length of registration data */ -typedef unsigned char uschar; /* length = 1 */ -typedef unsigned int usint; /* length = 4 */ - -typedef struct -{ - uschar id; - char broken; -} WEAPONARMOR; -typedef struct -{ - char id; - char name[IDLEN + 1]; - char lv; - short lp; - ushort mlp; - short hp; - ushort mhp; - uschar po; - uschar st; - uschar ag; - uschar lu; - int ex; - char emotion; - char moral; - char wisdom; - char will; - char charm; - WEAPONARMOR weapon; - WEAPONARMOR armor[4]; - uschar flag; - char hungry; - char sick; - char angry; -} PET; - -typedef struct -{ - char userid[IDLEN + 1]; - char realname[20]; - char username[24]; - char passwd[PASSLEN]; - ushort uflag; - usint userlevel; - ushort numlogins; - ushort numposts; - time_t firstlogin; - time_t lastlogin; - char lasthost[16]; - char email[50]; - char address[50]; - char justify[REGLEN + 1]; - uschar month; - uschar day; - uschar year; - uschar sex; - uschar state; - ushort mailk; - ushort keepmail; - int money; - ushort totalday; - uschar totalhour; - uschar totalmin; - int market[10]; - short locate; - char action; - char direct; - char speed; - char count; - uschar landnum; - uschar tool[10]; - char NAME[IDLEN + 1]; - char LV; - short HP; - short MHP; - short MP; - short MMP; - short WC; - short AC; - short PO; - short ST; - short AG; - short LU; - int EX; - char EVENT; - uschar WA[6]; - uschar USE[10]; - uschar MAGIC[5]; - uschar NOWOCCUPATION; - short OCCUPATION[4]; - uschar cardfightnum; - uschar cardfight[20]; - uschar dragon[5]; - PET pet; - usint bank; - char left[36]; -} ACCT; +typedef unsigned char uschar; /* length = 1 */ +typedef unsigned int usint; /* length = 4 */ +typedef unsigned short int ushort; /* length = 4 */ -struct fileheader +/* ----------------------------------------------------- */ +/* .PASSWDS struct : 512 bytes */ +/* ----------------------------------------------------- */ +struct sobuserec { - char filename[FNLEN]; /* M.9876543210.A */ - char savemode; /* file save mode */ - char owner[IDLEN + 2]; /* uid[.] */ - char date[6]; /* [02/02] or space(5) */ - char title[FTTLEN + 1]; - uschar filemode; /* must be last field @ boards.c */ + char userid[IDLEN + 1]; /* �ϥΪ̦W�� 13 bytes */ + char realname[20]; /* �u��m�W 20 bytes */ + char username[24]; /* �ʺ� 24 bytes */ + char passwd[PASSLEN]; /* �K�X 14 bytes */ + uschar uflag; /* �ϥΪ̿ﶵ 1 byte */ + usint userlevel; /* �ϥΪ��v�� 4 bytes */ + ushort numlogins; /* �W������ 2 bytes */ + ushort numposts; /* POST���� 2 bytes */ + time_t firstlogin; /* ���U�ɶ� 4 bytes */ + time_t lastlogin; /* �e���W�� 4 bytes */ + char lasthost[24]; /* �W���a�I 24 bytes */ + char vhost[24]; /* �������} 24 bytes */ + char email[50]; /* E-MAIL 50 bytes */ + char address[50]; /* �a�} 50 bytes */ + char justify[REGLEN + 1]; /* ���U��� 39 bytes */ + uschar month; /* �X�ͤ�� 1 byte */ + uschar day; /* �X�ͤ�� 1 byte */ + uschar year; /* �X�ͦ~�� 1 byte */ + uschar sex; /* �ʧO 1 byte */ + uschar state; /* ���A?? 1 byte */ + usint habit; /* �ߦn�]�w 4 bytes */ + uschar pager; /* �߱��C�� 1 bytes */ + uschar invisible; /* �����Ҧ� 1 bytes */ + usint exmailbox; /* �H�c�ʼ� 4 bytes */ + usint exmailboxk; /* �H�cK�� 4 bytes */ + usint toquery; /* �n�_�� 4 bytes */ + usint bequery; /* �H��� 4 bytes */ + char toqid[IDLEN + 1]; /* �e���d�� 13 bytes */ + char beqid[IDLEN + 1]; /* �e���Q�֬d 13 bytes */ + unsigned long int totaltime; /* �W�u�`�ɼ� 8 bytes */ + usint sendmsg; /* �o�T������ 4 bytes */ + usint receivemsg; /* ���T������ 4 bytes */ + unsigned long int goldmoney; /* ���Ъ��� 8 bytes */ + unsigned long int silvermoney; /* �ȹ� 8 bytes */ + unsigned long int exp; /* �g��� 8 bytes */ + time_t dtime; /* �s�ڮɶ� 4 bytes */ + int scoretimes; /* �������� 4 bytes */ + uschar rtimes; /* ����U�榸�� 1 bytes */ + int award; /* ���g�P�_ 4 bytes */ + int pagermode; /* �I�s������ 4 bytes */ + char pagernum[7]; /* �I�s�����X 7 bytes */ + char feeling[5]; /* �߱����� 5 bytes */ + char title[20]; /* �ٿ�(�ʸ�) 20 bytes */ + usint five_win; + usint five_lost; + usint five_draw; + char pad[91]; /* �ŵ۶�512�� */ }; -typedef struct fileheader fileheader; -struct boardheader -{ - char brdname[IDLEN + 1]; /* bid */ - char title[BTLEN + 1]; - char BM[IDLEN * 3 + 3]; /* BMs' uid, token '/' */ - char group[9]; /* �ݪO���� */ - char type; /* �ݪO�ʽ�: ��H�H�ؿ��H */ - char pad[1]; - time_t bupdate; /* note update time */ - char pad2[3]; - uschar bvote; /* Vote flags */ - time_t vtime; /* Vote close time */ - usint level; -}; -typedef struct boardheader boardheader; +typedef struct sobuserec sobuserec; diff --git a/include/proto.h b/include/proto.h index edfad702..ee39868e 100644 --- a/include/proto.h +++ b/include/proto.h @@ -358,7 +358,7 @@ int Name_Menu(void); #ifdef MERGEBBS /* merge */ -int m_fpg(void); +int m_sob(void); void m_sob_brd(char *bname,char *fromdir); #endif diff --git a/mbbsd/menu.c b/mbbsd/menu.c index 2dd14d4e..31589eff 100644 --- a/mbbsd/menu.c +++ b/mbbsd/menu.c @@ -395,7 +395,7 @@ const static commands_t userlist[] = { {u_register, PERM_BASIC, "RRegister ��g�m���U�ӽг�n"}, {u_list, PERM_SYSOP, "UUsers �C�X���U�W��"}, #ifdef MERGEBBS - {m_fpg, PERM_SYSOP, "FFPG Import ����ܨ��N"}, + {m_sob, PERM_LOGINOK, "SSOB Import �F�y�ܨ��N"}, #endif {NULL, 0, NULL} }; diff --git a/mbbsd/merge.c b/mbbsd/merge.c index 3423e91e..5958e268 100644 --- a/mbbsd/merge.c +++ b/mbbsd/merge.c @@ -6,21 +6,21 @@ #include "fpg.h" int -m_fpg() +m_sob() { char genbuf[256], buf[256], userid[25], passbuf[24], msg[2048]=""; int count=0, i, isimported=0; FILE *fp; - ACCT man; + sobuserec man; time_t d; clear(); move(1,0); outs( - " �p����������,\n" - " ����骺�ϥΪ��ಾ�ӤH�겣�H�έ��n�H�θ��, �ɦ������w��������.\n" - " �p�G�z���ݭn, �Ъ�����[Enter]���}.\n" + " �Ъ`�N �o�O�u�������F�y�ϥΪ�!\n" + " ���F�y���ϥΪ��ಾ�ӤH�겣�H�έ��n�H�θ��, �ɦ������w��������.\n" + " �p�G�z���ݭn, �Ъ����}.\n" " -----------------------------------------------------------------\n" " �S�O�m�{:\n" " ���F�b���w��,�z�u���s��T���K�X���~�����|,�Фp�߿�J.\n" @@ -28,12 +28,12 @@ m_fpg() " �Ф��n�b�ܨ��L�{�������`�_�u, ��N�_�u�ܥb�~�H�������ϭ�.\n" ); - + if(getkey("�O�_�n�~��?(y/N)")!='y') return 0; if(search_ulistn(usernum,2)) {vmsg("�еn�X��L����, �H�K�ܨ�����"); return 0;} do { - if(!getdata(10,0, " �p����ID [�^��j�p�g�n�������T]:", userid, 20, + if(!getdata(10,0, " �F�y��ID [�j�p�g�n�������T]:", userid, 20, DOECHO)) return 0; if(bad_user_id(userid)) continue; sprintf(genbuf, "/home/bbs/fpg/home/%c/%s.ACT",userid[0], userid); @@ -53,16 +53,16 @@ m_fpg() }while(!count); count = 0; do{ - getdata(11,0, " �p�����K�X:", passbuf, sizeof(passbuf), + getdata(11,0, " �F�y���K�X:", passbuf, sizeof(passbuf), NOECHO); if(++count>=3) { cuser.userlevel |= PERM_VIOLATELAW; cuser.vl_count++; passwd_update(usernum, &cuser); - post_violatelaw(cuser.userid, "[PTTĵ��]", "���դp���b�����~�T��", + post_violatelaw(cuser.userid, "[PTTĵ��]", "���ձb�����~�T��", "�H�k�[��"); - mail_violatelaw(cuser.userid, "[PTTĵ��]", "���դp���b�����~�T��", + mail_violatelaw(cuser.userid, "[PTTĵ��]", "���ձb�����~�T��", "�H�k�[��"); return 0; @@ -81,30 +81,25 @@ m_fpg() sprintf(buf,"%s.done",genbuf); rename(genbuf,buf); #ifdef MERGEMONEY - int price[10] = {74, 21, 29, 48, 67, 11, 9, 43, 57, 72}; - unsigned lmarket=0; reload_money(); - for(i=0; i<10; i++) - lmarket += man.market[i]/(674 / price[i]); sprintf(buf, - "�z�������� %10d ���⦨ Ptt ���� %9d (�u�f�ײv 155:1), \n" - " �Ȧ榳 %10d ���⬰ Ptt ���� %9d (�ײv�� 674:1), \n" - " �ᥫ���� %10d ���⬰ Ptt ���� %9d (�ײv�� 674:1), \n" + "�z���F�y�ȹ��� %10d ���⦨ Ptt ���� %9d (�ײv 22:1), \n" + " �F�y������ %10d ���⬰ Ptt ���� %9d (�ײv 222105:1), \n" " �즳P�� %10d �פJ��@�� %d\n", - man.money, man.money/155, - man.bank, man.bank/674, - lmarket*674, lmarket, - cuser.money, cuser.money + man.money/155 + man.bank/674 + lmarket); - demoney(man.money/155 + man.bank/674 + lmarket); + man.goldmoney, man.goldmoney/22, + man.silvermoney, man.silvermoney/222105, + cuser.money, cuser.money + man.goldmoney/22 + + man.silvermoney/222105); + demoney(man.goldmoney/22 + man.silvermoney/222105 + lmarket); strcat(msg, buf); #endif - i = cuser.exmailbox + man.mailk + man.keepmail; + i = cuser.exmailbox + man.exmailbox + man.exmailboxk/2000; if (i > MAX_EXKEEPMAIL) i = MAX_EXKEEPMAIL; - sprintf(buf, "�z�����H�c�� %d (%dk), �즳 %d �פJ��@�� %d\n", - man.keepmail, man.mailk, cuser.exmailbox, i); + sprintf(buf, "�z���F�y�H�c�� %d (%dk), �즳 %d �פJ��@�� %d\n", + man.exmailbox, man.exmailboxk, cuser.exmailbox, i); strcat(msg, buf); cuser.exmailbox = i; @@ -117,25 +112,19 @@ m_fpg() if(cuser.firstlogin > man.firstlogin) d = man.firstlogin; else d = cuser.firstlogin; - sprintf(buf, "�����U��� %s ", Cdatedate(&(man.firstlogin))); - strcat(msg,buf); - sprintf(buf, "���b�����U��� %s �N�� ",Cdatedate(&(cuser.firstlogin))); - strcat(msg,buf); - sprintf(buf, "�N�� %s\n", Cdatedate(&d) ); - strcat(msg,buf); cuser.firstlogin = d; if(cuser.numlogins < man.numlogins) i = man.numlogins; else i = cuser.numlogins; - sprintf(buf, "���i������ %d ���b�� %d �N�� %d \n", man.numlogins, + sprintf(buf, "�F�y�i������ %d ���b�� %d �N�� %d \n", man.numlogins, cuser.numlogins, i); strcat(msg,buf); cuser.numlogins = i; if(cuser.numposts < man.numposts ) i = man.numposts; else i = cuser.numposts; - sprintf(buf, "���峹���� %d ���b�� %d �N�� %d\n", + sprintf(buf, "�F�y�峹���� %d ���b�� %d �N�� %d\n", man.numposts,cuser.numposts,i); strcat(msg,buf); cuser.numposts = i; @@ -146,16 +135,16 @@ m_fpg() } sethomeman(genbuf, cuser.userid); mkdir(genbuf, 0600); - sprintf(buf, "tar zxvf home/%c/%s.tgz>/dev/null", + sprintf(buf, "tar zxvf %c/%s.tar.gz>/dev/null", userid[0], userid); - chdir("fpg"); + chdir("sob/home"); system(buf); chdir(BBSHOME); if (getans("�O�_�פJ�ӤH�H�c? (Y/n)")!='n') { sethomedir(buf, cuser.userid); - sprintf(genbuf, "fpg/home/bbs/home/%c/%s/.DIR", + sprintf(genbuf, "sob/home/%c/%s/.DIR", userid[0], userid); merge_dir(buf, genbuf, 1); strcat(msg, "�פJ�ӤH�H�c\n"); @@ -163,7 +152,7 @@ m_fpg() if(getans("�O�_�פJ�ӤH�H�c��ذ�? (�|�л\\�{���]�w) (y/N)")=='y') { sprintf(buf, - "rm -rd home/%c/%s/man>/dev/null ; mv fpg/home/bbs/home/%c/%s/man home/%c/%s", + "rm -rd home/%c/%s/man>/dev/null ; mv sob/home/%c/%s/man home/%c/%s", cuser.userid[0], cuser.userid, userid[0], userid, cuser.userid[0], cuser.userid); @@ -173,7 +162,7 @@ m_fpg() if(getans("�O�_�פJ�n�ͦW��? (�|�л\\�{���]�w, ID�i��O���P�H)? (y/N)")=='y') { sethomefile(genbuf, cuser.userid, "overrides"); - sprintf(buf, "fpg/home/bbs/home/%c/%s/overrides",userid[0],userid); + sprintf(buf, "sob/home/%c/%s/overrides",userid[0],userid); Copy(buf, genbuf); strcat(buf, genbuf); friend_load(FRIEND_OVERRIDE); @@ -181,13 +170,6 @@ m_fpg() } sprintf(buf, "�b���פJ���i %s -> %s ", userid, cuser.userid); post_msg("Security", buf, msg, "[�t�Φw����]"); - sprintf(buf, "fpg/home/bbs/home/%c/%s/PttID", userid[0],userid); - if((fp = fopen(buf, "w"))) - { - fprintf(fp, "%s\n", cuser.userid); - fprintf(fp, "%s", msg); - fclose(fp); - } vmsg("���߱z�����b���ܨ�.."); return 0; |