summaryrefslogtreecommitdiffstats
path: root/util/smtest.temp
diff options
context:
space:
mode:
Diffstat (limited to 'util/smtest.temp')
-rw-r--r--util/smtest.temp231
1 files changed, 231 insertions, 0 deletions
diff --git a/util/smtest.temp b/util/smtest.temp
new file mode 100644
index 00000000..7daa12ce
--- /dev/null
+++ b/util/smtest.temp
@@ -0,0 +1,231 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <time.h>
+#include <ctype.h>
+#include "config.h"
+#include "pttstruct.h"
+#include "util.h"
+#include "perm.h"
+#include "common.h"
+#include "proto.h"
+
+#define OUTFILE BBSHOME "/pttbbs/util/smtest.result1"
+#define FIREFILE BBSHOME "/pttbbs/util/smtest.result2"
+
+extern boardheader_t *bcache;
+extern int numboards;
+
+boardheader_t allbrd[MAX_BOARD];
+struct userec_t xuser;
+
+int getuser(char *userid) {
+ int uid;
+ if((uid = searchuser(userid)))
+ passwd_query(uid, &xuser);
+ return uid;
+}
+
+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 latestdate[])
+{
+ int k,rr;
+ char *dd;
+
+ dd = strtok(hdrdate,"/");
+
+ if(dd){
+ k = 0;
+ do
+ {
+ if (*dd == '[' ){dd[strlen(dd)-1]='\0'; dd++;}
+ rr = atoi(dd);
+ printf("%d/", rr);
+ } while((dd = strtok(NULL,"/")) != NULL);
+ }
+
+ printf("\n");
+
+ if(1)
+ return 1;
+ else
+ return 0;
+}
+
+int main()
+{
+ int bmid, i, j, k, rd,rr;
+ char *p, *bmsname[3], fname[256], *dd;
+ fileheader_t hdr;
+ FILE *inf;
+
+ /* set date */
+ char thedate[5];
+ time_t t = time(NULL);
+ struct tm *tm = localtime(&t);
+
+ sprintf(thedate, "%2d/%02d", tm->tm_mon + 1, tm->tm_mday);
+
+ resolve_boards();
+ if(passwd_mmap())
+ exit(1);
+ memcpy(allbrd,bcache,numboards*sizeof(boardheader_t));
+ /* write out the target file */
+ inf = fopen(OUTFILE, "w+");
+ if(inf == NULL){
+ printf("open file error : %s\n", OUTFILE);
+ exit(1);
+ }
+
+ /*the ouput table title*/
+ fprintf(inf,"英文版名 類別 中文版名 版主名單"
+ " 日期 備註 \n");
+
+ j = 0 ;
+ for (i = 0; i < 30; i++) {
+ rd = 0;
+ if(allbrd[i].brdname[0] == '\0') continue;
+ if((allbrd[i].brdattr & BRD_NOZAP) == 1) continue;
+
+ sprintf(fname, BBSHOME "/boards/%s/.DIR",allbrd[i].brdname);
+
+ /* get date to choose junk board */
+
+ rd = get_num_records(fname, sizeof(fileheader_t));
+ get_record(fname, &hdr, sizeof (hdr), rd - 30);
+
+
+ if(outofdate(hdr.date,thedate)) printf("yest\n");
+
+/*
+ dd = strtok(hdr.date,"/");
+
+ if(dd){
+ k = 0;
+ do
+ {
+ if (*dd == '[' ){dd[strlen(dd)-1]='\0'; dd++;}
+ rr = atoi(dd);
+ printf("%d/", rr);
+
+ } while((dd = strtok(NULL,"/")) != NULL);
+ }
+ printf("\n");
+*/
+ /* print to file */
+ printf("%-*.*s%-*.*s%-*.*s%-*.*s", IDLEN, IDLEN, allbrd[i].brdname,
+ BTLEN-24, BTLEN-26, allbrd[i].title, IDLEN - 5, IDLEN-5,hdr.date,
+ IDLEN * 3, IDLEN * 3, allbrd[i].BM);
+
+ /* post to board */
+
+
+
+ /* 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))
+ {
+ // printf("%s", bmsname[k]);
+ }
+ k++;
+ } while((p=strtok(NULL,"/ "))!=NULL);
+ }
+
+ printf("\n");
+
+}
+
+
+/*
+
+
+
+ if(flag == 1){
+ bmbuf[0] = '\0';
+ for(k = 0 , n = 0; k < index; k++){
+ if(!bms[k].flag){
+ if( n++ != 0) strcat(bmbuf, "/");
+ strcat(bmbuf, bms[k].bmname);
+ }
+ }
+ strcpy(bcache[i].BM, bmbuf);
+ }
+ }
+ qsort(lostbms, j, sizeof(lostbm), bmlostdays_cmp);
+
+ //write to the etc/toplazyBM
+ for ( i=0; i<j; i++)
+ {
+ if( lostbms[i].lostdays > 60){
+ fprintf(firef, "%-*.*s%-*.*s%-*.*s%3d天沒上站\n", IDLEN, IDLEN, lostbms[i].title,
+ BTLEN-10, BTLEN-10, lostbms[i].ctitle, IDLEN,IDLEN,
+ lostbms[i].bmname,lostbms[i].lostdays);
+ }else{
+ fprintf(inf, "%-*.*s%-*.*s%-*.*s%3d天沒上站\n", IDLEN, IDLEN, lostbms[i].title,
+ BTLEN-10, BTLEN-10, lostbms[i].ctitle, IDLEN,IDLEN,
+ lostbms[i].bmname,lostbms[i].lostdays);
+ }
+ }
+ fclose(inf);
+ fclose(firef);
+
+ //printf("Total %d boards.\n", count);
+
+ //mail to the users
+ for( i=0; i<j; i++)
+ {
+ fileheader_t mymail;
+ char genbuf[200];
+ int lostdays;
+
+ lostdays = lostbms[i].lostdays;
+
+ if( (lostdays != 30) && (lostdays != 45) && (lostdays <= 60))
+ continue;
+
+ sprintf(genbuf, BBSHOME "/home/%c/%s", lostbms[i].bmname[0], lostbms[i].bmname);
+ stampfile(genbuf, &mymail);
+
+ strcpy(mymail.owner, "[PTT警察局]");
+
+ if(lostdays <= 60){
+ sprintf(mymail.title,
+ "\033[32m [版主免職警告通知] \033[m %s BM %s", lostbms[i].title, lostbms[i].bmname);
+ }else{
+ sprintf(mymail.title,
+ "\033[32m [版主免職通知] \033[m %s BM %s", lostbms[i].title, lostbms[i].bmname);
+ }
+ mymail.savemode = 0 ;
+ unlink(genbuf);
+ if(lostdays <= 60){
+ LINK(OUTFILE, genbuf);
+ }else{
+ LINK(FIREFILE, genbuf);
+ }
+
+ sprintf(genbuf, BBSHOME "/home/%c/%s/.DIR", lostbms[i].bmname[0], lostbms[i].bmname);
+ append_record(genbuf, &mymail, sizeof(mymail));
+ }
+*/
+ return 0;
+}