예제 #1
0
int main(int argc, char **argv)
{
    int i,j,k;
    char * s;
    chdir(BBSHOME);
    resolve_boards();
    resolve_ucache();
    resolve_utmp();
    memset(count, 0, 200*sizeof(int));
    apply_ulist_addr((APPLY_UTMP_FUNC)check,NULL);
    for (i=0;i<200;i++)order[i]=i;
    for (i=0;i<200;i++)
        for (j=i+1;j<200;j++)
            if (count[order[i]]<count[order[j]]) {
                k=order[i];
                order[i]=order[j];
                order[j]=k;
            }
    j=0;
    for (i=0;i<200;i++) {
        s = ModeType(order[i]);
        if (s[0]&&strcmp(s,unknown)) {
            j++;
            printf("%2d  %10s  %4d  %.2lf%%\n", j, s, count[order[i]], (double)count[order[i]]/total*100);
        }
    }
    return 0;
}
예제 #2
0
int main(int argc, char **argv)
{
    if(argc<=1) return 0;
    mode = atoi(argv[1]);
    chdir(BBSHOME);
    resolve_boards();
    resolve_ucache();
    resolve_utmp();
    apply_ulist_addr((APPLY_UTMP_FUNC)check,NULL);
    printf("%s: %d\n", ModeType(mode), count);
    return 0;
}
예제 #3
0
int main(void){
	char path[256];
	struct stat st;
	time_t now;
	struct tm t;

	now = time(0);
	localtime_r( &now, &t);

    chdir(BBSHOME);
	if( stat( BONLINE_LOGDIR, &st) < 0 ){
		if(mkdir(BONLINE_LOGDIR, 0755) < 0)
			exit(0);
	}
	sprintf(path, "%s/%d", BONLINE_LOGDIR, t.tm_year+1900);
	if( stat(path, &st) < 0){
		if(mkdir(path, 0755) < 0)
			exit(0);
	}
	sprintf(path, "%s/%d/%d", BONLINE_LOGDIR, t.tm_year+1900, t.tm_mon+1);
	if( stat(path, &st) < 0){
		if(mkdir(path, 0755) < 0)
			exit(0);
	}

	sprintf(path,"%s/%d/%d/%d_useronline",BONLINE_LOGDIR,t.tm_year+1900,t.tm_mon+1,t.tm_mday);

	if((fp=fopen(path, "a"))==NULL){
		printf("cannot open log file\n");
		exit(0);
	}

	sprintf(path, "%s/%d/%d/%d_login", BONLINE_LOGDIR, t.tm_year+1900, t.tm_mon+1, t.tm_mday);

	if((fp_login=fopen(path, "a"))==NULL){
		printf("cannot open log file\n");
		exit(0);
	}

    sprintf(path, "%s/lastcount", BONLINE_LOGDIR);

    if((fp_forcount=fopen(path, "w+"))==NULL){
        printf("cannot open log file\n");
        exit(0);
    }

    resolve_utmp();
	get_publicshm();

	resolve_guest_table();

	wwwguestonline = getwwwguestcount();
	totalonline =  get_utmp_number() + wwwguestonline;

    apply_ulist_addr((APPLY_UTMP_FUNC)do_userlist, NULL);

	show_wwwguest();

	logincount = get_publicshm()->logincount;
	logoutcount = get_publicshm()->logoutcount;
	wwwlogincount = get_publicshm()->wwwlogincount;
	wwwlogoutcount = get_publicshm()->wwwlogoutcount;
	wwwguestlogincount = get_publicshm()->wwwguestlogincount;
	wwwguestlogoutcount = get_publicshm()->wwwguestlogoutcount;
	staytime = get_publicshm()->staytime;
	wwwstaytime = get_publicshm()->wwwstaytime;
	wwwgueststaytime = get_publicshm()->wwwgueststaytime;

    setpublicshmreadonly(0);
	get_publicshm()->logincount=0;
	get_publicshm()->logoutcount=0;
	get_publicshm()->wwwlogincount=0;
	get_publicshm()->wwwlogoutcount=0;
	get_publicshm()->wwwguestlogincount=0;
	get_publicshm()->wwwguestlogoutcount=0;
	get_publicshm()->staytime=0;
	get_publicshm()->wwwstaytime=0;
	get_publicshm()->wwwgueststaytime=0;
    setpublicshmreadonly(1);
	/*格式: 时间 totalonline wwwguestonline wwwnotguestonline telnetonline wwwguestschool wwwnotguestschool telnetschool */
	fprintf(fp, "%d.%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", t.tm_hour, t.tm_min/6, totalonline, wwwguestonline, wwwnotguestonline, telnetonline, wwwguestschool, wwwnotguestschool, telnetschool);
	fprintf(fp_login, "%d.%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", t.tm_hour, t.tm_min/6, logincount, logoutcount, (int)(logoutcount?(staytime/logoutcount)/10:0), wwwlogincount, wwwlogoutcount, wwwguestlogincount, wwwguestlogoutcount, (int)(wwwlogoutcount?(wwwstaytime/wwwlogoutcount)/10:0) , (int)(wwwguestlogoutcount?(wwwgueststaytime/wwwguestlogoutcount)/10:0));
	fprintf(fp_forcount, "%d\n%d\n%d\n%d\n%d\n%d\n%d\n", totalonline, wwwguestonline, wwwnotguestonline, telnetonline, wwwguestschool, wwwnotguestschool, telnetschool);
    fclose(fp);
    fclose(fp_login);
    fclose(fp_forcount);
    return 0;
}