29#include <configfile.h>
46 struct hostent *serverStruct;
47 struct in_addr *serverNode;
51 ERRMSG(
"Can't resolve NULL");
56 return ( ntohl(inet_addr(
Server)) );
58 strcpy(serverName,
Server);
60 serverStruct = gethostbyname(
Server);
61 if (serverStruct ==
NULL)
66 serverNode = (
struct in_addr *) serverStruct->h_addr;
67 return ( ntohl(serverNode->s_addr) );
72 cout <<
"Usage: " << prog <<
" <config file>" << endl;
76int main(
int argc,
char **argv)
84 if ((conf = fopen(
"manglertest.cfg",
"r")) ==
NULL) {
85 cout <<
"Cannot open mangler.cfg for reading." << endl;
91 else if( argc == 2 && (strcmp(argv[1],
"help") == 0 || strcmp(argv[1],
"?") == 0 ||
92 strcmp(argv[1],
"-h") == 0) )
97 if ((conf = fopen(argv[1],
"r")) ==
NULL) {
98 cout <<
"Cannot open " << argv[1] <<
" for reading." << endl;
107 Wstring output_file(
"manglertest.log");
108 config.
getString(
"LOGFILE", output_file);
110 backup_file = output_file;
111 backup_file +=
".bak";
112 rename(output_file.
get(),backup_file.
get());
124 if (htonl(0x12345678) == 0x12345678) {
131 WORD verReq = MAKEWORD(2, 2);
134 int err = WSAStartup(verReq, &wsadata);
136 ERRMSG(
"Winsock Init failed.");
140 if ((LOBYTE(wsadata.wVersion) != 2) || (HIBYTE(wsadata.wVersion) !=2)) {
141 ERRMSG(
"Winsock DLL is not 2.2");
143 ERRMSG(
"Winsock Init failed.");
146 INFMSG(
"Winsock Init done.");
155 config.
getInt(
"MANGLERPORT", port);
157 int localport = 4444;
158 config.
getInt(
"CLIENTPORT", localport);
160 DBGMSG(
"Bind returned " << retval);
164 INFMSG(
"sizeof(packet) == " << packet_size);
166 unsigned char buf[packet_size];
167 memset(buf, 0x44, packet_size);
168 struct sockaddr_in addr;
171 config.
getInt(
"BLITZ", doBlitz);
174 INFMSG(
"Requsting port blitz");
177 unsigned char *theAddr;
179 unsigned long server_addr;
180 Wstring manglername =
"localhost";
181 config.
getString(
"MANGLERIP", manglername);
185 ERRMSG(
"Cannot resolve mangler server IP");
191 packet->packetID = 9999;
193 packet->
magic = htons((
unsigned short)0xf00d);
195 DBGMSG(
"Writing to " << manglername.
get() <<
":" << port);
196 udp.
Write(buf,packet_size,server_addr, 4321);
198 retval = udp.
Wait(5, 0, fdset);
201 DBGMSG(
"Wait returned " << retval);
202 retval = udp.
Read(buf, packet_size, &addr);
205 theAddr = (
unsigned char *)&(addr.sin_addr.s_addr);
206 if (retval != packet_size)
208 WRNMSG(
"Recieved mis-sized packet (" << retval <<
" bytes) from " << theAddr[0] <<
"." << theAddr[1] <<
"." << theAddr[2] <<
"." << theAddr[3] <<
":" << addr.sin_port);
218 else if (packetCommand != 13)
220 WRNMSG(
"Returned packet had command type " << packetCommand);
225 unsigned short retPort;
231 DBGMSG(
"Saw " << addr[0] <<
"." << addr[1] <<
"." << addr[2] <<
"." << addr[3] <<
":" << retPort);
bit8 getInt(IN Wstring &key, OUT sint32 &value)
bit8 readFile(IN FILE *config)
bit8 getString(IN Wstring &key, OUT Wstring &value)
static int setAllStreams(OutputDevice *device)
Int Bind(UnsignedInt IP, UnsignedShort port)
Int Write(const unsigned char *msg, UnsignedInt len, UnsignedInt IP, UnsignedShort port)
Int Read(unsigned char *msg, UnsignedInt len, sockaddr_in *from)
int Wait(sint32 sec, sint32 usec, fd_set &returnSet)
void DisplayHelp(const char *prog)
unsigned long ResolveIP(char *Server)
OutputDevice * output_device
unsigned char MyMangledAddress[4]
unsigned short MyMangledPortNumber
unsigned char NetCommandType