int main(int argc, char *argv[]) { char ch; if(argc < 2){ fprintf(stderr,"Usage: ./link_mining -f ../conf/link_mining.xml"); return 1; } int is_daemon = 1; global_conf_st *g_conf = NULL; g_conf = (global_conf_st *)calloc(sizeof(global_conf_st),1); set_default_conf(g_conf); while( -1 != (ch = getopt(argc,argv,"f:h:?:D"))){ switch(ch){ case 'f': init_global_config(g_conf,optarg); break; case 'D': is_daemon = 0; break; case 'h': case '?': default: fprintf(stderr,"Usage ./link_ming -f ../conf/link_mining.xml"); } } g_thread_init(NULL); signal(SIGINT,signal_handler); signal(SIGTERM,signal_handler); signal(SIGHUP,signal_handler); signal(SIGPIPE,SIG_IGN); if(is_daemon && (daemon(0,0) == -1)){ jlog(L_ERR,"daemon error"); } thread_init(g_conf); MSG_PROCESSING = 0; reload_dump(g_conf); pthread_t receive_ppid; receive_ppid = init_receive_thread(g_conf); int i; while(!is_shutdown){ sleep(1); } save_dump(g_conf); pthread_join(receive_ppid,NULL); save_dump(g_conf); int len = 0; for(i = 0;i<g_conf->max_thread;i++){ len = g_async_queue_length(threads[i].msg_queue); jlog(L_DEBUG,"(%d)len: %d",i,len); pthread_cancel(threads[i].ppid); } pthread_mutex_lock(&init_lock); while(init_count >0) pthread_cond_wait(&init_cond,&init_lock); pthread_mutex_unlock(&init_lock); global_conf_free(g_conf); return 0; }
void global_kbd(EVENT_MSG *msg,void **usr) { char c; usr; if (msg->msg==E_KEYBOARD) { c=(*(int *)msg->data)>>8; if (c==';') save_dump(); }
//----------------------------------------------------------------------------- static int emulate_client_send_channel_data( freerdp* freerdp, int channelId, uint8* data, int size ) { static int counter = 0; counter++; printf("Client send to server (%d packet):\n", counter); freerdp_hexdump(data, size); // add to global dumps list save_dump(data, size); return 0; }