summaryrefslogtreecommitdiffstats
path: root/util/smtest.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/smtest.c')
-rw-r--r--util/smtest.c289
1 files changed, 0 insertions, 289 deletions
diff --git a/util/smtest.c b/util/smtest.c
deleted file mode 100644
index e46157f2..00000000
--- a/util/smtest.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/* $Id: smtest.c,v 1.5 2002/06/19 13:38:01 lwms Exp $ */
-#include "bbs.h"
-
-#define WARNFILE BBSHOME "/etc/DeleteBoard.warn"
-#define EXECFILE BBSHOME"/etc/DeleteBoard.exec"
-#define WARNLIST BBSHOME"/etc/DeleteBoardList.warn"
-#define EXECLIST BBSHOME"/etc/DeleteBoardList.exec"
-
-extern boardheader_t *bcache;
-extern int numboards;
-
-boardheader_t allbrd[MAX_BOARD];
-extern userec_t xuser;
-
-
-int LINK(char* src, char* dst){
- char cmd[200];
-
- if( link(src, dst) == 0){
- return 0;
- }
-
- sprintf(cmd, "/bin/cp -R %s %s", src, dst);
- return system(cmd);
-}
-
-int outofdate(char *hdrdate, char thedate[], int *zf)
-{
- int k = 0;
- char *dd;
- char latestdate[6];
- int date1[2], date2[2],datetemp;
- *zf = 0;
-
- strcpy(latestdate, thedate);
-
- dd = strtok(hdrdate,"/");
- if(dd == NULL) return 2;
- if(dd)
- k = 0;
- do{
- if (*dd == '[' ){dd[strlen(dd)-1]='\0'; dd++;}
- date1[k] = atoi(dd);
- k++;
- } while((dd=strtok(NULL,"/ "))!=NULL);
-
- dd = strtok(latestdate,"/");
- if(dd)
- k = 0;
- do{
- if (*dd == '[' ){dd[strlen(dd)-1]='\0'; dd++;}
- date2[k] = atoi(dd);
- k++;
- } while((dd=strtok(NULL,"/ "))!=NULL);
-
- if(date2[0] == date1[0] && date2[1] >= date1[1])
- return 0;
-
- datetemp = date2[0];
-
- for(k = 1;k <= 5;k++)
- {
- datetemp -= 1;
- if((datetemp) <= 0){
- datetemp = 12;
- }
- if(k < 3 && datetemp == date1[0]) return 0;
- if(k == 3 && datetemp == date1[0] && date2[1] <= date1[1]) return 0;
- if(k == 3 && datetemp == date1[0] && date2[1] > date1[1]) return 1;
- if(k == 4 && datetemp == date1[0] && date2[1] > date1[1]) return 1;
- }
- *zf = 1;
- return 1;
-}
-
-void mailtouser(char *bmname, char *bname, int zf)
-{
- fileheader_t mymail;
- char genbuf[200];
-
- sprintf(genbuf, BBSHOME "/home/%c/%s", bmname[0], bmname);
- stampfile(genbuf, &mymail);
- strcpy(mymail.owner, "[PTT警察局]");
-
- if(zf == 0){
- sprintf(mymail.title,"\033[32m [廢板警告通知]"
- "\033[m %s板(BM:%s)",bname, bmname);
- }else{
- sprintf(mymail.title,"\033[32m [廢板通知] "
- "\033[m %s板(BM:%s)",bname, bmname);
- }
- unlink(genbuf);
- if(zf == 0){
- LINK(WARNFILE, genbuf);
- }else{
- LINK(EXECFILE, genbuf);
- }
-
- sprintf(genbuf, BBSHOME "/home/%c/%s/.DIR", bmname[0], bmname);
- append_record(genbuf, &mymail, sizeof(mymail));
-}
-
-int main()
-{
- int bmid, i, j, k, rd, ood, flag, zapflag = 0,warncount = 0,execcount = 0;
- char *p, *bmsname[3], fname[256], hdrdatetemp[6],thedate[6];
- char bname[32],genbuf[200];
- fileheader_t hdr;
- FILE *inf, *def;
-
- ///// set date //////
- time_t t = time(NULL);
- struct tm *tm = localtime(&t);
- sprintf(thedate, "%2d/%02d", tm->tm_mon + 1, tm->tm_mday);
-
- ////// board //////
-
- resolve_boards();
- if(passwd_mmap())
- exit(1);
- memcpy(allbrd,bcache,numboards*sizeof(boardheader_t));
-
- ////// write out the target file //////
- inf = fopen(WARNLIST, "w+");
- if(inf == NULL){
- printf("open file error : %s\n", WARNLIST);
- exit(1);
- }
-
- def = fopen(EXECLIST, "w+");
- if(def == NULL)
- {
- printf("open file error : %s\n", EXECLIST);
- exit(1);
- }
-
- ////// fprint table title /////
- fprintf(inf,"\n[廢板警告]即日起一個月內若看板"
- "使用率仍然過低,則予以廢除。\n\n"
- "英文板名 類別 中文板名 日期 "
- " 板主名單\n\n");
-
- fprintf(def,"\n[廢板公告]下列看板因使用率仍然過低,故予以廢除。\n\n"
- "英文板名 類別 中文板名 日期 "
- " 板主名單\n\n");
-
- ////// start process /////
- j = 0 ;
- for (i = 0; i < numboards; i++) {
- rd = 0;
- if(allbrd[i].brdname[0] == '\0') continue;
- if((allbrd[i].brdattr & BRD_NOZAP) ||
- (allbrd[i].brdattr & BRD_GROUPBOARD) ||
- (allbrd[i].brdattr & BRD_WARNDEL) ||
- (allbrd[i].brdattr & BRD_HIDE) ||
- (allbrd[i].brdattr & BRD_POSTMASK) ||
- (allbrd[i].brdattr & BRD_VOTEBOARD) ||
- (allbrd[i].brdattr & BRD_BAD) ||
- (allbrd[i].level != 0)) continue;
-
- sprintf(fname, BBSHOME "/boards/%c/%s/.DIR", allbrd[i].brdname[0], allbrd[i].brdname);
-
- /* get date to choose junk board */
- /* exception when ood == 2 */
- flag = 30;
- rd = get_num_records(fname, sizeof(fileheader_t));
- if(rd <= 30)
- {
- get_record(fname, &hdr, sizeof (hdr), 1);
- strcpy(hdrdatetemp, hdr.date);
- ood = outofdate(hdrdatetemp,thedate, &zapflag);
- }
- else
- {
- do{
- if(rd == 0)
- {
- ood = 0;
- break;
- }
- get_record(fname, &hdr, sizeof (hdr), rd - flag);
- strcpy(hdrdatetemp, hdr.date);
- ood = outofdate(hdrdatetemp,thedate, &zapflag);
- flag += 5;
- }while(ood == 2 && flag < 60);
- }
- if(ood == 0) continue;
-
- warncount++;
- /* print to file */
- fprintf(inf,"%-*.*s%-*.*s %-*.*s%-*.*s\n", IDLEN, IDLEN,
- allbrd[i].brdname, BTLEN-26, BTLEN-26, allbrd[i].title,
- IDLEN - 5, IDLEN-5,hdr.date, IDLEN * 3, IDLEN * 3, allbrd[i].BM);
-
- /* post warn file to each board */
- sprintf(genbuf,"~/bin/post %s [廢板警告通知]"
- " [PTT警察局] %s",allbrd[i].brdname,WARNFILE);
- system(genbuf);
-
- /* user extract to mail */
- p=strtok(allbrd[i].BM,"/ ");
- if(p){
- k = 0;
- do
- {
- if (*p == '[' ){p[strlen(p)-1]='\0'; p++;}
- bmid=getuser(p);
- bmsname[k] = p;
- if(isalpha(allbrd[i].BM[0])&& !(xuser.userlevel &PERM_SYSOP))
- {
- mailtouser(bmsname[k],allbrd[i].title, zapflag);
- }
- k++;
- } while((p=strtok(NULL,"/ "))!=NULL);
- }
- /* set attribute of DeleteBoardWarn Flag */
- bcache[i].brdattr = allbrd[i].brdattr | BRD_WARNDEL;
-
- /* zap boards */
- if (zapflag == 1)
- {
- execcount++;
- /* print to file */
- fprintf(def,"%-*.*s%-*.*s %-*.*s%-*.*s\n", IDLEN, IDLEN,
- allbrd[i].brdname, BTLEN-26, BTLEN-26, allbrd[i].title,
- IDLEN - 5, IDLEN-5,hdr.date, IDLEN * 3, IDLEN * 3, allbrd[i].BM);
-
- /* if you want to unmark these code,
- make sure board, man path have changed to [man/]boards/<First char of brdname>/brdname
- */
-
-// strcpy(bname, allbrd[i].brdname);
-// sprintf(genbuf,
-// "/bin/tar zcvf ~/tmp/board_%s.tgz boards/%s man/%s>/dev/null 2>&1;"
-// "/bin/rm -fr ~/boards/%s man/%s",bname, bname, bname, bname,bname);
-// system(genbuf);
-
-// memset(&allbrd[i], 0, sizeof(allbrd[i]));
-// sprintf(allbrd[i].title, "[%s] deleted by System", bname);
-// substitute_record(fn_board, &bh, sizeof(allbrd[i]), bid);
-// reset_board(bid);
- }
-
- }
-
- /* post to Record, ViolateLaw */
- if(warncount > 0){
- sprintf(genbuf,"~/bin/post Record [廢板警告通知]"
- " [PTT警察局] %s",WARNLIST);
- system(genbuf);
- sprintf(genbuf,"~/bin/post ViolateLaw [廢板警告通知]"
- " [PTT警察局] %s",WARNLIST);
- system(genbuf);
- }
- if(execcount > 0){
- sprintf(genbuf,"~/bin/post Record [廢板公告]"
- " [PTT警察局] %s",EXECLIST);
- system(genbuf);
- sprintf(genbuf,"~/bin/post ViolateLaw [廢板公告]"
- " [PTT警察局] %s",EXECLIST);
- system(genbuf);
- }
-
-
-/* Below is for test only */
-/*
- mailtouser("Smile","test", 1);
- mailtouser("Smile","test", 0);
-
- strcpy(bname, "Test");
- sprintf(genbuf,"~/bin/post %s test Smile ~/etc/test.fileaaa",bname);
- system(genbuf);
-
-
- bid = getbnum(bname);
- strcpy(bname,"jourslamdunk");
- sprintf(genbuf,
- "/bin/tar zcvf ~/tmp/board_%s.tgz boards/%c/%s man/%c/%s>/dev/null 2>&1;"
- "/bin/rm -fr ~/boards/%c/%s man/%c/%s",
- bname, bname[0], bname, bname[0], bname, bname[0], bname, bname[0], bname);
- system(genbuf);
-
- memset(&bh, 0, sizeof(bh));
- sprintf(bh.title, "[%s] deleted by %s", bname,cuser.userid);
- substitute_record(fn_board, &bh, sizeof(bh), bid);
- reset_board(bid);
-*/
- return 0;
-}