summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorscw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-16 19:30:16 +0800
committerscw <scw@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-05-16 19:30:16 +0800
commit280c2707ef087a032cd9a846f3fd9549e194fa19 (patch)
treed307be9b02e36ba3c132cdc73c33d04fb8eddf45 /util
parent3d0fa7c79b4d5d08868f32f44052392d03638074 (diff)
downloadpttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar.gz
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar.bz2
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar.lz
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar.xz
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.tar.zst
pttbbs-280c2707ef087a032cd9a846f3fd9549e194fa19.zip
merge from trunk.
git-svn-id: http://opensvn.csie.org/pttbbs/branches/scw.angel@1995 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'util')
-rw-r--r--util/Makefile2
-rw-r--r--util/account.c34
-rw-r--r--util/antispam.c122
-rw-r--r--util/boardlist.c3
-rw-r--r--util/killdeadbbs.c56
-rw-r--r--util/lunar-1,15run.pl11
-rw-r--r--util/testkenben.txt11
7 files changed, 29 insertions, 210 deletions
diff --git a/util/Makefile b/util/Makefile
index 99461ffe..99ff62af 100644
--- a/util/Makefile
+++ b/util/Makefile
@@ -26,7 +26,7 @@ CPROG_WITH_UTIL= \
# ¤U­±³o¨Çµ{¦¡, ·|ª½±µ³Q compile
CPROG_WITHOUT_UTIL= \
- shmsweep uhash_loader showboard antispam \
+ shmsweep uhash_loader showboard \
countalldice webgrep bbsrf initbbs \
userlist tunepasswd buildir merge_passwd \
merge_board xchatd bbsmail
diff --git a/util/account.c b/util/account.c
index bb1b1bc4..6c05b569 100644
--- a/util/account.c
+++ b/util/account.c
@@ -1,6 +1,7 @@
/* $Id$ */
#include "bbs.h"
+//test
#define ACCOUNT_MAX_LINE 16
#define ADJUST_M 6 /* adjust back 5 minutes */
@@ -90,9 +91,10 @@ void gzip(source, target, stamp)
int main(int argc, char **argv)
{
int hour, max, item, total, i, j, mo, da, max_user = 0, max_login = 0,
- max_reg = 0, mahour = 0, k;
+ max_reg = 0, mahour = 0, k, wday;
char *act_file = ".act";
char *log_file = "usies";
+ char *wday_str = "UMTWRFS";
char buf[256], buf1[256], *p;
FILE *fp, *fp1;
int act[27]; /* ¦¸¼Æ/²Ö­p®É¶¡/pointer */
@@ -328,11 +330,29 @@ int main(int argc, char **argv)
if((fp = fopen("etc/feast", "r"))) {
while(fgets(buf1, sizeof(buf1), fp)) {
if(buf[0] != '#' &&
- sscanf(buf1, "%d %d ", &mo, &da) == 2) {
- if(ptime->tm_mday == da && ptime->tm_mon + 1 == mo) {
- i = 1;
- fprintf(fp1, "%-14.14s", &buf1[6]);
- }
+ sscanf(buf1, "%d %c%c", &mo, buf, buf+1) == 3) {
+ if (isdigit(buf[0])) {
+ if (isdigit(buf[1])) {
+ da = 10 * (buf[0] - '0') + (buf[1] - '0');
+ if(ptime->tm_mday == da && ptime->tm_mon + 1 == mo) {
+ i = 1;
+ fprintf(fp1, "%-14.14s", &buf1[6]);
+ }
+ }
+ else {
+ if (buf[0] - '0' <= 4) {
+ wday = 0;
+ buf[1] = toupper(buf[1]);
+ while(wday < 7 && buf[1] != *(wday_str + wday))
+ wday++;
+ if (ptime->tm_mon + 1 == mo && ptime->tm_wday == wday &&
+ (ptime->tm_mday - 1)/7 + 1 == (buf[0] - '0')) {
+ i = 1;
+ fprintf(fp1, "%-14.14s", &buf1[6]);
+ }
+ }
+ }
+ }
}
}
fclose(fp);
@@ -341,7 +361,7 @@ int main(int argc, char **argv)
if(i == 0) {
if((fp = fopen("etc/today_boring", "r"))) {
while(fgets(buf1, sizeof(buf1), fp))
- if(strlen(buf) > 3)
+ if(strlen(buf1) > 3)
fprintf(fp1, "%s", buf1);
fclose(fp);
} else
diff --git a/util/antispam.c b/util/antispam.c
deleted file mode 100644
index e5b2ed59..00000000
--- a/util/antispam.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* $Id$ */
-/* §ì¼s§i«Hªºµ{¦¡ */
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include "config.h"
-
-#define WINDOW 100 /* ¤@¦¸window¦h¤Ö­Óserver */
-#define LEVEL 21 /* ­Y´X¦¸­«´_´Nºâ¼s§i«H */
-
-#define mailog BBSHOME "/etc/mailog"
-#define spamlog BBSHOME "/etc/spam"
-
-typedef struct sendinfo
-{
- char time[18];
- char from[50];
- char userid[20];
- int count;
-}
-sendinfo;
-
-int
-main(int argc, char **argv)
-{
- char buf[200], *from, *userid;
- int num = -1, numb = -1, n, nb;
- FILE *fp = fopen(mailog, "r"), *fo;
- sendinfo data[WINDOW];
- sendinfo bad[WINDOW];
-
- unlink(spamlog);
- fo = fopen(spamlog, "a");
- memset(data, 0, sizeof(data));
- memset(bad, 0, sizeof(bad));
-
- if (!fp || !fo)
- return 0;
-
- while (fgets(buf, 200, fp))
- {
- strtok(buf, "\r\n");
- from = strchr(buf, '>') + 2;
- userid = strstr(buf, " =>");
-
- if (!from || !userid)
- continue;
-
- *userid = 0;
- userid += 4;
-
- if (strstr(from, "MAILER-DAEMON")
- || strstr(from, userid))
- continue; /* °h«H³qª¾¤£ºÞ */
- /* ¬O§_¤w¬Obadhost */
-
- for (nb = 0; nb < WINDOW && bad[nb].from[0]; nb++)
- if (!strcmp(bad[nb].from, from))
- break;
-
- if (nb < WINDOW && bad[nb].from[0])
- {
- bad[nb].count++;
- continue;
- }
-
- /* ²¬d¹L¥h°O¿ý */
-
- for (n = 0; n < WINDOW && data[n].from[0]; n++)
- if (!strcmp(data[n].from, from))
- break;
-
- if (n < WINDOW && data[n].from[0])
- {
- if (!strncmp(data[n].userid, userid, 20))
- continue;
- /* Â൹¦P¤@­Ó¤H´N¤£ºÞ */
- strncpy(data[n].userid, userid, 20);
- if (++data[n].count >= LEVEL)
- {
- /* Åܦ¨bad ²¾data¨ìbad ªÅ¯Ê¥Ñ«á¤@µ§¸ê®Æ¸É¤W */
- if (nb >= WINDOW)
- {
- numb = (numb + 1) % WINDOW;
- nb = numb;
- fprintf(fo, "%s %s ­«ÂбH %d ¦¸\n",
- bad[nb].time, bad[nb].from, bad[nb].count);
-/* printf(" %s send %d times\n",
- bad[nb].from, bad[nb].count); */
- }
- memcpy(&bad[nb], &data[n], sizeof(sendinfo));
- memcpy(&data[n], &data[n + 1], sizeof(sendinfo) * (WINDOW - n - 1));
- if (num > n)
- num--;
- }
- }
- else
- {
- if (n >= WINDOW)
- {
- num = (num + 1) % WINDOW;
- n = num;
- }
-/* printf("[%s] to [%s]\n", from, userid); */
- buf[17] = 0;
- strncpy(data[n].time, buf, 17);
- strncpy(data[n].from, from, 50);
- strncpy(data[n].userid, userid, 20);
- }
- }
-
- for (nb = 0; nb < WINDOW && bad[nb].from[0]; nb++)
- {
- fprintf(fo, "%s %s ­«ÂбH %d ¦¸\n", bad[nb].time,
- bad[nb].from, bad[nb].count);
-/* printf(" %s send %d times\n", bad[nb].from, bad[nb].count); */
- }
- fclose(fp);
- fclose(fo);
- return 0;
-}
diff --git a/util/boardlist.c b/util/boardlist.c
index a37de82f..606a0192 100644
--- a/util/boardlist.c
+++ b/util/boardlist.c
@@ -9,8 +9,7 @@ load_uidofgid(const int gid, const int type)
int n, childcount = 0;
currbptr = &bcache[gid - 1];
for (n = 0; n < numboards; ++n) {
- bptr = SHM->bsorted[type][n];
- if (bptr->brdname[0] == '\0')
+ if( !(bptr = SHM->bsorted[type][n]) || bptr->brdname[0] == '\0' )
continue;
if (bptr->gid == gid) {
if (currbptr == &bcache[gid - 1])
diff --git a/util/killdeadbbs.c b/util/killdeadbbs.c
deleted file mode 100644
index 0c83fe29..00000000
--- a/util/killdeadbbs.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef FreeBSD
-int main(int argc, char **argv)
-{
- puts("this program is only for FreeBSD");
-}
-#else
-#include <err.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-#include <kvm.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <sys/user.h>
-#include "config.h" // for BBSUID
-
-int main(int argc, char **argv)
-{
- kvm_t *kd;
- struct kinfo_proc *kp;
- char errbuf[_POSIX2_LINE_MAX];
- int nentries, i, npids;
- pid_t pids[8192];
- kd = kvm_openfiles("/dev/null", "/dev/null", NULL, O_RDONLY, errbuf);
- if( kd == NULL )
- errx(1, "%s", errbuf);
-
- if ((kp = kvm_getprocs(kd, KERN_PROC_UID, BBSUID, &nentries)) == 0 ||
- nentries < 0)
- errx(1, "%s", kvm_geterr(kd));
-
- for( npids = 0, i = nentries ; --i >= 0 ; ++kp ){
- if( strncmp(kp->ki_comm, "mbbsd", 5) == 0 ){
- if( kp->ki_runtime > (60 * 1000000) ){ // 60 secs
- kill(kp->ki_pid, 1);
- pids[npids++] = kp->ki_pid;
- printf("%d\n", kp->ki_pid);
- }
- }
- }
-
- if( npids != 0 ){
- sleep(2);
- while( --npids >= 0 )
- kill(pids[npids], 9);
- }
-
- kvm_close(kd);
- return 0;
-}
-
-#endif
diff --git a/util/lunar-1,15run.pl b/util/lunar-1,15run.pl
deleted file mode 100644
index d4cd2f20..00000000
--- a/util/lunar-1,15run.pl
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/perl
-use lib '/home/bbs/bin/';
-use LocalVars;
-# ¨C¹A¾äªì¤@, ¤Q¤­´N·|¶]¤@¦¸ $ARGV[0]
-# ¸ê®Æ¨Ó·½ http://tw.weathers.yahoo.com/
-open FH, "$LYNX -source http://tw.weathers.yahoo.com/ | grep '¥Á°ê'|";
-$din = <FH>;
-close FH;
-
-($month, $day) = $din =~ /¹A¾ä (.*?)¤ë (.*?)¤é/;
-system("@ARGV") if( $day eq '¤@' || $day eq '¤@¤Q¤­' );
diff --git a/util/testkenben.txt b/util/testkenben.txt
deleted file mode 100644
index df3893d3..00000000
--- a/util/testkenben.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-HCGH-306 ¦Ë¤k ¡·¦³¤K¨ö¡I¡I¡I 7/24 jennywen/molly
-Foolshome ¹ÎÅé ¡·­C­C­C~~~¤dÁH¦~ 1/14 truth/citizen/nathon
-KHCHS-87-306·s²ø ¡·³£¶]¨ì­þ¸Ì¥h¤F­ 6/12
-TGHS8714 «n¤k ¡·²z©Ê¤Ñ®ð¡F·P©Ê¥ 8/07 grassflying/EPOCH
-PttDoc ¼T­ù ¡·Ptt Document Pr 8/07
-Delphi µ{³] ¡·Delphi¨g·Q¦± 3/09 cying
-ciacia_Her ¥xÆW ¡·ciacia¥Î¤å¦r¬D³ 8/16 sherbet
-CS87Love ¤¤¤s ¡··R©O! 8/08 sylna/fancydream
-Wanfang ¥xÆW ¡·´N­È±o¤F·R¸UªÚ 8/07 zkkk
-KS87-308 ¶¯¤¤ ¡´¶¯¤¤¤K±¾¯Z¡m¤@¤ 8/07 SBT/shouhou
-