diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2010-11-11 00:29:24 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2010-11-11 00:29:24 +0800 |
commit | 5f644f240582c642e2f8ffc92d5c7a0c8c844904 (patch) | |
tree | 66e29fc31802dbf1270287eba272c787d9462ad9 | |
parent | 6471f20d3d79eef87707c148793976c860148bab (diff) | |
download | pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar.gz pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar.bz2 pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar.lz pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar.xz pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.tar.zst pttbbs-5f644f240582c642e2f8ffc92d5c7a0c8c844904.zip |
add home to timecap expire
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5244 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | pttbbs/util/Makefile | 2 | ||||
-rw-r--r-- | pttbbs/util/showuser.c | 24 | ||||
-rwxr-xr-x | pttbbs/util/timecap_expire.sh | 80 |
3 files changed, 82 insertions, 24 deletions
diff --git a/pttbbs/util/Makefile b/pttbbs/util/Makefile index 3d6bb79e..539d5a85 100644 --- a/pttbbs/util/Makefile +++ b/pttbbs/util/Makefile @@ -22,7 +22,7 @@ CPROG_WITH_UTIL= \ outmail chkhbf merge_dir \ angel gamblegive \ chesscountry tunepasswd buildir xchatd \ - uhash_loader timecap_buildref + uhash_loader timecap_buildref showuser # 下面是 C++ 的程式 CPP_WITH_UTIL= \ diff --git a/pttbbs/util/showuser.c b/pttbbs/util/showuser.c new file mode 100644 index 00000000..1c159cda --- /dev/null +++ b/pttbbs/util/showuser.c @@ -0,0 +1,24 @@ +/* $Id: reaper.c 4826 2009-09-10 10:05:12Z piaip $ */ +#define _UTIL_C_ +#include "bbs.h" + +int check(void *data, int n, userec_t *u) { + + if (!u->userid[0]) + return 0; + + printf("%-*s\n", IDLEN, u->userid); + return 0; +} + +int main(int argc, char **argv) +{ + chdir(BBSHOME); + attach_SHM(); + + if(passwd_init()) + exit(1); + + passwd_apply(NULL, check); + return 0; +} diff --git a/pttbbs/util/timecap_expire.sh b/pttbbs/util/timecap_expire.sh index b4255046..0eec0f1e 100755 --- a/pttbbs/util/timecap_expire.sh +++ b/pttbbs/util/timecap_expire.sh @@ -3,34 +3,68 @@ # expire rules EXPIRE_MINUTES=+103000 -# extract boards +# configuration BBSHOME=$HOME -BOARDS=$($BBSHOME/bin/showboard $BBSHOME/.BRD | sed 's/^ *[0-9][0-9]* //; s/ .*//') -BOARD_BASE=$BBSHOME/boards +BOARD_BASE="$BBSHOME/boards" +HOME_BASE="$BBSHOME/home" # check TIME_CAPSULE_BASE_FOLDER_NAME in mbbsd/timecap.c TIMECAP_NAME=".timecap" -i=0 -num_boards=$(echo $BOARDS | wc -w) +expire_boards() { + local BOARDS="$($BBSHOME/bin/showboard $BBSHOME/.BRD | + sed 's/^ *[0-9][0-9]* //; s/ .*//')" + local board + local num_boards="$(echo $BOARDS | wc -w)" + local i=0 + local timecap_base + + for board in $BOARDS + do + i=$((i + 1)) + printf '\r%05d / %05d [B] %-12s ...' $i $num_boards "$board" >&2 + timecap_base=$( + printf "%s/%c/%s/%s" "$BOARD_BASE" "$board" "$board" "$TIMECAP_NAME") + if [ ! -d "$timecap_base" ]; then + continue + fi + + # first stage, expire files + find "$timecap_base" -mmin "$EXPIRE_MINUTES" -ls -delete + + # second stage, modify .DIR files + # dir_file="$timecap_base/archive.idx" + $BBSHOME/bin/timecap_buildref "$timecap_base" + done +} + +expire_home() { + local userid + local i=0 + local timecap_base + + $BBSHOME/bin/showuser $BBSHOME/.PASSWD | + while read userid + do + i=$((i + 1)) + printf '\r%07d [U] %-12s ...' $i "$userid" >&2 + timecap_base=$( + printf "%s/%c/%s/%s" "$HOME_BASE" "$userid" "$userid" "$TIMECAP_NAME") + if [ ! -d "$timecap_base" ]; then + continue + fi + + # first stage, expire files + find "$timecap_base" -mmin "$EXPIRE_MINUTES" -ls -delete + + # second stage, modify .DIR files + # dir_file="$timecap_base/archive.idx" + $BBSHOME/bin/timecap_buildref "$timecap_base" + done +} + date # for loggin date >&2 # still for logging - -for board in $BOARDS -do - i=$((i + 1)) - timecap_base=$( - printf "%s/%c/%s/%s" "$BOARD_BASE" "$board" "$board" "$TIMECAP_NAME") - printf '\r%05d / %05d %-12s ...' $i $num_boards "$board" >&2 - if [ ! -d "$timecap_base" ]; then - continue - fi - - # first stage, expire files - find "$timecap_base" -mmin "$EXPIRE_MINUTES" -ls -delete - - # second stage, modify .DIR files - # dir_file="$timecap_base/archive.idx" - $BBSHOME/bin/timecap_buildref "$timecap_base" -done +expire_boards +expire_home echo "" >&2 |