⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 NAT打洞
💻 C
字号:
#include <signal.h>
#include "init.h"
#include "input_params.h"
#include "usage.h"
#include "server_loop.h"


#ifdef AUTH
int has_key_pair = 0;
char public_key[PUBLIC_KEY_LEN];
char private_key[PUBLIC_KEY_LEN];
#endif

unsigned short listen_port;
struct sockaddr_in server_addr;
char *listen_address;
char *program_name;
int registration_period;
char *proxyname = NULL;
int registration_timeout = 3;
int verbose = 0;
char buf[BUFFER_SIZE];    			// buffer for client data
HASHMAP *sock_data;

void read_param(char *selector, int argc, char **argv){
	int i;
  if(!strcmp(selector, "-help") || !strcmp(selector, "h")){
  	usage();
    exit(0);
  }
  else if(!strcmp(selector, "-server-address") || !strcmp(selector, "A")){
	  server_addr.sin_addr.s_addr = inet_addr(argv[0]);
  }
  else if(!strcmp(selector, "-server-port") || !strcmp(selector, "P")){
	  server_addr.sin_port = htons(atoi(argv[0]));
  }
  else if(!strcmp(selector, "-listen-port") || !strcmp(selector, "p")){
	  listen_port = atoi(argv[0]);
  }
  else if(!strcmp(selector, "-listen-address") || !strcmp(selector, "a")){
	  listen_address = argv[0];
  }
  else if(!strcmp(selector, "-verbose")){
	  verbose = 1;
    tcp_verbose = 1;
  }
  else if(!strcmp(selector, "-name") || !strcmp(selector, "n")){
  	proxyname = strdup(argv[0]);
  }
}

int init(int argc, char* argv[]){
  CLIENT_DATA *timer_data;
	struct sockaddr_in timer_addr;

	program_name = argv[0];
  listen_port = LISTEN_PORT;
  listen_address = LISTEN_ADDRESS;
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(SERVER_PORT);
  registration_period = 60;
  parse_input_params(argc, argv, read_param);
#ifdef AUTH
	if(proxyname != NULL){
  	if(
    	(open_public_key(proxyname, public_key) == 0)
      && (open_private_key(proxyname, private_key) == 0)
    ){
      has_key_pair = 1;
    }
    else {
    	printf("[%s,%d] Key pair \"%s\" not found! Exiting.\n", __FILE__,__LINE__, proxyname);
      exit(-1);
    }
  }
#endif
  sock_data = hashmap();
  return 0;
}

char *hello(void){
	return strdup(pHello);
}

struct sockaddr_in get_addr(void* client_data){
	return ((CLIENT_DATA *)client_data)->addr;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -