diff options
-rw-r--r-- | core/DHT.c | 23 | ||||
-rw-r--r-- | testing/rect.py | 44 | ||||
-rw-r--r-- | testing/toxic/dhtstatus.c | 4 |
3 files changed, 25 insertions, 46 deletions
@@ -319,6 +319,28 @@ static int replace_bad( Client_data * list, | |||
319 | 319 | ||
320 | return 1; | 320 | return 1; |
321 | } | 321 | } |
322 | /*Sort the list. It will be sorted from furthest to closest. | ||
323 | TODO: this is innefficient and needs to be optimized.*/ | ||
324 | static void sort_list(Client_data *list, uint32_t length, uint8_t *comp_client_id) | ||
325 | { | ||
326 | if(length == 0) | ||
327 | return; | ||
328 | uint32_t i, count; | ||
329 | while(1) { | ||
330 | count = 0; | ||
331 | for(i = 0; i < (length - 1); ++i) { | ||
332 | if(id_closest(comp_client_id, list[i].client_id, list[i + 1].client_id) == 1) { | ||
333 | Client_data temp = list[i + 1]; | ||
334 | list[i + 1] = list[i]; | ||
335 | list[i] = temp; | ||
336 | ++count; | ||
337 | } | ||
338 | } | ||
339 | if(count == 0) | ||
340 | return; | ||
341 | } | ||
342 | } | ||
343 | |||
322 | 344 | ||
323 | /* replace the first good node that is further to the comp_client_id than that of the client_id in the list */ | 345 | /* replace the first good node that is further to the comp_client_id than that of the client_id in the list */ |
324 | static int replace_good( Client_data * list, | 346 | static int replace_good( Client_data * list, |
@@ -329,6 +351,7 @@ static int replace_good( Client_data * list, | |||
329 | { | 351 | { |
330 | uint32_t i; | 352 | uint32_t i; |
331 | uint64_t temp_time = unix_time(); | 353 | uint64_t temp_time = unix_time(); |
354 | sort_list(list, length, comp_client_id); | ||
332 | 355 | ||
333 | for(i = 0; i < length; ++i) | 356 | for(i = 0; i < length; ++i) |
334 | if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) { | 357 | if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) { |
diff --git a/testing/rect.py b/testing/rect.py deleted file mode 100644 index 05f0abc4..00000000 --- a/testing/rect.py +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | #basic python UDP script | ||
2 | #for testing only | ||
3 | import socket | ||
4 | import random | ||
5 | |||
6 | UDP_IP = "127.0.0.1" | ||
7 | UDP_PORT = 5004 | ||
8 | |||
9 | sock = socket.socket(socket.AF_INET, # Internet | ||
10 | socket.SOCK_DGRAM) # UDP | ||
11 | sock.bind((UDP_IP, UDP_PORT)) | ||
12 | |||
13 | #our client_id | ||
14 | client_id = str(''.join(random.choice("abcdefghijklmnopqrstuvwxyz") for x in range(32))) | ||
15 | |||
16 | print client_id | ||
17 | a = 1; | ||
18 | #send ping request to our DHT on localhost. | ||
19 | sock.sendto("0012345678".decode("hex") + client_id, ('127.0.0.1', 33445)) | ||
20 | |||
21 | #print all packets received and respond to ping requests properly | ||
22 | while True: | ||
23 | data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes | ||
24 | print "received message:", data.encode('hex'), " From:", addr | ||
25 | #if we receive a ping request. | ||
26 | print data[0].encode('hex') | ||
27 | if data[0] == "00".decode('hex'): | ||
28 | print "Sending ping resp" | ||
29 | sock.sendto("01".decode('hex') + data[1:5] + client_id, addr) | ||
30 | |||
31 | #if we receive a get_nodes request. | ||
32 | if data[0] == "02".decode('hex'): | ||
33 | print "Sending getn resp" | ||
34 | #send send nodes packet with a couple 127.0.0.1 ips and ports. | ||
35 | #127.0.0.1:5000, 127.0.0.1:5001, 127.0.0.1:5002 | ||
36 | sock.sendto("03".decode('hex') + data[1:5] + client_id + ("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F00000113880000".decode('hex') + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F00000113890000".decode('hex') + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F000001138A0000".decode('hex')), addr) | ||
37 | |||
38 | if data[0] == "10".decode('hex'): | ||
39 | print "Sending handshake resp" | ||
40 | sock.sendto("10".decode('hex') + data[1:5] + client_id[:4], addr) | ||
41 | if data[0] == "11".decode('hex'): | ||
42 | print "Sending SYNC resp" | ||
43 | a+=1 | ||
44 | sock.sendto("11".decode('hex') + chr(a) + data[1:9], addr) | ||
diff --git a/testing/toxic/dhtstatus.c b/testing/toxic/dhtstatus.c index 66268900..e026a173 100644 --- a/testing/toxic/dhtstatus.c +++ b/testing/toxic/dhtstatus.c | |||
@@ -43,13 +43,13 @@ static void dhtstatus_onDraw(ToxWindow *self) | |||
43 | uint32_t i, j; | 43 | uint32_t i, j; |
44 | ipbuf ipbuf; | 44 | ipbuf ipbuf; |
45 | wprintw(self->window,"\n%llu ______________________ CLOSE LIST ________________________ ___ IP ADDR ___ _PRT_ LST PNG ____ SELF ____ _PRT_ LST\n\n", now); | 45 | wprintw(self->window,"\n%llu ______________________ CLOSE LIST ________________________ ___ IP ADDR ___ _PRT_ LST PNG ____ SELF ____ _PRT_ LST\n\n", now); |
46 | for(i = 0; i < CLIENT_ID_SIZE; i++) { | 46 | for(i = 0; i < 32; i++) { /*Number of nodes in closelist*/ |
47 | Client_data * client = close_clientlist + i; | 47 | Client_data * client = close_clientlist + i; |
48 | if (i == num_selected) wattron(self->window, COLOR_PAIR(3)); | 48 | if (i == num_selected) wattron(self->window, COLOR_PAIR(3)); |
49 | wprintw(self->window,"[%02i] ", i); | 49 | wprintw(self->window,"[%02i] ", i); |
50 | uint16_t port = ntohs(client->ip_port.port); | 50 | uint16_t port = ntohs(client->ip_port.port); |
51 | if(port) { | 51 | if(port) { |
52 | for(j = 0; j < 32; j++) | 52 | for(j = 0; j < CLIENT_ID_SIZE; j++) |
53 | wprintw(self->window, "%02hhx", client->client_id[j]); | 53 | wprintw(self->window, "%02hhx", client->client_id[j]); |
54 | 54 | ||
55 | printip(ipbuf, client->ip_port.ip); | 55 | printip(ipbuf, client->ip_port.ip); |