void tcp_copy_release_resources() { int i; output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); address_release(); tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }
void tcp_copy_release_resources() { int i; output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); #if (!TCPCOPY_DR) address_release(); #endif tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif #if (TCPCOPY_PCAP) for (i = 0; i < clt_settings.devices.device_num; i++) { if (clt_settings.devices.device[i].pcap != NULL) { pcap_close(clt_settings.devices.device[i].pcap); clt_settings.devices.device[i].pcap = NULL; } } #endif #if (TCPCOPY_OFFLINE) pcap_close(clt_settings.pcap); #endif if (tc_raw_socket_out > 0) { close(tc_raw_socket_out); tc_raw_socket_out = -1; } if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }
void gryphon_release_resources() { int i; tc_log_info(LOG_WARN, 0, "sig %d received", tc_over); output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); release_user_resources(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); tc_log_end(); if (tc_raw_socket_out > 0) { close(tc_raw_socket_out); tc_raw_socket_out = -1; } #if (GRYPHON_PCAP_SEND) tc_pcap_over(); #endif if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } if (clt_settings.mem_pool != NULL) { free(clt_settings.mem_pool); clt_settings.mem_pool = NULL; } }
void tcp_copy_release_resources() { int i; tc_log_info(LOG_WARN, 0, "sig %d received", tc_over); output_stat(); tc_time_remove_timer(); tc_log_info(LOG_NOTICE, 0, "remove timer over"); destroy_for_sessions(); tc_event_loop_finish(&event_loop); tc_log_info(LOG_NOTICE, 0, "tc_event_loop_finish over"); #if (TCPCOPY_DIGEST) tc_destroy_sha1(); tc_destroy_digests(); #endif #if (!TCPCOPY_DR) address_release(); #endif tc_log_end(); #ifdef TCPCOPY_MYSQL_ADVANCED release_mysql_user_pwd_info(); #endif #if (TCPCOPY_PCAP) for (i = 0; i < clt_settings.devices.device_num; i++) { if (clt_settings.devices.device[i].pcap != NULL) { pcap_close(clt_settings.devices.device[i].pcap); clt_settings.devices.device[i].pcap = NULL; } } #endif #if (TCPCOPY_OFFLINE) if (clt_settings.pcap != NULL) { pcap_close(clt_settings.pcap); clt_settings.pcap = NULL; } #endif if (tc_raw_socket_out > 0) { tc_socket_close(tc_raw_socket_out); tc_raw_socket_out = TC_INVALID_SOCKET; } #if (TCPCOPY_PCAP_SEND) tc_pcap_over(); #endif if (clt_settings.transfer.mappings != NULL) { for (i = 0; i < clt_settings.transfer.num; i++) { free(clt_settings.transfer.mappings[i]); } free(clt_settings.transfer.mappings); clt_settings.transfer.mappings = NULL; } }
void tc_interval_dispose(tc_event_timer_t *evt) { output_stat(); evt->msec = tc_current_time_msec + 5000; }
// {{{ void gogodir() void gogodir() { DIR *dp; struct dirent *dirp; struct stat fst; char buf[MAX_PATH_LENGTH]; if(!(dp=opendir("."))){ getcwd(buf, MAX_PATH_LENGTH); fprintf(stderr, "Can't open directory %s: ", buf); perror(NULL); return; } // surf file while((dirp=readdir(dp)) != NULL){ // skip "." and ".." if(!strcmp(dirp->d_name, "..") || !strcmp(dirp->d_name, ".")) continue; // get lstat if(lstat(dirp->d_name, &fst) == -1){ getcwd(buf, MAX_PATH_LENGTH); fprintf(stderr, "Can't get lstat of %s: ", strcat(strcat(buf, "/"), dirp->d_name)); perror(NULL); continue; } // check if filename contain pattern // and get the stat of the target of linkfile if the file is a symbolic link file if(strstr(dirp->d_name, pattern) != NULL){ output_stat(dirp->d_name, &fst); if(S_ISLNK(fst.st_mode)){ if(stat(dirp->d_name, &fst) == -1){ getcwd(buf, MAX_PATH_LENGTH); fprintf(stderr, "Can't get stat of %s: ", strcat(strcat(buf, "/"), dirp->d_name)); perror(NULL); continue; } } // replace file if necessary and possible if(needreplace && S_ISREG(fst.st_mode)){ replace_file(dirp->d_name); } }else{ if(S_ISLNK(fst.st_mode)){ if(stat(dirp->d_name, &fst) == -1){ getcwd(buf, MAX_PATH_LENGTH); fprintf(stderr, "Can't get stat of %s: ", strcat(strcat(buf, "/"), dirp->d_name)); perror(NULL); continue; } } } // chdir if the file is a directory if(S_ISDIR(fst.st_mode)){ if(!isvisit(fst.st_ino, fst.st_dev)){ insert(fst.st_ino, fst.st_dev); getcwd(buf, MAX_PATH_LENGTH); if(chdir(dirp->d_name) != -1){ gogodir(); chdir(buf); }else{ fprintf(stderr, "Can't chdir to %s: ", strcat(strcat(buf, "/"), dirp->d_name)); perror(NULL); } } } } closedir(dp); } // }}}