diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-10-27 00:42:14 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-10-27 00:42:14 +0800 |
commit | d839e1ec58637953063cc89b73cc0ceab8b3880d (patch) | |
tree | 56591bada4b1139673926699a309f6517fefbeed | |
parent | 5417ac4001f50bf42edec20af139537db4e5311a (diff) | |
download | pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar.gz pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar.bz2 pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar.lz pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar.xz pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.tar.zst pttbbs-d839e1ec58637953063cc89b73cc0ceab8b3880d.zip |
BRD_OVER18 patch. see http://www.ticrf.org.tw for details
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3231 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | include/pttstruct.h | 49 | ||||
-rw-r--r-- | mbbsd/bbs.c | 10 | ||||
-rw-r--r-- | mbbsd/board.c | 7 | ||||
-rw-r--r-- | mbbsd/mbbsd.c | 7 | ||||
-rw-r--r-- | mbbsd/name.c | 3 | ||||
-rw-r--r-- | mbbsd/var.c | 3 |
6 files changed, 52 insertions, 27 deletions
diff --git a/include/pttstruct.h b/include/pttstruct.h index a8e9c568..4cd92934 100644 --- a/include/pttstruct.h +++ b/include/pttstruct.h @@ -199,30 +199,31 @@ typedef struct boardheader_t { } boardheader_t; /* �U���O�K�i��� */ -#define BRD_NOZAP 000000001 /* ���izap */ -#define BRD_NOCOUNT 000000002 /* ���C�J�έp */ -#define BRD_NOTRAN 000000004 /* ����H */ -#define BRD_GROUPBOARD 000000010 /* �s�ժO */ -#define BRD_HIDE 000000020 /* ���êO (�ݪO�n�ͤ~�i��) */ -#define BRD_POSTMASK 000000040 /* ����o���ξ\Ū */ -#define BRD_ANONYMOUS 000000100 /* �ΦW�O */ -#define BRD_DEFAULTANONYMOUS 000000200 /* �w�]�ΦW�O */ -#define BRD_BAD 000000400 /* �H�k��i���ݪO */ -#define BRD_VOTEBOARD 000001000 /* �s�p���ݪO */ -#define BRD_WARNEL 000002000 /* �s�p���ݪO */ -#define BRD_TOP 000004000 /* �����ݪO�s�� */ -#define BRD_NORECOMMEND 000010000 /* ���i���� */ -#define BRD_BLOG 000020000 /* BLOG */ -#define BRD_BMCOUNT 000040000 /* �O�D�]�w�C�J�O�� */ -#define BRD_SYMBOLIC 000100000 /* symbolic link to board */ -#define BRD_NOBOO 000200000 /* ���i�N */ -#define BRD_LOCALSAVE 000400000 /* �w�] Local Save */ -#define BRD_RESTRICTEDPOST 001000000 /* �O�ͤ~��o�� */ -#define BRD_GUESTPOST 002000000 /* guest�� post */ -#define BRD_COOLDOWN 004000000 /* �N�R */ -#define BRD_CPLOG 010000000 /* �۰ʯd����O�� */ -#define BRD_NOFASTRECMD 020000000 /* �T��ֳt���� */ -#define BRD_IPLOGRECMD 040000000 /* ����O�� IP */ +#define BRD_NOZAP 0000000001 /* ���izap */ +#define BRD_NOCOUNT 0000000002 /* ���C�J�έp */ +#define BRD_NOTRAN 0000000004 /* ����H */ +#define BRD_GROUPBOARD 0000000010 /* �s�ժO */ +#define BRD_HIDE 0000000020 /* ���êO (�ݪO�n�ͤ~�i��) */ +#define BRD_POSTMASK 0000000040 /* ����o���ξ\Ū */ +#define BRD_ANONYMOUS 0000000100 /* �ΦW�O */ +#define BRD_DEFAULTANONYMOUS 0000000200 /* �w�]�ΦW�O */ +#define BRD_BAD 0000000400 /* �H�k��i���ݪO */ +#define BRD_VOTEBOARD 0000001000 /* �s�p���ݪO */ +#define BRD_WARNEL 0000002000 /* �s�p���ݪO */ +#define BRD_TOP 0000004000 /* �����ݪO�s�� */ +#define BRD_NORECOMMEND 0000010000 /* ���i���� */ +#define BRD_BLOG 0000020000 /* BLOG */ +#define BRD_BMCOUNT 0000040000 /* �O�D�]�w�C�J�O�� */ +#define BRD_SYMBOLIC 0000100000 /* symbolic link to board */ +#define BRD_NOBOO 0000200000 /* ���i�N */ +#define BRD_LOCALSAVE 0000400000 /* �w�] Local Save */ +#define BRD_RESTRICTEDPOST 0001000000 /* �O�ͤ~��o�� */ +#define BRD_GUESTPOST 0002000000 /* guest�� post */ +#define BRD_COOLDOWN 0004000000 /* �N�R */ +#define BRD_CPLOG 0010000000 /* �۰ʯd����O�� */ +#define BRD_NOFASTRECMD 0020000000 /* �T��ֳt���� */ +#define BRD_IPLOGRECMD 0040000000 /* ����O�� IP */ +#define BRD_OVER18 0100000000 /* �Q�K�T */ #define BRD_LINK_TARGET(x) ((x)->postexpire) #define GROUPOP() (currmode & MODE_GROUPOP) diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index 1039e1e4..89fd9684 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -2975,6 +2975,11 @@ b_config(void) (bp->brdattr & BRD_RESTRICTEDPOST) ? ANSI_COLOR(1)"�u���O�ͤ~�i�o��" : "�L�S�O�]�w" ); + prints( " " ANSI_COLOR(1;36) "1" ANSI_RESET + " - �����Q�K�� " ANSI_COLOR(1) "%s" ANSI_RESET + " �i�J", + (bp->brdattr & BRD_OVER18) ? "���i�H" : "�i�H" ); + if (!((currmode & MODE_BOARD) || HasUserPerm(PERM_SYSOP))) { vmsg("�z�惡�O�L�z�v��"); @@ -3072,6 +3077,11 @@ b_config(void) bp->brdattr &= ~BRD_NORECOMMEND; break; #endif + case '1': + bp->brdattr ^= BRD_OVER18; + touched = 1; + break; + default: finished = 1; break; diff --git a/mbbsd/board.c b/mbbsd/board.c index 13cdd930..64c27f65 100644 --- a/mbbsd/board.c +++ b/mbbsd/board.c @@ -103,11 +103,15 @@ HasBoardPerm(boardheader_t *bptr) if (HasUserPerm(PERM_SYSOP)) return 1; + /* �Q�K�T�ݪO */ + if( (brdattr & BRD_OVER18) && !over18 ) + return 0; + + /* �O�D */ if( is_BM_cache(bptr - bcache + 1) ) /* XXXbid */ return 1; /* ���K�ݪO�G�ֹﭺ�u�O�D���n�ͦW�� */ - if (brdattr & BRD_HIDE) { /* ���� */ if (hbflcheck((int)(bptr - bcache) + 1, currutmp->uid)) { if (brdattr & BRD_POSTMASK) @@ -117,6 +121,7 @@ HasBoardPerm(boardheader_t *bptr) } else return 1; } + /* ����\Ū�v�� */ if (level && !(brdattr & BRD_POSTMASK) && !HasUserPerm(level)) return 0; diff --git a/mbbsd/mbbsd.c b/mbbsd/mbbsd.c index 38716ad0..9cd20572 100644 --- a/mbbsd/mbbsd.c +++ b/mbbsd/mbbsd.c @@ -1005,6 +1005,13 @@ user_login(void) /* ��l��: random number �W�[user��ɶ����t�� */ mysrand(); + /* check if over18 */ + if( (ptime.tm_year - cuser.year) >= 18 || + (ptime.tm_year - cuser.year == 17 && + ((ptime.tm_mon+1) > cuser.month || + ((ptime.tm_mon+1) == cuser.month && ptime.tm_mday > cuser.day))) ) + over18 = 1; + /* show welcome_login */ if( (ifbirth = (ptime.tm_mday == cuser.day && ptime.tm_mon + 1 == cuser.month)) ){ diff --git a/mbbsd/name.c b/mbbsd/name.c index 8fd78fb7..aafc4cc6 100644 --- a/mbbsd/name.c +++ b/mbbsd/name.c @@ -762,7 +762,8 @@ completeboard_permission(int where) boardheader_t *bptr = &bcache[SHM->bsorted[0][where]]; return (!(bptr->brdattr & BRD_SYMBOLIC) && (GROUPOP() || HasBoardPerm(bptr)) && - !(bptr->brdattr & BRD_GROUPBOARD)); + !(bptr->brdattr & BRD_GROUPBOARD) && + !(bptr->brdattr & BRD_OVER18 && !over18)); } int diff --git a/mbbsd/var.c b/mbbsd/var.c index 3afa2d6f..e44abd9d 100644 --- a/mbbsd/var.c +++ b/mbbsd/var.c @@ -74,7 +74,7 @@ const char * const str_permboard[] = { #endif "�T��ֳt����", /* BRD_NOFASTRECMD */ "����O�� IP", /* BRD_IPLOGRECMD */ - "�S�Q��", + "�Q�K�T", /* BRD_OVER18 */ "�S�Q��", "�S�Q��", "�S�Q��", @@ -387,6 +387,7 @@ char fromhost[STRLEN] = "\0"; char water_usies = 0; FILE *fp_writelog = NULL; water_t water[6], *swater[6], *water_which = &water[0]; +char over18 = 0; /* chc_play.c */ |