Skip to content

Commit fbea846

Browse files
author
mips
committed
* Added more information in error messages
* XTEA key now is random
1 parent 2b17ea6 commit fbea846

File tree

2 files changed

+59
-30
lines changed

2 files changed

+59
-30
lines changed

commands.cpp

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ int setServer(char* params)
4040
{
4141
char host[256];
4242
int port;
43+
if(!params){
44+
std::cerr << "[server] missing parameters" << std::endl;
45+
return -1;
46+
}
4347
if(strlen(params) > 255){
4448
std::cerr << "[server] too long host and port" << std::endl;
4549
return -1;
@@ -63,6 +67,11 @@ int cmdConnect(char* params)
6367
return -1;
6468
}
6569

70+
if(!params){
71+
std::cerr << "[connect] missing parameters" << std::endl;
72+
return -1;
73+
}
74+
6675
char password[128];
6776
if(strlen(params) > 127){
6877
std::cerr << "[connect] too long password" << std::endl;
@@ -83,7 +92,7 @@ int cmdConnect(char* params)
8392
}
8493
else{
8594
closesocket(g_socket);
86-
std::cerr << "[connect] can not resolve server host" << std::endl;
95+
std::cerr << "[connect] can not resolve server: " << serverHost << " - " << WSAGetLastError() << std::endl;
8796
return -1;
8897
}
8998
}
@@ -95,7 +104,7 @@ int cmdConnect(char* params)
95104

96105
if(connect(g_socket, (SOCKADDR*)&serveraddr, sizeof(serveraddr)) == SOCKET_ERROR){
97106
closesocket(g_socket);
98-
std::cerr << "[connect] can not connect to server " << serverHost << std::endl;
107+
std::cerr << "[connect] can not connect to server: " << serverHost << " - " << WSAGetLastError() << std::endl;
99108
return -1;
100109
}
101110
std::cout << "Connected to " << serverHost << std::endl;
@@ -104,22 +113,22 @@ int cmdConnect(char* params)
104113
msg.AddByte(0xFE);
105114
if(!msg.WriteToSocket(g_socket)){
106115
closesocket(g_socket);
107-
std::cerr << "[connect] error while sending first byte"<< std::endl;
116+
std::cerr << "[connect] error while sending first byte - " << WSAGetLastError() << std::endl;
108117
return -1;
109118
}
110119
msg.Reset();
111120
//read server hello
112121

113122
if(!msg.ReadFromSocket(g_socket)){
114123
closesocket(g_socket);
115-
std::cerr << "[connect] error while reading hello"<< std::endl;
124+
std::cerr << "[connect] error while reading hello - " << WSAGetLastError() << std::endl;
116125
return -1;
117126
}
118127

119128
char byte = msg.GetByte();
120129
if(byte != AP_MSG_HELLO){
121130
closesocket(g_socket);
122-
std::cerr << "[connect] no valid server hello"<< std::endl;
131+
std::cerr << "[connect] no valid server hello" << std::endl;
123132
return -1;
124133
}
125134
msg.GetU32();
@@ -150,7 +159,7 @@ int cmdConnect(char* params)
150159

151160
if(!sendMsg(msg)){
152161
closesocket(g_socket);
153-
std::cerr << "[connect] error while getting public key"<< std::endl;
162+
std::cerr << "[connect] error while getting public key" << std::endl;
154163
return -1;
155164
}
156165

@@ -187,7 +196,7 @@ int cmdConnect(char* params)
187196

188197
uint32_t random_key[32];
189198
for(unsigned int i = 0; i < 32; ++i){
190-
random_key[i] = 0x1111112;
199+
random_key[i] = rand() << 16 ^ rand();
191200
}
192201

193202
msg.setRSAInstance(RSA::getInstance());
@@ -207,7 +216,7 @@ int cmdConnect(char* params)
207216

