summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-11-11 00:29:24 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-11-11 00:29:24 +0800
commit5f644f240582c642e2f8ffc92d5c7a0c8c844904 (patch)
tree66e29fc31802dbf1270287eba272c787d9462ad9
parent6471f20d3d79eef87707c148793976c860148bab (diff)
downloadpttbbs-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/Makefile2
-rw-r--r--pttbbs/util/showuser.c24
-rwxr-xr-xpttbbs/util/timecap_expire.sh80
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