Exemple #1
0
int _tmain(int argc, _TCHAR* argv[])
{
	char hex[BUFFER_SIZE];
	char b64Enc[BUFFER_SIZE];
	char md5Hex[BUFFER_SIZE];
	char md5B64[BUFFER_SIZE];
	char sha1Hex[BUFFER_SIZE];
	char sha1B64[BUFFER_SIZE];

	if ( argc < 2 ){
		printf("usage: CreateMD5Hash <string>\n");
		exit(-1);
	}

	BYTE *str = (BYTE*)argv[1];
	size_t strSize = strlen(argv[1]);

	size_t hexSize		= encode_hex(str, strSize, hex, sizeof(hex));
	size_t b64EncSize	= encode_base64(str, strSize, b64Enc, sizeof(b64Enc));
	size_t md5HexSize	= md5_hex(str, strSize, md5Hex, sizeof(md5Hex));
	size_t md5B64Size	= md5_base64(str, strSize, md5B64, sizeof(md5B64));
	size_t sha1HexSize	= sha1_hex(str, strSize, sha1Hex, sizeof(sha1Hex));
	size_t sha1B64Size	= sha1_base64(str, strSize, sha1B64, sizeof(sha1B64));

	printf(
		"'%s':%d\n"
		"  Hex:\t\t'%s':%d\n"
		"  B64:\t\t'%s':%d\n"
		"  MD5Hex:\t'%s':%d\n"
		"  MD5B64:\t'%s':%d\n"
		"  SHA1Hex:\t'%s':%d\n"
		"  SHA1B64:\t'%s':%d\n",
		str, strSize,
		hex,		hexSize,
		b64Enc,		b64EncSize,
		md5Hex,		md5HexSize,
		md5B64,		md5B64Size,
		sha1Hex,	sha1HexSize,
		sha1B64,	sha1B64Size
	);

	return 0;
}
Exemple #2
0
query_status_t
send_crysis_request_packet(struct qserver *server)
{
	char cmd[256], buf[1024], *password, *md5;

	debug(2, "challenge: %ld", server->challenge);
	switch (server->challenge) {
	case 0:
		// Not seen a challenge yet, request it
		server->challenge++;
		sprintf(cmd, "challenge");
		break;

	case 1:
		server->challenge++;
		password = get_param_value(server, "password", "");
		sprintf(cmd, "%s:%s", server->challenge_string, password);
		md5 = md5_hex(cmd, strlen(cmd));
		sprintf(cmd, "authenticate %s", md5);
		free(md5);
		break;

	case 2:
		// NOTE: we currently don't support player info
		server->challenge++;
		server->flags |= TF_STATUS_QUERY;
		server->n_servers = 3;
		sprintf(cmd, "status");
		break;

	case 3:
		return (DONE_FORCE);
	}

	server->saved_data.pkt_max = -1;
	sprintf(buf, "POST /RPC2 HTTP/1.1\015\012Keep-Alive: 300\015\012User-Agent: qstat %s\015\012Content-Length: %d\015\012Content-Type: text/xml\015\012\015\012<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall><methodName>%s</methodName><params /></methodCall>", VERSION, (int)(98 + strlen(cmd)), cmd);

	return (send_packet(server, buf, strlen(buf)));
}
Exemple #3
0
int do_reload_config (int create_conn) {
  int res;
  need_reload_config = 0;

  fd[0] = open (config_filename, O_RDONLY);
  if (fd[0] < 0) {
    fprintf (stderr, "cannot re-read config file %s: %m\n", config_filename);
    return -1;
  }

  res = kdb_load_hosts ();
  if (res > 0 && verbosity > 0) {
    fprintf (stderr, "/etc/hosts changed, reloaded\n");
  }

  res = parse_config (NextConf, CurConf, 0);

  close (fd[0]);

  //  clear_config (NextConf);
  
  if (res < 0) {
    vkprintf (0, "error while re-reading config file %s, new configuration NOT applied\n", config_filename);
    return res;
  }

  res = try_open_new_listening_sockets (NextConf);
  if (res < 0) {
    vkprintf (0, "error while re-reading config file %s, new configuration NOT applied: cannot open listening ports\n", config_filename);
    return res;
  }

  res = parse_config (NextConf, CurConf, 1);

  if (res < 0) {
    clear_config (NextConf, 0);
    vkprintf (0, "fatal error while re-reading config file %s\n", config_filename);
    exit (-res);
  }

  if (create_conn) {
    transfer_listening_sockets (NextConf, CurConf);
  }

  struct mc_config *tmp = CurConf;
  CurConf = NextConf;
  NextConf = tmp;

  clear_config (NextConf, 1);

  if (create_conn) {
    create_all_outbound_connections ();
  }

  CurConf->config_loaded_at = now ? now : time (0);
  CurConf->config_bytes = config_bytes;
  CurConf->config_md5_hex = zmalloc (33);
  md5_hex (config_buff, config_bytes, CurConf->config_md5_hex);
  CurConf->config_md5_hex[32] = 0;

  vkprintf (0, "configuration file %s re-read successfully, new configuration active\n", config_filename);

  return 0;
}