int	third_arg_or_xor_and(t_all *all)
{
  if (check_register(all->taab[2], all) == 1)
    return (1);
  all->flag = -1;
  return (0);
}
Example #2
0
void show_motd(int connfd){
    user* u = check_register(connfd);
    if(u){
        char MOTD[MAX_MSG_LEN];
        int length = 0;

        length += snprintf(MOTD+length, MAX_MSG_LEN-length,":IRC_SERVER 375 %s :- Hello! Message of the day -  \n",u->nick_name);
        length += snprintf(MOTD+length, MAX_MSG_LEN-length,":IRC_SERVER 372 %s :- Welcome to Use IRC Server!\n",u->nick_name);
        length += snprintf(MOTD+length, MAX_MSG_LEN-length,":IRC_SERVER 376 %s :End of /MOTD command\n",u->nick_name);

        send_msg_back(connfd,MOTD);

        send_command_to_daemon("ADDUSER",u->nick_name);
    }
}
int	first_arg_or_xor_and(t_all *all)
{
  if (all->taab[0][0] == 'r')
    {
      if (check_register(all->taab[0], all) == 1)
	if (second_arg_or_xor_and(all) == 1)
	  return (1);
      all->flag = -1;
      return (0);
    }
  else if (if_dir_or_ind_value(all, 0, 0) == 1)
    if (second_arg_or_xor_and(all) == 1)
      return (1);
  all->flag = -1;
  return (0);
}
int	second_arg_or_xor_and(t_all *all)
{
  if (all->taab[1][0] == 'r')
    {
      if (check_register(all->taab[1], all) == 1)
	{
	  if (third_arg_or_xor_and(all) == 1)
	    return (1);
	}
      all->flag = -1;
      return (0);
    }
  else if (if_dir_or_ind_value(all, 1, 0) == 1)
    {
      if (third_arg_or_xor_and(all) == 1)
	return (1);
    }
  all->flag = -1;
  return (0);
}
Example #5
0
int allow_register_2(struct sip_msg* msg, char* allow_file, char* deny_file)
{
	return check_register(msg, (int)(long)allow_file);
}
Example #6
0
int allow_register_1(struct sip_msg* msg, char* basename, char* s)
{
	return check_register(msg, (int)(long)basename);
}
Example #7
0
static void user_login() {
    char ans[4], i;
    char genbuf[200];
    struct tm *ptime, *tmp;
    time_t now;
    int a;
    /*** Heat:廣告詞
	 char *ADV[17] = {
	 "記得唷!! 5/12在台大二活地下室見~~~",
	 "你知道Ptt之夜是什麼嗎? 5/12號就要上演耶 快去問吧!",
	 "5/12 Ptt之夜即將引爆 能不去嗎? 在台大二活地下室咩",
	 "不來就落伍了 啥? 就Ptt之夜啊 很棒的晚會唷 時間:5/12",
	 "差點忘了提醒你 5/12我們有約 就台大二活地下室咩!!",
	 "Ptt是啥 想知嗎? 5/12在台大二活地下室告訴你唷",
	 "來來來....5/12快到台大二活地下室去拿獎品吧~~",
	 "去去去...到台大二活地下室去 就5/12麻 有粉多獎品耶",
	 "喂喂喂 怎還楞在這!!快呼朋引伴大鬧ptt",
	 "Ptt最佳豬腳 換你幹幹看 5/12來吧....*^_^*",
	 "幹什麼幹什麼?? 你怎麼不曉得啥是Ptt之夜..老土唷",
	 "累了嗎? 讓我們來為你來一段精采表演吧.. 5/12 Ptt之夜",
	 "世紀末最屁力的晚會 就在台大二活地下室 5/12不見不散 gogo",
	 "到底誰比較帥(美) 來比比吧 5/12Ptt之夜 一較高下",       
	 "台大二活地下室 5/12 聽說會有一場很棒的晚會唷 Ptt之夜",
	 "台大二活地下室 5/12 你能不來嗎?粉多網友等著你耶",
	 "5/12 台大二活地下室 是各約網友見面的好地方呢",
	 }; 
	 char *ADV[] = {
	 "7/17 @LIVE 亂彈, 何欣穗 的 入場卷要送給 ptt 的愛用者!",
	 "欲知詳情請看 PttAct 板!!",
	 }; ***/

    log_usies("ENTER", getenv("RFC931") /* fromhost */ );
    setproctitle("%s: %s", margs, cuser.userid);
    
    /* resolve all cache */
    resolve_garbage();	/* get ptt cache */
    resolve_fcache();
    resolve_boards();
    
    /* 初始化 uinfo、flag、mode */
    setup_utmp(LOGIN);
    mysrand();		/* 初始化: random number 增加user跟時間的差異 */
    currmode = MODE_STARTED;
    enter_uflag = cuser.uflag;

    /* get local time */
    time(&now);
    ptime = localtime(&now);
    tmp = localtime(&cuser.lastlogin);
    
    if((a = utmpshm->number) > fcache->max_user) {
	sem_init(FROMSEM_KEY, &fcache_semid);
	sem_lock(SEM_ENTER, fcache_semid);
	fcache->max_user = a;
	fcache->max_time = now;
	sem_lock(SEM_LEAVE, fcache_semid);
    }
#ifdef INITIAL_SETUP
    if(!getbnum(DEFAULT_BOARD)) {
	strcpy(currboard, "尚未選定");
    } else
#endif
    {
	brc_initial(DEFAULT_BOARD);
	set_board();
    }

    /* 畫面處理開始 */
    if(!(HAS_PERM(PERM_SYSOP) && HAS_PERM(PERM_DENYPOST)))
	do_aloha("<<上站通知>> -- 我來啦!");
    if(ptime->tm_mday == cuser.day && ptime->tm_mon + 1 == cuser.month) {
	more("etc/Welcome_birth", NA);
	currutmp->birth = 1;
    } else {
	more("etc/Welcome_login", NA);
//	pressanykey();
//    more("etc/CSIE_Week", NA);
	currutmp->birth = 0;
    }
    
    if(cuser.userlevel) {	/* not guest */
	move(t_lines - 4, 0);
	prints("      歡迎您第 \033[1;33m%d\033[0;37m 度拜訪本站,"
	       "上次您是從 \033[1;33m%s\033[0;37m 連往本站,\n"
	       "     我記得那天是 \033[1;33m%s\033[0;37m。\n",
	       ++cuser.numlogins, cuser.lasthost, Cdate(&cuser.lastlogin));
	currutmp->mind=rand()%8;  /* 初始心情 */
	pressanykey();
 	
	if(currutmp->birth && tmp->tm_mday != ptime->tm_mday) {
	    more("etc/birth.post", YEA);
	    brc_initial("WhoAmI");
	    set_board();
	    do_post();
	}
	setuserfile(genbuf, str_badlogin);
	if(more(genbuf, NA) != -1) {
	    getdata(b_lines - 1, 0, "您要刪除以上錯誤嘗試的記錄嗎(Y/N)?[Y]",
		    ans, 3, LCECHO);
	    if(*ans != 'n')
		unlink(genbuf);
	}
	check_register();
	strncpy(cuser.lasthost, fromhost, 16);
	cuser.lasthost[15] = '\0';
	restore_backup();
    } else if(!strcmp(cuser.userid, STR_GUEST)) {
	char *nick[13] = {
	    "椰子", "貝殼", "內衣", "寶特瓶", "翻車魚",
	    "樹葉", "浮萍", "鞋子", "潛水艇", "魔王",
	    "鐵罐", "考卷", "大美女"};
	char *name[13] = {
	    "大王椰子", "鸚鵡螺", "比基尼", "可口可樂", "仰泳的魚",
	    "憶", "高岡屋", "AIR Jordon", "紅色十月號", "批踢踢",
	    "SASAYA椰奶", "鴨蛋", "布魯克鱈魚香絲"};
	char *addr[13] = {
	    "天堂樂園", "大海", "綠島小夜曲", "美國", "綠色珊瑚礁",
	    "遠方", "原本海", "NIKE", "蘇聯", "男八618室",
	    "愛之味", "天上", "藍色珊瑚礁"};
	i = login_start_time % 13;
	sprintf(cuser.username, "海邊漂來的%s", nick[(int)i]);
	sprintf(currutmp->username, cuser.username);
	sprintf(cuser.realname, name[(int)i]);
	sprintf(currutmp->realname, cuser.realname);
	sprintf(cuser.address, addr[(int)i]);
	cuser.sex = i % 8;
	currutmp->pager = 2;
	pressanykey();
    } else
	pressanykey();
    
    if(!PERM_HIDE(currutmp))
	cuser.lastlogin = login_start_time;
    
    reload_money();
    passwd_update(usernum, &cuser);
    
    for(i = 0; i < NUMVIEWFILE; i++)
	if((cuser.loginview >> i) & 1)
	    more(loginview_file[(int)i][0], YEA);
	
	
}
Example #8
0
static void
user_login()
{
	char		genbuf    [200];
	struct tm      *ptime, *tmp;
	time_t		now = time(0);
	int		a;

	extern struct FROMCACHE *fcache;
	extern int	fcache_semid;

	log_usies("ENTER", fromhost);
	setproctitle("%s: %s", cuser.userid, fromhost);

	/* ------------------------ */
	/* 初始化 uinfo、flag、mode */
	/* ------------------------ */

	setup_utmp(LOGIN);
	currmode = MODE_STARTED;
	enter_uflag = cuser.uflag;

	/* get local time */
	tmp = localtime(&cuser.lastlogin);

	update_data();		/* wildcat: update user data */
	/* Ptt check 同時上線人數 */
	resolve_fcache();
	resolve_utmp();

	if ((a = utmpshm->number) > fcache->max_user) {
		sem_init(FROMSEM_KEY, &fcache_semid);
		sem_lock(SEM_ENTER, fcache_semid);
		fcache->max_user = a;
		fcache->max_time = now;
		sem_lock(SEM_LEAVE, fcache_semid);
	}
#ifdef  INITIAL_SETUP
	if (getbnum(DEFAULT_BOARD) == 0) {
		strcpy(currboard, "尚未選定");
	} else
#endif

	{
		brc_initial(DEFAULT_BOARD);
		set_board();
	}

	/* ------------ */
	/* 畫面處理開始 */
	/* ------------ */

	if (!(HAS_PERM(PERM_SYSOP) && HAS_PERM(PERM_DENYPOST))) {
		char		buf       [256];
		time_t		now;

		time(&now);
		sprintf(buf, "<<上站通知>> -- 我來囉! - %s", Etime(&now));
		do_aloha(buf);
	}
	time(&now);
	ptime = localtime(&now);

#ifdef CAMERA
	film_out(FILM_LOGIN, 0);
#else
	more("etc/Welcome_login", NA);
#endif

#if 0
	/* wildcat : 搬家通知用 */
	if (belong(BBSHOME "/etc/oldip", fromhost)) {
		more(BBSHOME "/etc/removal");
		abort_bbs();
	}
#endif

	if ((cuser.day == ptime->tm_mday) && (cuser.month == (ptime->tm_mon + 1)))
		currutmp->birth = 1;
	else
		currutmp->birth = 0;

	if (cuser.userlevel) {	/* not guest */
		move(t_lines - 3, 0);
		prints("      歡迎您第 %d 度拜訪本站,\
上次您是從 %s 連往本站,\n\
     我記得那天是 %s。\n",
		       ++cuser.numlogins, cuser.lasthost,
		       Etime(&cuser.lastlogin));
		pressanykey(NULL);


		/* Ptt */
		if (currutmp->birth == 1) {
#ifdef CAMERA
			film_out(FILM_WEL_BIRTH, 0);
#else
			more("etc/Welcome_birth", YEA);
#endif
			brc_initial("Greeting");
			set_board();
			do_post();
		}
		sethomefile(genbuf, cuser.userid, str_badlogin);
		if (more(genbuf, NA) != -1) {
			if (getans2(b_lines, 0, "您要刪除以上錯誤嘗試的記錄嗎?", 0, 2, 'y') != 'n')
				unlink(genbuf);
		}
		check_register();
		strncpy(cuser.lasthost, fromhost, 24);
		substitute_record(fn_passwd, &cuser, sizeof(cuser), usernum);
		cuser.lasthost[23] = '\0';
		restore_backup();
	}
Example #9
0
void request_check(int index, char* buf){
    char tokens[MAX_MSG_TOKENS][MAX_MSG_LEN+1];
    int arg_num = tokenize(buf,tokens);
    int type,connfd;

    connfd = p.clientfd[index];

    if (!strcmp(tokens[0],"USER"))
        type = USER_CMD;
    else if(!strcmp(tokens[0],"NICK"))
        type = NICK_CMD;
    else if(!strcmp(tokens[0],"JOIN"))
        type = JOIN_CMD;
    else if(!strcmp(tokens[0],"QUIT"))
        type = QUIT_CMD;
    else if(!strcmp(tokens[0],"PART"))
        type = PART_CMD;
    else if(!strcmp(tokens[0],"LIST"))
        type = LIST_CMD;
    else if(!strcmp(tokens[0],"WHO"))
        type = WHO_CMD;
    else if(!strcmp(tokens[0],"PRIVMSG"))
        type = PRIVMSG_CMD;
    else
        type = UNKONWN_CMD;

    //DEBUG
    int i;
    printf(" # CMD:%s\t ARG_NUM:%d\t",tokens[0],arg_num);
    for(i=0;i<4;i++)
        printf(" ARG%d:%s\t",i,tokens[i+1]);
    printf("\n");

    if(type == UNKONWN_CMD)
        unknown_command(connfd,tokens[0]);
    else if(arg_num < ARG_NUM[type]){
        char msg[MAX_MSG_LEN];
        if(type == NICK_CMD)
            /* NICK ERRRO TYPE: ERR_NOERR_NONICKNAMEGIVEN */
            snprintf(msg,MAX_MSG_LEN,":No nickname given\n");
        else if(type == PRIVMSG_CMD){
            /* PRIVMSG ERRRO TYPE: ERR_NORECIPIENT */
            if(!arg_num)
                snprintf(msg,MAX_MSG_LEN,":No recipient given PRIVMSG\n");
            /* PRIVMSG ERRRO TYPE: ERR_NOTEXTTOSEND */
            else
                snprintf(msg,MAX_MSG_LEN,":No text to send\n");
        }else
            snprintf(msg,MAX_MSG_LEN,"%s:Not enough parameters\n", tokens[0]);
        send_msg_back(connfd,msg);
    }
    else
        switch(type){
            case QUIT_CMD:
                quit_command(index);
                break;
            case USER_CMD:
                user_command(connfd,tokens[1],tokens[4]);               
                break;
            case NICK_CMD:
                nick_command(connfd,tokens[1]);
                break;
            default:
                if(check_register(connfd)){
                    switch(type){
                        case JOIN_CMD:
                            join_command(connfd,tokens[1]);
                            break;
                        case PART_CMD:
                            part_command(connfd,tokens[1],1);
                            break;
                        case LIST_CMD:
                            list_command(connfd);
                            break;
                        case WHO_CMD:
                            who_command(connfd,tokens[1]);
                            break;
                        case PRIVMSG_CMD:
                            privmsg_command(connfd,tokens[1],tokens[2]);
                    }
                }else
                    send_msg_back(connfd,":You have not registered\n");
        }
}
Example #10
0
/**
 *		CDR LOG FILE parsing and write to file..
 **/ 
int parse_write_proc(char *read_file,
					 FILE *write_fd,
					 int file_format,
					 int min_flag,
					 char *search_min,
					 int ip_flag,
					 char *ip,
					 int port1_flag,
					 int port1,
					 int port2_flag,
					 int port2)
{

	int					i;
	int					year_int, time_int;
	long long			temp_long;
	char 				temp_file[256];
	char				year_data[4], time_data[10];
	char				*date_str;
	char				acct_sess_id[16];
	char				buffer[2048];
	char				src_ip[16], dest_ip[16];
	char				create_time[64], end_time[64];
	time_t				temp_cvt_crt_time, temp_cvt_last_time;
	time_t				cvt_crt_time, cvt_last_time;
	FILE				*fd;
	struct	tm			*crt_time, *last_time;
	st_CDRSessLog		cdrlog_info;
	st_CDRDumpInfo		cdrlog_head;
	int 			reg_cnt;


	/** initialize variables **/
	reg_cnt = 0;
	memset(&cdrlog_head, 	0x00, sizeof(st_CDRDumpInfo));
	memset(temp_file, 	0x00, sizeof(temp_file));
	memset(year_data, 	0x00, sizeof(year_data));
	memset(time_data, 	0x00, sizeof(time_data));

	if (file_format == COMPRESS_FILE)
		memcpy(temp_file, read_file, (strlen(read_file)-3));
	else
		memcpy(temp_file, read_file, strlen(read_file));

	date_str = strstr(temp_file, "2");
	//date_str = strstr(date_str, "2");

	/** get year info **/
	for(i=0; i<4; i++)
	{
		year_data[i] = *(date_str+i);
	}

	/** get date string **/
	for(i=0; i<10; i++)
	{
		time_data[i] = *(date_str+23+i);
	}

	year_int 	= atoi(year_data);
	time_int 	= atoi(time_data);


	fd = fopen(temp_file, "r");
	if (!fd)
	{
		printf("FILE OPEN ERROR : %s [FILE : %s]\n", 
								strerror(errno), temp_file);
		return (-1);	

	}
	printf("FILE OPEN SUCCESS : %s\n", temp_file); 

	/** read file head info **/
	if ((fread(&cdrlog_head, sizeof(st_CDRDumpInfo), 1, fd)) <= 0)
	{
		fprintf(stderr, "FILE READ ERROR : %s [FILE : %s]\n",
						strerror(errno), temp_file);	
	}

	/** print head info **/
	print_flag = 0;

	/** read CDR Sess Log data **/
	while(1)
	{

		memset(&cdrlog_info, 	0x00, sizeof(st_CDRSessLog));

		if ((fread(&cdrlog_info, sizeof(st_CDRSessLog), 1, fd)) <= 0)
		{
			//fprintf(stderr, "END READ FILE : %s\n", strerror(errno));
			break;
		}

		print_flag++;

		memset(acct_sess_id, 		0x00, sizeof(acct_sess_id));

		CVT_INT64_CP(&temp_long, cdrlog_info.llAcctSessID); 
		//sprintf(acct_sess_id, "%lld", temp_long);
		conv_id(temp_long, acct_sess_id);

		/** print sample **/
		/*
		if (print_flag == 1)
		{
			printf("############ PRINT CDR LOG DATA ###############\n\n");

			printf("IMSI 				: %s\n", 	cdrlog_info.szIMSI);
			printf("Acct Session ID 		: %s\n", 	acct_sess_id);
			printf("Source-IP-Address		: %s\n", 	
							cvt_ipaddr(CVT_INT_CP(cdrlog_info.uiSrcIP)));
			printf("Service-Option			: %d\n", CVT_INT_CP(cdrlog_info.dSvcOpt));
			printf("Create-Time			: %d\n", CVT_INT_CP(cdrlog_info.tCreateTime));
			printf("Last-Time			: %d\n", CVT_INT_CP(cdrlog_info.tLastTime));
			printf("Source-Port			: %d\n", cdrlog_info.usSecPort);
			printf("Destination-IP-Address		: %s\n", 
							cvt_ipaddr(CVT_INT_CP(cdrlog_info.uiDestIP)));
			printf("Destination-Port		: %d\n", cdrlog_info.usDestPort);
			printf("Service-Type			: %d\n", CVT_INT_CP(cdrlog_info.dSvcType));
			printf("IP-Up-Frame			: %d\n", CVT_INT_CP(cdrlog_info.uiUPIPFrames));
			printf("IP-Down-Frame			: %d\n", CVT_INT_CP(cdrlog_info.uiDownIPFrames));
			printf("IP-Up-Byte			: %d\n", CVT_INT_CP(cdrlog_info.uiUPIPBytes));
			printf("IP-Down-Byte			: %d\n", CVT_INT_CP(cdrlog_info.uiDownIPBytes));
			printf("ReTx-Up-Frame			: %d\n", CVT_INT_CP(cdrlog_info.uiUPTCPREFrames));
			printf("ReTx-Down-Frame			: %d\n", CVT_INT_CP(cdrlog_info.uiDownTCPREFrames));
			printf("ReTx-Up-Byte			: %d\n", CVT_INT_CP(cdrlog_info.uiUPTCPREBytes));
			printf("ReTx-Down-Byte			: %d\n", CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

			printf("################################################\n\n");
		}
		*/

		memset(src_ip, 		0x00, sizeof(src_ip));
		memset(dest_ip,		0x00, sizeof(dest_ip));
		memset(create_time,	0x00, sizeof(create_time));
		memset(end_time,	0x00, sizeof(end_time));

		strcpy(src_ip, (char *)cvt_ipaddr(CVT_INT_CP(cdrlog_info.uiSrcIP)));
		strcpy(dest_ip, (char *)cvt_ipaddr(CVT_INT_CP(cdrlog_info.uiDestIP)));

		CVT_INT_CP_CDR(cdrlog_info.tCreateTime, (int *)&cvt_crt_time);
		CVT_INT_CP_CDR(cdrlog_info.tLastTime, (int *)&cvt_last_time);

/*
		printf("=======>  cvt_crt_time : %d, %p\n", cvt_crt_time, &cvt_crt_time);
		printf("=======>  cvt_last_time : %d, %p\n", cvt_last_time, &cvt_last_time);
*/

		crt_time 	= localtime(&cvt_crt_time);
		sprintf(create_time, "%d-%02d-%02d %02d:%02d:%02d",
								crt_time->tm_year+1900,
								crt_time->tm_mon+1,
								crt_time->tm_mday,
								crt_time->tm_hour,
								crt_time->tm_min,
								crt_time->tm_sec);

		last_time 	= localtime(&cvt_last_time);
		sprintf(end_time, "%d-%02d-%02d %02d:%02d:%02d",
								last_time->tm_year+1900,
								last_time->tm_mon+1,
								last_time->tm_mday,
								last_time->tm_hour,
								last_time->tm_min,
								last_time->tm_sec);

		memset(buffer, 0x00, sizeof(buffer));


		if (check_register(dest_ip, cdrlog_info.usDestPort) < 0)
		{
			reg_cnt++;
			continue;
		}

		if (min_flag == 1)
		{
			if (!strcmp(search_min, cdrlog_info.szIMSI))
			{
				sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%u,%s,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",	// 070913,poopee, ushort for port
					cdrlog_info.szIMSI,
					acct_sess_id,
					src_ip,
					CVT_INT_CP(cdrlog_info.dSvcOpt),
					create_time,
					end_time,
					CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
					dest_ip,	
					CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
					CVT_INT_CP(cdrlog_info.dSvcType),
					CVT_INT_CP(cdrlog_info.uiUPIPFrames),
					CVT_INT_CP(cdrlog_info.uiDownIPFrames),
					CVT_INT_CP(cdrlog_info.uiUPIPBytes),
					CVT_INT_CP(cdrlog_info.uiDownIPBytes),
					CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
					CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

				fputs(buffer, write_fd);
				cdrlog_cnt++;
			}
		}
		else if (min_flag == 2)
		{
			sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
					cdrlog_info.szIMSI,
					acct_sess_id,
					src_ip,
					CVT_INT_CP(cdrlog_info.dSvcOpt),
					create_time,
					end_time,
					CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
					dest_ip,	
					CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
					CVT_INT_CP(cdrlog_info.dSvcType),
					CVT_INT_CP(cdrlog_info.uiUPIPFrames),
					CVT_INT_CP(cdrlog_info.uiDownIPFrames),
					CVT_INT_CP(cdrlog_info.uiUPIPBytes),
					CVT_INT_CP(cdrlog_info.uiDownIPBytes),
					CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
					CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

			fputs(buffer, write_fd);
			cdrlog_cnt++;
		}
		else if (min_flag == 3)
		{
			int 	ret_code;
			
			ret_code = check_dup_value( cdrlog_info.dSvcOpt, 
										cdrlog_info.uiDestIP,
										cdrlog_info.usDestPort);
			if(ret_code < 0)
			{
				dup_cnt++;
				continue;
			}
			else if (ret_code == 2)
			{
				add_dest_port(cdrlog_info.usDestPort);
			}
			else if (ret_code == 3)
			{
				add_dest_port(cdrlog_info.usDestPort);
				add_dest_ip(cdrlog_info.uiDestIP);
			}
			else if (ret_code == 4)
			{
				add_dest_port(cdrlog_info.usDestPort);
				add_dest_ip(cdrlog_info.uiDestIP);
				add_service_opt(cdrlog_info.dSvcOpt);
			}

			sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
					cdrlog_info.szIMSI,
					acct_sess_id,
					src_ip,
					CVT_INT_CP(cdrlog_info.dSvcOpt),
					create_time,
					end_time,
					CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
					dest_ip,	
					CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
					CVT_INT_CP(cdrlog_info.dSvcType),
					CVT_INT_CP(cdrlog_info.uiUPIPFrames),
					CVT_INT_CP(cdrlog_info.uiDownIPFrames),
					CVT_INT_CP(cdrlog_info.uiUPIPBytes),
					CVT_INT_CP(cdrlog_info.uiDownIPBytes),
					CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
					CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
					CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));
			
			fputs(buffer, write_fd);
			cdrlog_cnt++;
		}
		else 
		{
			if (ip_flag == 1)
			{
				if (!strcmp(ip, src_ip) || !strcmp (ip, dest_ip))
				{
					sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%u,%s,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",	// 070913,poopee, ushort for port
						cdrlog_info.szIMSI,
						acct_sess_id,
						src_ip,
						CVT_INT_CP(cdrlog_info.dSvcOpt),
						create_time,
						end_time,
						CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
						dest_ip,	
						CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
						CVT_INT_CP(cdrlog_info.dSvcType),
						CVT_INT_CP(cdrlog_info.uiUPIPFrames),
						CVT_INT_CP(cdrlog_info.uiDownIPFrames),
						CVT_INT_CP(cdrlog_info.uiUPIPBytes),
						CVT_INT_CP(cdrlog_info.uiDownIPBytes),
						CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
						CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

					fputs(buffer, write_fd);
					cdrlog_cnt++;
				}
			}
			if (port1_flag == 1)
			{
				if (port1 == CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF || port1 == CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF)
				{
					sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%u,%s,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",	// 070913,poopee, ushort for port
						cdrlog_info.szIMSI,
						acct_sess_id,
						src_ip,
						CVT_INT_CP(cdrlog_info.dSvcOpt),
						create_time,
						end_time,
						CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
						dest_ip,	
						CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
						CVT_INT_CP(cdrlog_info.dSvcType),
						CVT_INT_CP(cdrlog_info.uiUPIPFrames),
						CVT_INT_CP(cdrlog_info.uiDownIPFrames),
						CVT_INT_CP(cdrlog_info.uiUPIPBytes),
						CVT_INT_CP(cdrlog_info.uiDownIPBytes),
						CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
						CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

					fputs(buffer, write_fd);
					cdrlog_cnt++;
				}
			}
			if (port2_flag == 1)
			{
				if (port2 == CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF || port2 == CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF)
				{
					sprintf(buffer, "%s,0x%s,%s,%d,%s,%s,%u,%s,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",	// 070913,poopee, ushort for port
						cdrlog_info.szIMSI,
						acct_sess_id,
						src_ip,
						CVT_INT_CP(cdrlog_info.dSvcOpt),
						create_time,
						end_time,
						CVT_SHORT_CP(cdrlog_info.usSecPort) & 0x0000FFFF,	// 070913,poopee
						dest_ip,	
						CVT_SHORT_CP(cdrlog_info.usDestPort) & 0x0000FFFF,	// 070913,poopee
						CVT_INT_CP(cdrlog_info.dSvcType),
						CVT_INT_CP(cdrlog_info.uiUPIPFrames),
						CVT_INT_CP(cdrlog_info.uiDownIPFrames),
						CVT_INT_CP(cdrlog_info.uiUPIPBytes),
						CVT_INT_CP(cdrlog_info.uiDownIPBytes),
						CVT_INT_CP(cdrlog_info.uiUPTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiDownTCPREFrames),
						CVT_INT_CP(cdrlog_info.uiUPTCPREBytes),
						CVT_INT_CP(cdrlog_info.uiDownTCPREBytes));

					fputs(buffer, write_fd);
					cdrlog_cnt++;
				}
			}
		}
	} 	/** end of while **/

	total_cdr_cnt += cdrlog_cnt;
	printf("=======> CDR LOG COUNT : %d\n", cdrlog_cnt);
	printf("=======> check register cnt : %d\n", reg_cnt);
	cdrlog_cnt = 0;
	fclose(fd);
									
	return (1);

}