208217
if(!sendMsg(msg, random_key)){
209218
closesocket(g_socket);
210-
std::cerr << "[connect] error while sending private key"<< std::endl;
219+
std::cerr << "[connect] error while sending private key" << std::endl;
211220
return -1;
212221
}
213222

@@ -230,7 +239,7 @@ int cmdConnect(char* params)
230239
}
231240
else{
232241
closesocket(g_socket);
233-
std::cerr << "[connect] can not initiate encryption"<< std::endl;
242+
std::cerr << "[connect] can not initiate encryption" << std::endl;
234243
return -1;
235244
}
236245
}
@@ -244,7 +253,7 @@ int cmdConnect(char* params)
244253

245254
if(!sendMsg(msg)){
246255
closesocket(g_socket);
247-
std::cerr << "[connect] error while sending login"<< std::endl;
256+
std::cerr << "[connect] error while sending login" << std::endl;
248257
return -1;
249258
}
250259

@@ -274,9 +283,13 @@ int cmdConnect(char* params)
274283
int cmdDisconnect(char* params)
275284
{
276285
if(g_connected != true){
277-
std::cerr << "[disconnect] no connected"<< std::endl;
286+
std::cerr << "[disconnect] no connected" << std::endl;
278287
return 1;
279288
}
289+
290+
if(params){
291+
std::cerr << "[disconnect] Warning: parameters ignored" << std::endl;
292+
}
280293

281294
closesocket(g_socket);
282295
g_socket = SOCKET_ERROR;
@@ -289,6 +302,11 @@ int cmdDisconnect(char* params)
289302
//sleep 10000
290303
int sleep(char* params)
291304
{
305+
if(!params){
306+
std::cerr << "[sleep] missing parameter" << std::endl;
307+
return -1;
308+
}
309+
292310
int delay;
293311
if(sscanf(params, "%d", &delay) != 1){
294312
std::cerr << "[sleep] no valid delay" << std::endl;
@@ -305,18 +323,18 @@ int sleep(char* params)
305323
int commandBroadcast(char* params)
306324
{
307325
if(g_connected != true){
308-
std::cerr << "[broadcast] no connected"<< std::endl;
326+
std::cerr << "[broadcast] no connected" << std::endl;
309327
return -1;
310328
}
311329

312330
if(!params){
313-
std::cerr << "[broadcast] no params"<< std::endl;
331+
std::cerr << "[broadcast] missing parameters" << std::endl;
314332
return -1;
315333
}
316334

317335
long n = strlen(params);
318336
if(n > 127 || n == 0){
319-
std::cerr << "[broadcast] no valid params"<< std::endl;
337+
std::cerr << "[broadcast] no valid parameters" << std::endl;
320338
return -1;
321339
}
322340

@@ -326,7 +344,7 @@ int commandBroadcast(char* params)
326344
std::cout << "Broadcast: " << message << std::endl;
327345

328346
if(!sendCommand(CMD_BROADCAST, message)){
329-
std::cerr << "[broadcast] error sending broadcast"<< std::endl;
347+
std::cerr << "[broadcast] error sending broadcast" << std::endl;
330348
return -1;
331349
}
332350

@@ -337,19 +355,18 @@ int commandBroadcast(char* params)
337355
int commandCloseServer(char* params)
338356
{
339357
if(g_connected != true){
340-
std::cerr << "[closeserver] no connected"<< std::endl;
358+
std::cerr << "[closeserver] no connected" << std::endl;
341359
return -1;
342360
}
343361

344362
if(params){
345-
std::cerr << "[closeserver] Warning: params ignored"<< std::endl;
363+
std::cerr << "[closeserver] Warning: parameters ignored" << std::endl;
346364
}
347365

348-
349366
std::cout << "Closing server." << std::endl;
350367

351368
if(!sendCommand(CMD_CLOSE_SERVER, NULL)){
352-
std::cerr << "[closeserver] error closing server"<< std::endl;
369+
std::cerr << "[closeserver] error closing server" << std::endl;
353370
return -1;
354371
}
355372

@@ -360,19 +377,18 @@ int commandCloseServer(char* params)
360377
int commandShutdown(char* params)
361378
{
362379
if(g_connected != true){
363-
std::cerr << "[shutdown] no connected"<< std::endl;
380+
std::cerr << "[shutdown] no connected" << std::endl;
364381
return -1;
365382
}
366383

367384
if(params){
368-
std::cerr << "[shutdown] Warning: params ignored"<< std::endl;
385+
std::cerr << "[shutdown] Warning: parameters ignored" << std::endl;
369386
}
370387

371-
372388
std::cout << "Server shutdown." << std::endl;
373389

374390
if(!sendCommand(CMD_SHUTDOWN_SERVER, NULL)){
375-
std::cerr << "[shutdown] error in server shutdown"<< std::endl;
391+
std::cerr << "[shutdown] error in server shutdown" << std::endl;
376392
return -1;
377393
}
378394

@@ -384,21 +400,25 @@ int commandShutdown(char* params)
384400
int ping(char* params)
385401
{
386402
if(g_connected != true){
387-
std::cerr << "[ping] no connected"<< std::endl;
403+
std::cerr << "[ping] no connected" << std::endl;
388404
return -1;
389405
}
406+
407+
if(params){
408+
std::cerr << "[ping] Warning: parameters ignored" << std::endl;
409+
}
390410

391411
NetworkMessage msg;
392412
msg.AddByte(AP_MSG_PING);
393413

394414
if(!sendMsg(msg)){
395-
std::cerr << "[ping] error sending ping"<< std::endl;
415+
std::cerr << "[ping] error sending ping" << std::endl;
396416
return -1;
397417
}
398418

399419
char ret_code = msg.GetByte();
400420
if(ret_code != AP_MSG_PING_OK){
401-
std::cerr << "[ping] no valid ping"<< std::endl;
421+
std::cerr << "[ping] no valid ping" << std::endl;
402422
return -1;
403423
}
404424
return 1;
@@ -437,7 +457,7 @@ bool sendCommand(char commandByte, char* command)
437457
return false;
438458
}
439459
else{
440-
std::cerr << "[sendCommand] no known return code"<< std::endl;
460+
std::cerr << "[sendCommand] no known return code" << std::endl;
441461
return false;
442462
}
443463
}
@@ -455,7 +475,7 @@ bool sendMsg(NetworkMessage& msg, uint32_t* key /*= NULL*/)
455475
bool ret = true;
456476

457477
if(!msg.WriteToSocket(g_socket)){
458-
std::cerr << "[sendMsg] error while sending" << std::endl;
478+
std::cerr << "[sendMsg] error while sending - " << WSAGetLastError() << std::endl;
459479
ret = false;
460480
}
461481

@@ -467,7 +487,7 @@ bool sendMsg(NetworkMessage& msg, uint32_t* key /*= NULL*/)
467487
msg.setEncryptionKey(key);
468488
}
469489
if(!msg.ReadFromSocket(g_socket)){
470-
std::cerr << "[sendMsg] error while reading" << std::endl;
490+
std::cerr << "[sendMsg] error while reading - " << WSAGetLastError() << std::endl;
471491
ret = false;
472492
}
473493
else{

main.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,17 @@ int main()
5454
if(WSAStartup(MAKEWORD(2,2), &wsd) != 0){
5555
return 1;
5656
}
57-
#endif
57+
58+
LARGE_INTEGER counter;
59+
QueryPerformanceCounter(&counter);
60+
srand(counter.LowPart);
61+
62+
#else
5863

64+
srand(time(NULL));
65+
#endif
66+
67+
5968
disconnect_function = getCommand("disconnect", true);
6069
ping_function = getCommand("ping", true);
6170

0 commit comments

Comments
 (0)