ildm6 update
This commit is contained in:
parent
ce59a8853e
commit
aee280ca5c
|
@ -1,5 +1,6 @@
|
||||||
|
*.d
|
||||||
*.o
|
*.o
|
||||||
*.o
|
*.so
|
||||||
masterquery
|
masterquery
|
||||||
hlswmaster
|
hlswmaster
|
||||||
*.so
|
hlswmaster.log
|
||||||
|
|
|
@ -33,11 +33,10 @@ plugin p_ut2k4.so
|
||||||
|
|
||||||
[hlswproxy]
|
[hlswproxy]
|
||||||
## ask these hlswmasters
|
## ask these hlswmasters
|
||||||
scan 10.10.0.1:7140
|
#scan 10.10.0.1:7140
|
||||||
scan 10.10.0.2:7140
|
#scan 10.10.0.2:7140
|
||||||
|
|
||||||
[halflife]
|
[halflife]
|
||||||
## allow these nets
|
## allow these nets
|
||||||
valid_net 10.10.0.0/16
|
valid_net 10.10.0.0/16
|
||||||
valid_net 172.16.0.0/16
|
valid_net 172.16.0.0/16
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ struct _entry {
|
||||||
|
|
||||||
static char hlswheader[] = "\xFF\xFF\xFF\xFFHLSWLANSEARCH";
|
static char hlswheader[] = "\xFF\xFF\xFF\xFFHLSWLANSEARCH";
|
||||||
|
|
||||||
|
#define id2name_count (sizeof(id2name) / sizeof(char *) -1)
|
||||||
static char *id2name[] = {
|
static char *id2name[] = {
|
||||||
"Unknown", // 0
|
"Unknown", // 0
|
||||||
"Halflife",
|
"Halflife",
|
||||||
|
@ -68,9 +69,12 @@ static char *id2name[] = {
|
||||||
"Starwars: Battlefront (?)",
|
"Starwars: Battlefront (?)",
|
||||||
"SWAT 4",
|
"SWAT 4",
|
||||||
"Battlefield 2", // 45
|
"Battlefield 2", // 45
|
||||||
"(unknown)",
|
"unknown",
|
||||||
"Quake 4 (?)",
|
"Quake 4",
|
||||||
"Call of Duty 2"
|
"Call of Duty 2",
|
||||||
|
"unknown",
|
||||||
|
"FEAR", // 50
|
||||||
|
"Warsow(?)"
|
||||||
};
|
};
|
||||||
|
|
||||||
static int sock, verbose = 0;
|
static int sock, verbose = 0;
|
||||||
|
@ -93,9 +97,10 @@ static void parse_pkt(struct sockaddr_in *src, void *pkt, unsigned int size)
|
||||||
server = pkt + sizeof(hlswheader);
|
server = pkt + sizeof(hlswheader);
|
||||||
while ((void *)server < pkt + size) {
|
while ((void *)server < pkt + size) {
|
||||||
tmp.s_addr = server->ip;
|
tmp.s_addr = server->ip;
|
||||||
|
|
||||||
printf(" ip=%15s port1=%5d port2=%5d gameid=%2d (%s)\n",
|
printf(" ip=%15s port1=%5d port2=%5d gameid=%2d (%s)\n",
|
||||||
inet_ntoa(tmp), server->port1, server->port2,
|
inet_ntoa(tmp), server->port1, server->port2,
|
||||||
server->gameid, id2name[server->gameid]);
|
server->gameid, server->gameid <= id2name_count ? id2name[server->gameid] : "unknown");
|
||||||
server++;
|
server++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -104,13 +109,13 @@ static void parse_pkt(struct sockaddr_in *src, void *pkt, unsigned int size)
|
||||||
|
|
||||||
static int scan_init()
|
static int scan_init()
|
||||||
{
|
{
|
||||||
int i = 1;
|
sock = socket(PF_INET, SOCK_DGRAM, 0);
|
||||||
|
if (sock < 0) {
|
||||||
if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0) {
|
|
||||||
perror("socket()");
|
perror("socket()");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int i = 1;
|
||||||
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &i, sizeof(i))) {
|
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &i, sizeof(i))) {
|
||||||
perror("setsockopt()");
|
perror("setsockopt()");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -33,6 +33,7 @@ static struct scan_ports port_arr[] = {
|
||||||
{ 23000, 23010, 35 }, /* bfv(35) */
|
{ 23000, 23010, 35 }, /* bfv(35) */
|
||||||
{ 26001, 26011, 19 }, /* igi2(19) */
|
{ 26001, 26011, 19 }, /* igi2(19) */
|
||||||
{ 27888, 27888, 17 }, /* avp2(17) (nur der standart-port..) */
|
{ 27888, 27888, 17 }, /* avp2(17) (nur der standart-port..) */
|
||||||
|
{ 44400, 44400, 51 },
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -66,6 +67,7 @@ static char reply_avp2[] = "avp2\\";
|
||||||
static char reply_igi2[] = "projectigi2r\\";
|
static char reply_igi2[] = "projectigi2r\\";
|
||||||
static char reply_aao[] = "armygame\\";
|
static char reply_aao[] = "armygame\\";
|
||||||
static char reply_rune[] = "rune\\";
|
static char reply_rune[] = "rune\\";
|
||||||
|
static char reply_postal2[] ="postal2\\";
|
||||||
|
|
||||||
static int scan(void)
|
static int scan(void)
|
||||||
{
|
{
|
||||||
|
@ -152,6 +154,11 @@ static int parse_real(struct net_pkt *pkt, int gameid)
|
||||||
/* americas army operations */
|
/* americas army operations */
|
||||||
else if (!pkt_memcmp(pkt, pos1, reply_aao, strlen(reply_aao)))
|
else if (!pkt_memcmp(pkt, pos1, reply_aao, strlen(reply_aao)))
|
||||||
gameid = 15;
|
gameid = 15;
|
||||||
|
|
||||||
|
/* postal2 */
|
||||||
|
else if (!pkt_memcmp(pkt, pos1, reply_postal2, strlen(reply_postal2)))
|
||||||
|
gameid = 9;
|
||||||
|
|
||||||
else
|
else
|
||||||
return PARSE_REJECT;
|
return PARSE_REJECT;
|
||||||
break;
|
break;
|
||||||
|
|
12
scanner.c
12
scanner.c
|
@ -101,7 +101,7 @@ static int scanner_receive(int fd, void *privdata)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = sizeof(struct sockaddr_in);
|
unsigned int i = sizeof(struct sockaddr_in);
|
||||||
pkt->size = recvfrom(fd, pkt->buf, recvsize, 0, (struct sockaddr *)&pkt->addr, &i);
|
pkt->size = recvfrom(fd, pkt->buf, recvsize, 0, (struct sockaddr *)&pkt->addr, &i);
|
||||||
|
|
||||||
if (pkt->size < 0) {
|
if (pkt->size < 0) {
|
||||||
|
@ -111,11 +111,15 @@ static int scanner_receive(int fd, void *privdata)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (plugins_parse(pkt)) {
|
switch (plugins_parse(pkt)) {
|
||||||
case PARSE_REJECT:
|
case PARSE_REJECT: {
|
||||||
log_print(LOG_INFO, "scanner_receive(): unknown packet: %s:%d size:%d",
|
char *pkt_str = pkt_print(pkt);
|
||||||
|
log_print(LOG_INFO, "scanner_receive(): unknown packet: %s:%d size:%d\n%s",
|
||||||
inet_ntoa(pkt->addr.sin_addr),
|
inet_ntoa(pkt->addr.sin_addr),
|
||||||
ntohs(pkt->addr.sin_port),
|
ntohs(pkt->addr.sin_port),
|
||||||
pkt->size);
|
pkt->size, pkt_str);
|
||||||
|
|
||||||
|
free(pkt_str);
|
||||||
|
}
|
||||||
|
|
||||||
case PARSE_ACCEPT:
|
case PARSE_ACCEPT:
|
||||||
free(pkt);
|
free(pkt);
|
||||||
|
|
6
server.c
6
server.c
|
@ -34,8 +34,8 @@
|
||||||
#include "netpkt.h"
|
#include "netpkt.h"
|
||||||
#include "gamelist.h"
|
#include "gamelist.h"
|
||||||
|
|
||||||
#define HLSW_HEADER "\xFF\xFF\xFF\xFFHLSWLANSEARCH\x00"
|
#define HLSW_HEADER "\xFF\xFF\xFF\xFFHLSWLANSEARCH"
|
||||||
#define HLSW_HEADER_LEN 0x12
|
#define HLSW_HEADER_LEN 0x11
|
||||||
#define HLSW_ENTRY_LEN 10
|
#define HLSW_ENTRY_LEN 10
|
||||||
#define MAX_PKT_LEN (HLSW_HEADER_LEN + HLSW_ENTRY_LEN * 140)
|
#define MAX_PKT_LEN (HLSW_HEADER_LEN + HLSW_ENTRY_LEN * 140)
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ static int server_handler(int fd, void *privdata)
|
||||||
struct sockaddr_in client;
|
struct sockaddr_in client;
|
||||||
unsigned char buf[32];
|
unsigned char buf[32];
|
||||||
|
|
||||||
int i = sizeof(client);
|
unsigned int i = sizeof(client);
|
||||||
int ret = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr *)&client, &i);
|
int ret = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr *)&client, &i);
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
log_print(LOG_WARN, "server_handler(): recvfrom()");
|
log_print(LOG_WARN, "server_handler(): recvfrom()");
|
||||||
|
|
Loading…
Reference in New Issue