summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-10-27 00:42:14 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-10-27 00:42:14 +0800
commitd839e1ec58637953063cc89b73cc0ceab8b3880d (patch)
tree56591bada4b1139673926699a309f6517fefbeed
parent5417ac4001f50bf42edec20af139537db4e5311a (diff)
downloadpttbbs-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.h49
-rw-r--r--mbbsd/bbs.c10
-rw-r--r--mbbsd/board.c7
-rw-r--r--mbbsd/mbbsd.c7
-rw-r--r--mbbsd/name.c3
-rw-r--r--mbbsd/var.c3
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 */