diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-06-30 14:09:06 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2009-06-30 14:09:06 +0800 |
commit | 3a9767c5d41375747393d16612236c2ec6e4740e (patch) | |
tree | 640af20a0f9111ea232f40da20cbca93300f1a62 /mbbsd | |
parent | 06da6c91162ed86a3d086cf4200688a23215f02e (diff) | |
download | pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar.gz pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar.bz2 pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar.lz pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar.xz pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.tar.zst pttbbs-3a9767c5d41375747393d16612236c2ec6e4740e.zip |
* add Security and ALLPOST to system internal readonly boards
* previously, ALLPOST was set to reject del_post by attr BRD_VOTEBOARD; however this is confusing to admins.
* in order to prevent such potential issue, we'd force it to be readonly in source level. (since it has special meaning in the code)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4716 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/board.c | 8 | ||||
-rw-r--r-- | mbbsd/cache.c | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/mbbsd/board.c b/mbbsd/board.c index 17710bf5..10e743a3 100644 --- a/mbbsd/board.c +++ b/mbbsd/board.c @@ -67,6 +67,14 @@ inline boardheader_t *getparent(const boardheader_t *fh) return NULL; } +// 程式中有特別用途所以不得自行 post / 修改的看板 +int +is_readonly_board(const char *bname) +{ + return (strcasecmp(bname, BN_SECURITY) == 0 || + strcasecmp(bname, BN_ALLPOST ) == 0 ); +} + /** * @param[in] boardname board name, case insensitive * @return 0 if success diff --git a/mbbsd/cache.c b/mbbsd/cache.c index 3860dd1f..e56c162a 100644 --- a/mbbsd/cache.c +++ b/mbbsd/cache.c @@ -177,6 +177,10 @@ postperm_msg(const char *bname) if (!(i = getbnum(bname))) return "看板不存在"; + // system internal read only boards (no matter what attribute/flag set) + if (is_readonly_board(bname)) + return "看板唯讀"; + if (HasUserPerm(PERM_SYSOP)) return NULL; |