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; }
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))); }
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; }