jsoncons::json make_switch(game::Switch s, int game_tick) { jsoncons::json r; r["msgType"] = "switchLane"; if (game_tick != -1) { r["gameTick"] = game_tick; } if (s == game::Switch::kSwitchLeft) r["data"] = "Left"; else if (s == game::Switch::kSwitchRight) r["data"] = "Right"; else return make_ping(); return r; }
void tracker_infos(Trackerpacket *packet) { int which = packet->which; char host[255]; char str[255]; int i; //here we get the information from a server //saving informations servers[which].speed=packet->infos.infos.size; servers[which].size=packet->infos.infos.size; servers[which].erase=packet->infos.infos.erase; strcpy(servers[which].description, packet->infos.infos.description); strcpy(servers[which].version, packet->infos.infos.version); servers[which].ipaddress=packet->infos.infos.ipaddress; servers[which].nbplayers=packet->infos.infos.nbplayers; printf("------------------------------------------\n"); printf("getting server infos %d \n", which); printf("speed : %d\n",servers[which].speed ); printf("size : %d\n",servers[which].size ); printf("erase : %d\n",servers[which].erase ); printf("description : %s\n",servers[which].description ); printf("version : %s\n",servers[which].version ); servers[which].ping=0; servers[which].packets=0; printf("IP : %d.%d.%d.%d:%i\n", (SDLNet_Read32(&servers[which].ipaddress.host) & 0xff000000) >> 24, (SDLNet_Read32(&servers[which].ipaddress.host) & 0x00ff0000) >> 16, (SDLNet_Read32(&servers[which].ipaddress.host) & 0x0000ff00) >> 8, SDLNet_Read32(&servers[which].ipaddress.host) & 0x000000ff, servers[which].ipaddress.port ); printf("nbplayers : %d\n",servers[which].nbplayers ); printf("------------------------------------------\n"); sprintf(host, "%d.%d.%d.%d", (SDLNet_Read32(&servers[which].ipaddress.host) & 0xff000000) >> 24, (SDLNet_Read32(&servers[which].ipaddress.host) & 0x00ff0000) >> 16, (SDLNet_Read32(&servers[which].ipaddress.host) & 0x0000ff00) >> 8, SDLNet_Read32(&servers[which].ipaddress.host) & 0x000000ff); make_ping(which, servers, host, PINGPORT); nbservers++; i = addRow_wlist ( tracker.serverlist, 1 ); // set_wscrollbar(tracker.listscroll, nbservers); if( i >= 0 ) { printf("--> setting line %d\n", i); setCell_wlist ( tracker.serverlist, (char *)&servers[which].ipaddress, sizeof(IPaddress), i, 0 ); setCell_wlist ( tracker.serverlist, (char *)servers[which].description, strlen(servers[which].description)+1, i, 1 ); setCell_wlist ( tracker.serverlist, (char *)&servers[which].nbplayers, sizeof(int), i, 2 ); setCell_wlist ( tracker.serverlist, (char *)&servers[which].ping, sizeof(int), i, 3 ); } sprintf(str, "%d gltron server%c.", nbservers, (nbservers > 1 )? 's':' '); set_wstatictext(tracker.servertext, str); }
int main(int argc, char *argv[]) { /* Define the options specific to the DNS protocol. */ struct option long_options[] = { /* General options */ {"help", no_argument, 0, 0}, /* Help */ {"h", no_argument, 0, 0}, {"version", no_argument, 0, 0}, /* Version */ #if 0 {"name", required_argument, 0, 0}, /* Name */ {"n", required_argument, 0, 0}, {"download",required_argument, 0, 0}, /* Download */ {"n", required_argument, 0, 0}, {"chunk", required_argument, 0, 0}, /* Download chunk */ {"isn", required_argument, 0, 0}, /* Initial sequence number */ #endif {"delay", required_argument, 0, 0}, /* Retransmit delay */ {"steady", no_argument, 0, 0}, /* Don't transmit immediately after getting a response. */ {"max-retransmits", required_argument, 0, 0}, /* Set the max retransmissions */ {"retransmit-forever", no_argument, 0, 0}, /* Retransmit forever if needed */ #ifndef NO_ENCRYPTION {"secret", required_argument, 0, 0}, /* Pre-shared secret */ {"no-encryption", no_argument, 0, 0}, /* Disable encryption */ #endif /* i/o options. */ {"console", no_argument, 0, 0}, /* Enable console */ {"exec", required_argument, 0, 0}, /* Enable execute */ {"e", required_argument, 0, 0}, {"command", no_argument, 0, 0}, /* Enable command (default) */ {"ping", no_argument, 0, 0}, /* Ping */ /* Tunnel drivers */ {"dns", required_argument, 0, 0}, /* Enable DNS */ #if 0 {"tcp", optional_argument, 0, 0}, /* Enable TCP */ #endif /* Debug options */ {"d", no_argument, 0, 0}, /* More debug */ {"q", no_argument, 0, 0}, /* Less debug */ {"packet-trace", no_argument, 0, 0}, /* Trace packets */ /* Sentry */ {0, 0, 0, 0} /* End */ }; int c; int option_index; const char *option_name; NBBOOL tunnel_driver_created = FALSE; ll_t *drivers_to_create = ll_create(NULL); uint32_t drivers_created = 0; log_level_t min_log_level = LOG_LEVEL_WARNING; group = select_group_create(); system_dns = dns_get_system(); /* Seed with the current time; not great, but it'll suit our purposes. */ srand((unsigned int)time(NULL)); /* This is required for win32 support. */ winsock_initialize(); #ifndef WIN32 /* set the SIGCHLD handler to SIG_IGN causing zombie child processes to be reaped automatically */ if(signal(SIGCHLD, SIG_IGN) == SIG_ERR) { perror("Couldn't set SIGCHLD handler to SIG_IGN"); exit(1); } #endif /* Set the default log level */ log_set_min_console_level(min_log_level); /* Parse the command line options. */ opterr = 0; while((c = getopt_long_only(argc, argv, "", long_options, &option_index)) != -1) { switch(c) { case 0: option_name = long_options[option_index].name; /* General options */ if(!strcmp(option_name, "help") || !strcmp(option_name, "h")) { usage(argv[0], "--help requested"); } if(!strcmp(option_name, "version")) { printf(NAME" "VERSION" (client)\n"); exit(0); } else if(!strcmp(option_name, "isn")) { uint16_t isn = (uint16_t) (atoi(optarg) & 0xFFFF); debug_set_isn(isn); } else if(!strcmp(option_name, "delay")) { int delay = (int) atoi(optarg); session_set_delay(delay); LOG_INFO("Setting delay between packets to %dms", delay); } else if(!strcmp(option_name, "steady")) { session_set_transmit_immediately(FALSE); } else if(!strcmp(option_name, "max-retransmits")) { controller_set_max_retransmits(atoi(optarg)); } else if(!strcmp(option_name, "retransmit-forever")) { controller_set_max_retransmits(-1); } #ifndef NO_ENCRYPTION else if(!strcmp(option_name, "secret")) { session_set_preshared_secret(optarg); } else if(!strcmp(option_name, "no-encryption")) { session_set_encryption(FALSE); } #endif /* i/o drivers */ else if(!strcmp(option_name, "console")) { ll_add(drivers_to_create, ll_32(drivers_created++), make_console()); /* session = session_create_console(group, "console"); controller_add_session(session); */ } else if(!strcmp(option_name, "exec") || !strcmp(option_name, "e")) { ll_add(drivers_to_create, ll_32(drivers_created++), make_exec(optarg)); /* session = session_create_exec(group, optarg, optarg); controller_add_session(session); */ } else if(!strcmp(option_name, "command")) { ll_add(drivers_to_create, ll_32(drivers_created++), make_command()); /* session = session_create_command(group, "command"); controller_add_session(session); */ } else if(!strcmp(option_name, "ping")) { ll_add(drivers_to_create, ll_32(drivers_created++), make_ping()); /* session = session_create_ping(group, "ping"); controller_add_session(session); */ } /* Tunnel driver options */ else if(!strcmp(option_name, "dns")) { tunnel_driver_created = TRUE; tunnel_driver = create_dns_driver(group, optarg); } else if(!strcmp(option_name, "tcp")) { tunnel_driver_created = TRUE; create_tcp_driver(optarg); } /* Debug options */ else if(!strcmp(option_name, "d")) { if(min_log_level > 0) { min_log_level--; log_set_min_console_level(min_log_level); } } else if(!strcmp(option_name, "q")) { min_log_level++; log_set_min_console_level(min_log_level); } else if(!strcmp(option_name, "packet-trace")) { session_enable_packet_trace(); } else { usage(argv[0], "Unknown option"); } break; case '?': default: usage(argv[0], "Unrecognized argument"); break; } } create_drivers(drivers_to_create); ll_destroy(drivers_to_create); if(tunnel_driver_created && argv[optind]) { printf("It looks like you used --dns and also passed a domain on the commandline.\n"); printf("That's not allowed! Either use '--dns domain=xxx' or don't use a --dns\n"); printf("argument!\n"); exit(1); } /* If no output was set, use the domain, and use the last option as the * domain. */ if(!tunnel_driver_created) { /* Make sure they gave a domain. */ if(optind >= argc) { printf("Starting DNS driver without a domain! This will only work if you\n"); printf("are directly connecting to the dnscat2 server.\n"); printf("\n"); printf("You'll need to use --dns server=<server> if you aren't.\n"); tunnel_driver = create_dns_driver_internal(group, NULL, "0.0.0.0", 53, DEFAULT_TYPES, NULL); } else { tunnel_driver = create_dns_driver_internal(group, argv[optind], "0.0.0.0", 53, DEFAULT_TYPES, NULL); } } /* Be sure we clean up at exit. */ atexit(cleanup); /* Start the driver! */ driver_dns_go(tunnel_driver); return 0; }