gdr / tuntox (public) (License: GPLv3) (since 2017-01-24) (hash sha1)
Tunnel TCP connections over the Tox protocol
List of commits:
Subject Hash Author Date (UTC)
Fix use-after-free in server code (SIGBUS) 3b5f9f9a42c637c4e699c0278318b97d277722af GDR! 2017-10-28 12:39:35
Update BUILD.md 5ee6f6f015d4b462df4bdd11a2f64d2fbf2369c1 GDR! 2017-10-28 11:18:01
Travis - fix apt-get for ubuntu 14.04 83706eb59257fa069353ef2a2f2c12ab45d7c3f2 GDR! 2017-10-20 20:54:23
Rename -P to -W for consistency with SSH client a2ad73a5b544459a3d0ee8c7e408ac058c040dc0 GDR! 2017-10-20 20:53:03
Bump versions and new deps in Travis 77177d357b5bcb2e7fedabcceab3df085b73e9f0 GDR! 2017-10-20 20:50:10
Make build instructions more clear about dependencies 55271d0f76bcb15cb70c50ac58c4cc1d865be459 your_name_here 2017-10-20 20:38:43
Makefile compatible with c-toxcore 0.1.10 00e059f854254cc7bc9722e3cc4f8450398f3ccc GDR! 2017-10-20 20:31:46
New bootstrap nodes 5339a624aba30799494c876a970d1d9fd010ec1b GDR! 2017-10-20 20:03:06
Rename rtmp to more readable temp_rule d41a65bc350a151075dba23729727d8f44cb76ce GDR! 2017-10-20 19:47:11
Fix warning - control reaches end of non-void function e36cd56347fd88d4943faf3edbbdefc72435db23 GDR! 2017-10-20 19:41:28
Clarify PSK 8498602e68a73b56675d1a022f9f84aa3d504b9b GDR! 2017-06-28 13:42:56
Close Issue #42 c1a04ae71aa9dd7a590035326d5dabac31645fca Andrzej Godziuk 2017-05-04 10:17:49
Configurable TCP and UDP listen ports 3acdcaaa65badbf3feb7d5438fdf1f66e1faa955 Andrzej Godziuk 2017-04-19 20:30:10
Fix Travis build 38678c2c0a3c03acece160a05a771dd10ee20277 Andrzej Godziuk 2017-04-19 12:09:33
Fix Travis build f12ed68c482d08681b6be2e2045c1840a52d1e97 Andrzej Godziuk 2017-04-19 12:03:22
Fix Travis build 1931c1218b24612724c2da679199c786e6a30652 Andrzej Godziuk 2017-04-19 11:52:34
Update VPN.md 8bacf02a4bd50eaded5d9c86fc8b7ff103d16341 GDR! 2017-04-18 16:40:38
Improve data transfer speed and latency fe1b53fd47ffd5a527d9e072ad179028e0330d2c ValdikSS 2017-04-16 18:19:07
tokssh: add missing secret option to cmd line 🤦 65243979ba7216b32045c5da98c98f2686a97f7a fabrixxm 2017-04-07 19:11:12
tokssh: shared secret support,fix no user cmd line d59b35d00bf2da3eb185043bba08acb3acc7c977 fabrixxm 2017-04-07 19:07:03
Commit 3b5f9f9a42c637c4e699c0278318b97d277722af - Fix use-after-free in server code (SIGBUS)
Author: GDR!
Author date (UTC): 2017-10-28 12:39
Committer name: GDR!
Committer date (UTC): 2017-10-28 12:39
Parent(s): 5ee6f6f015d4b462df4bdd11a2f64d2fbf2369c1
Signer:
Signing key: 9BEBA5223DB93046
Signing status: E
Tree: d12b1fd81244feccdae08289e8e5a673a607409d
File Lines added Lines deleted
Makefile 2 2
main.c 39 8
main.h 5 0
tox_bootstrap.h 70 70
File Makefile changed (mode: 100644) (index 141af4f..a9e7080)
1 1 SOURCES = $(wildcard *.c) SOURCES = $(wildcard *.c)
2 2 DEPS=libtoxcore libsodium libevent_pthreads DEPS=libtoxcore libsodium libevent_pthreads
3 3 CC=gcc CC=gcc
4 CFLAGS=-g -Wall #-std=c99
4 CFLAGS=-g -O0 -Wall #-std=c99
5 5 CFLAGS += $(shell pkg-config --cflags $(DEPS)) CFLAGS += $(shell pkg-config --cflags $(DEPS))
6 LDFLAGS=-g -pthread -lm -static -lrt
6 LDFLAGS=-g -O0 -pthread -lm -static -lrt
7 7 LDFLAGS += $(shell pkg-config --static --libs $(DEPS)) LDFLAGS += $(shell pkg-config --static --libs $(DEPS))
8 8 DSO_LDFLAGS=-g -pthread -lm -lrt DSO_LDFLAGS=-g -pthread -lm -lrt
9 9 DSO_LDFLAGS += $(shell pkg-config --libs $(DEPS)) DSO_LDFLAGS += $(shell pkg-config --libs $(DEPS))
File main.c changed (mode: 100644) (index 0d2e5e8..17a48e0)
... ... fd_set master_server_fds;
71 71 /* We keep two hash tables: one indexed by sockfd and another by "connection id" */ /* We keep two hash tables: one indexed by sockfd and another by "connection id" */
72 72 tunnel *by_id = NULL; tunnel *by_id = NULL;
73 73
74 /* Tunnels need to be delete safely, outside FD_ISSET polling */
75 /* See: tunnel_queue_delete() */
76 tunnel_list *tunnels_to_delete = NULL;
77
74 78 /* Highest used fd + 1 for select() */ /* Highest used fd + 1 for select() */
75 79 int select_nfds = 4; int select_nfds = 4;
76 80
 
... ... tunnel *tunnel_create(int sockfd, int connid, uint32_t friendnumber)
144 148 return t; return t;
145 149 } }
146 150
151 /* Please use tunnel_queue_delete() instead */
147 152 void tunnel_delete(tunnel *t) void tunnel_delete(tunnel *t)
148 153 { {
149 log_printf(L_INFO, "Deleting tunnel #%d\n", t->connid);
154 log_printf(L_INFO, "Deleting tunnel #%d ptr %p\n", t->connid, t);
150 155 if(t->sockfd) if(t->sockfd)
151 156 { {
152 157 close(t->sockfd); close(t->sockfd);
 
... ... void tunnel_delete(tunnel *t)
156 161 free(t); free(t);
157 162 } }
158 163
164 void tunnel_queue_delete(tunnel *t)
165 {
166 tunnel_list *tunnel_list_entry = NULL;
167
168 log_printf(L_DEBUG2, "Queued deleting tunnel #%d ptr %p\n", t->connid, t);
169
170 tunnel_list_entry = calloc(sizeof(tunnel_list), 1);
171 tunnel_list_entry->tun = t;
172 LL_APPEND(tunnels_to_delete, tunnel_list_entry);
173 }
174
159 175 /* bootstrap to dht with bootstrap_nodes */ /* bootstrap to dht with bootstrap_nodes */
160 176 /* From uTox/tox.c */ /* From uTox/tox.c */
161 177 static void do_bootstrap(Tox *tox) static void do_bootstrap(Tox *tox)
 
... ... int send_frame(protocol_frame *frame, uint8_t *data)
342 358
343 359 if(i > 0 && rv >= 0) if(i > 0 && rv >= 0)
344 360 { {
345 log_printf(L_DEBUG, "Packet succeeded at try %d\n", try);
361 log_printf(L_DEBUG, "Packet succeeded at try %d (friend %d tunnel %d)\n", try, frame->friendnumber, frame->connid);
346 362 } }
347 363
348 364 return rv; return rv;
 
... ... int handle_client_tcp_fin_frame(protocol_frame *rcvd_frame)
533 549 return -1; return -1;
534 550 } }
535 551
536 tunnel_delete(tun);
552 log_printf(L_DEBUG2, "Deleting tunnel #%d (%p) in handle_client_tcp_fin_frame(), socket %d", rcvd_frame->connid, tun, tun->sockfd);
553 tunnel_queue_delete(tun);
537 554
538 555 return 0; return 0;
539 556 } }
 
... ... int do_server_loop()
920 937 int select_rv = 0; int select_rv = 0;
921 938 sent_data = 0; sent_data = 0;
922 939
923 /* Let tox do its stuff */
924 tox_iterate(tox, NULL);
940 /* Let tox do its stuff */
941 tox_iterate(tox, NULL);
925 942
926 943 /* Get the desired sleep time, used in select() later */ /* Get the desired sleep time, used in select() later */
927 944 tox_do_interval_ms = tox_iteration_interval(tox); tox_do_interval_ms = tox_iteration_interval(tox);
 
... ... int do_server_loop()
947 964
948 965 fds = master_server_fds; fds = master_server_fds;
949 966
950 /* Poll for data from our client connection */
951 select_rv = select(select_nfds, &fds, NULL, NULL, &tv);
967 /* Poll for data from our client connection */
968 select_rv = select(select_nfds, &fds, NULL, NULL, &tv);
952 969 if(select_rv == -1 || select_rv == 0) if(select_rv == -1 || select_rv == 0)
953 970 { {
954 971 if(select_rv == -1) if(select_rv == -1)
 
... ... int do_server_loop()
963 980 } }
964 981 else else
965 982 { {
983 tunnel_list *tunnel_list_entry = NULL, *list_tmp = NULL;
984 tmp = NULL;
985 tun = NULL;
986
987 log_printf(L_DEBUG, "Starting tunnel iteration...");
966 988 HASH_ITER(hh, by_id, tun, tmp) HASH_ITER(hh, by_id, tun, tmp)
967 989 { {
990 log_printf(L_DEBUG, "Current tunnel: %p", tun);
968 991 if(FD_ISSET(tun->sockfd, &fds)) if(FD_ISSET(tun->sockfd, &fds))
969 992 { {
970 993 int nbytes = recv(tun->sockfd, int nbytes = recv(tun->sockfd,
 
... ... int do_server_loop()
996 1019 send_frame(frame, data); send_frame(frame, data);
997 1020 sent_data = 1; sent_data = 1;
998 1021
999 tunnel_delete(tun);
1022 tunnel_queue_delete(tun);
1000 1023
1001 1024 continue; continue;
1002 1025 } }
 
... ... int do_server_loop()
1015 1038 } }
1016 1039 } }
1017 1040 } }
1041 log_printf(L_DEBUG, "Tunnel iteration done");
1042
1043 LL_FOREACH_SAFE(tunnels_to_delete, tunnel_list_entry, list_tmp)
1044 {
1045 tunnel_delete(tunnel_list_entry->tun);
1046 LL_DELETE(tunnels_to_delete, tunnel_list_entry);
1047 free(tunnel_list_entry);
1048 }
1018 1049 } }
1019 1050
1020 1051 gettimeofday(&tv_end, NULL); gettimeofday(&tv_end, NULL);
File main.h changed (mode: 100644) (index 106525f..90f393e)
... ... typedef struct tunnel_t {
57 57 UT_hash_handle hh; UT_hash_handle hh;
58 58 } tunnel; } tunnel;
59 59
60 typedef struct tunnel_list_t {
61 tunnel *tun;
62 struct tunnel_list_t *next;
63 } tunnel_list;
64
60 65 typedef struct allowed_toxid { typedef struct allowed_toxid {
61 66 uint8_t toxid[TOX_ADDRESS_SIZE]; uint8_t toxid[TOX_ADDRESS_SIZE];
62 67 struct allowed_toxid *next; struct allowed_toxid *next;
File tox_bootstrap.h changed (mode: 100644) (index 0f8d142..88f0fc9)
1 1
2 2 /* /*
3 3 * Generated with generate_tox_bootstrap.py by GDR! * Generated with generate_tox_bootstrap.py by GDR!
4 * from https://nodes.tox.chat/json on 2017-10-20 22:00:19.930069
4 * from https://nodes.tox.chat/json on 2017-10-28 14:39:07.047671
5 5 */ */
6 6 struct bootstrap_node { struct bootstrap_node {
7 7 char *address; char *address;
 
... ... struct bootstrap_node {
235 235 }, },
236 236
237 237 { {
238 "61.230.160.183",
238 "61.230.173.150",
239 239 33445, 33445,
240 240 { {
241 241 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6, 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6,
 
... ... struct bootstrap_node {
297 297 } }
298 298 }, },
299 299
300 {
301 "85.21.144.224",
302 33445,
303 {
304 0x8F, 0x73, 0x8B, 0xBC, 0x8F, 0xA9, 0x39, 0x46, 0x70, 0xBC, 0xAB, 0x14, 0x6C, 0x67, 0xA5, 0x07,
305 0xB9, 0x90, 0x7C, 0x8E, 0x56, 0x4E, 0x28, 0xC2, 0xB5, 0x9B, 0xEB, 0xB2, 0xFF, 0x68, 0x71, 0x1B
306 }
307 },
308
309 300 { {
310 301 "104.207.131.136", "104.207.131.136",
311 302 33445, 33445,
 
... ... struct bootstrap_node {
342 333 } }
343 334 }, },
344 335
336 {
337 "95.215.46.114",
338 33445,
339 {
340 0x58, 0x23, 0xFB, 0x94, 0x7F, 0xF2, 0x4C, 0xF8, 0x3D, 0xDF, 0xAC, 0x3F, 0x3B, 0xAA, 0x18, 0xF9,
341 0x6E, 0xA2, 0x01, 0x8B, 0x16, 0xCC, 0x08, 0x42, 0x9C, 0xB9, 0x7F, 0xA5, 0x02, 0xF4, 0x0C, 0x23
342 }
343 },
344
345 345 { {
346 346 "23.101.75.197", "23.101.75.197",
347 347 33445, 33445,
 
... ... struct bootstrap_node tcp_relays[] = {
446 446
447 447 { {
448 448 "198.46.138.44", "198.46.138.44",
449 3389,
449 33445,
450 450 { {
451 451 0xF4, 0x04, 0xAB, 0xAA, 0x1C, 0x99, 0xA9, 0xD3, 0x7D, 0x61, 0xAB, 0x54, 0x89, 0x8F, 0x56, 0x79, 0xF4, 0x04, 0xAB, 0xAA, 0x1C, 0x99, 0xA9, 0xD3, 0x7D, 0x61, 0xAB, 0x54, 0x89, 0x8F, 0x56, 0x79,
452 452 0x3E, 0x1D, 0xEF, 0x8B, 0xD4, 0x6B, 0x10, 0x38, 0xB9, 0xD8, 0x22, 0xE8, 0x46, 0x0F, 0xAB, 0x67 0x3E, 0x1D, 0xEF, 0x8B, 0xD4, 0x6B, 0x10, 0x38, 0xB9, 0xD8, 0x22, 0xE8, 0x46, 0x0F, 0xAB, 0x67
 
... ... struct bootstrap_node tcp_relays[] = {
455 455
456 456 { {
457 457 "198.46.138.44", "198.46.138.44",
458 33445,
458 3389,
459 459 { {
460 460 0xF4, 0x04, 0xAB, 0xAA, 0x1C, 0x99, 0xA9, 0xD3, 0x7D, 0x61, 0xAB, 0x54, 0x89, 0x8F, 0x56, 0x79, 0xF4, 0x04, 0xAB, 0xAA, 0x1C, 0x99, 0xA9, 0xD3, 0x7D, 0x61, 0xAB, 0x54, 0x89, 0x8F, 0x56, 0x79,
461 461 0x3E, 0x1D, 0xEF, 0x8B, 0xD4, 0x6B, 0x10, 0x38, 0xB9, 0xD8, 0x22, 0xE8, 0x46, 0x0F, 0xAB, 0x67 0x3E, 0x1D, 0xEF, 0x8B, 0xD4, 0x6B, 0x10, 0x38, 0xB9, 0xD8, 0x22, 0xE8, 0x46, 0x0F, 0xAB, 0x67
 
... ... struct bootstrap_node tcp_relays[] = {
509 509
510 510 { {
511 511 "198.98.51.198", "198.98.51.198",
512 3389,
512 33445,
513 513 { {
514 514 0x1D, 0x5A, 0x5F, 0x2F, 0x5D, 0x62, 0x33, 0x05, 0x8B, 0xF0, 0x25, 0x9B, 0x09, 0x62, 0x2F, 0xB4, 0x1D, 0x5A, 0x5F, 0x2F, 0x5D, 0x62, 0x33, 0x05, 0x8B, 0xF0, 0x25, 0x9B, 0x09, 0x62, 0x2F, 0xB4,
515 515 0x0B, 0x48, 0x2E, 0x4F, 0xA0, 0x93, 0x1E, 0xB8, 0xFD, 0x3A, 0xB8, 0xE7, 0xBF, 0x7D, 0xAF, 0x6F 0x0B, 0x48, 0x2E, 0x4F, 0xA0, 0x93, 0x1E, 0xB8, 0xFD, 0x3A, 0xB8, 0xE7, 0xBF, 0x7D, 0xAF, 0x6F
 
... ... struct bootstrap_node tcp_relays[] = {
518 518
519 519 { {
520 520 "198.98.51.198", "198.98.51.198",
521 33445,
521 3389,
522 522 { {
523 523 0x1D, 0x5A, 0x5F, 0x2F, 0x5D, 0x62, 0x33, 0x05, 0x8B, 0xF0, 0x25, 0x9B, 0x09, 0x62, 0x2F, 0xB4, 0x1D, 0x5A, 0x5F, 0x2F, 0x5D, 0x62, 0x33, 0x05, 0x8B, 0xF0, 0x25, 0x9B, 0x09, 0x62, 0x2F, 0xB4,
524 524 0x0B, 0x48, 0x2E, 0x4F, 0xA0, 0x93, 0x1E, 0xB8, 0xFD, 0x3A, 0xB8, 0xE7, 0xBF, 0x7D, 0xAF, 0x6F 0x0B, 0x48, 0x2E, 0x4F, 0xA0, 0x93, 0x1E, 0xB8, 0xFD, 0x3A, 0xB8, 0xE7, 0xBF, 0x7D, 0xAF, 0x6F
 
... ... struct bootstrap_node tcp_relays[] = {
536 536
537 537 { {
538 538 "194.249.212.109", "194.249.212.109",
539 33445,
539 3389,
540 540 { {
541 541 0x3C, 0xEE, 0x1F, 0x05, 0x40, 0x81, 0xE7, 0xA0, 0x11, 0x23, 0x48, 0x83, 0xBC, 0x4F, 0xC3, 0x9F, 0x3C, 0xEE, 0x1F, 0x05, 0x40, 0x81, 0xE7, 0xA0, 0x11, 0x23, 0x48, 0x83, 0xBC, 0x4F, 0xC3, 0x9F,
542 542 0x66, 0x1A, 0x55, 0xB7, 0x36, 0x37, 0xA5, 0xAC, 0x29, 0x3D, 0xDF, 0x12, 0x51, 0xD9, 0x43, 0x2B 0x66, 0x1A, 0x55, 0xB7, 0x36, 0x37, 0xA5, 0xAC, 0x29, 0x3D, 0xDF, 0x12, 0x51, 0xD9, 0x43, 0x2B
 
... ... struct bootstrap_node tcp_relays[] = {
545 545
546 546 { {
547 547 "194.249.212.109", "194.249.212.109",
548 3389,
548 33445,
549 549 { {
550 550 0x3C, 0xEE, 0x1F, 0x05, 0x40, 0x81, 0xE7, 0xA0, 0x11, 0x23, 0x48, 0x83, 0xBC, 0x4F, 0xC3, 0x9F, 0x3C, 0xEE, 0x1F, 0x05, 0x40, 0x81, 0xE7, 0xA0, 0x11, 0x23, 0x48, 0x83, 0xBC, 0x4F, 0xC3, 0x9F,
551 551 0x66, 0x1A, 0x55, 0xB7, 0x36, 0x37, 0xA5, 0xAC, 0x29, 0x3D, 0xDF, 0x12, 0x51, 0xD9, 0x43, 0x2B 0x66, 0x1A, 0x55, 0xB7, 0x36, 0x37, 0xA5, 0xAC, 0x29, 0x3D, 0xDF, 0x12, 0x51, 0xD9, 0x43, 0x2B
 
... ... struct bootstrap_node tcp_relays[] = {
554 554
555 555 { {
556 556 "185.25.116.107", "185.25.116.107",
557 33445,
557 3389,
558 558 { {
559 559 0xDA, 0x4E, 0x4E, 0xD4, 0xB6, 0x97, 0xF2, 0xE9, 0xB0, 0x00, 0xEE, 0xFE, 0x3A, 0x34, 0xB5, 0x54, 0xDA, 0x4E, 0x4E, 0xD4, 0xB6, 0x97, 0xF2, 0xE9, 0xB0, 0x00, 0xEE, 0xFE, 0x3A, 0x34, 0xB5, 0x54,
560 560 0xAC, 0xD3, 0xF4, 0x5F, 0x5C, 0x96, 0xEA, 0xEA, 0x25, 0x16, 0xDD, 0x7F, 0xF9, 0xAF, 0x7B, 0x43 0xAC, 0xD3, 0xF4, 0x5F, 0x5C, 0x96, 0xEA, 0xEA, 0x25, 0x16, 0xDD, 0x7F, 0xF9, 0xAF, 0x7B, 0x43
 
... ... struct bootstrap_node tcp_relays[] = {
563 563
564 564 { {
565 565 "185.25.116.107", "185.25.116.107",
566 3389,
566 33445,
567 567 { {
568 568 0xDA, 0x4E, 0x4E, 0xD4, 0xB6, 0x97, 0xF2, 0xE9, 0xB0, 0x00, 0xEE, 0xFE, 0x3A, 0x34, 0xB5, 0x54, 0xDA, 0x4E, 0x4E, 0xD4, 0xB6, 0x97, 0xF2, 0xE9, 0xB0, 0x00, 0xEE, 0xFE, 0x3A, 0x34, 0xB5, 0x54,
569 569 0xAC, 0xD3, 0xF4, 0x5F, 0x5C, 0x96, 0xEA, 0xEA, 0x25, 0x16, 0xDD, 0x7F, 0xF9, 0xAF, 0x7B, 0x43 0xAC, 0xD3, 0xF4, 0x5F, 0x5C, 0x96, 0xEA, 0xEA, 0x25, 0x16, 0xDD, 0x7F, 0xF9, 0xAF, 0x7B, 0x43
 
... ... struct bootstrap_node tcp_relays[] = {
572 572
573 573 { {
574 574 "5.189.176.217", "5.189.176.217",
575 33445,
575 5190,
576 576 { {
577 577 0x2B, 0x21, 0x37, 0xE0, 0x94, 0xF7, 0x43, 0xAC, 0x8B, 0xD4, 0x46, 0x52, 0xC5, 0x5F, 0x41, 0xDF, 0x2B, 0x21, 0x37, 0xE0, 0x94, 0xF7, 0x43, 0xAC, 0x8B, 0xD4, 0x46, 0x52, 0xC5, 0x5F, 0x41, 0xDF,
578 578 0xAC, 0xC5, 0x02, 0xF1, 0x25, 0xE9, 0x9E, 0x4F, 0xE2, 0x4D, 0x40, 0x53, 0x74, 0x89, 0xE3, 0x2F 0xAC, 0xC5, 0x02, 0xF1, 0x25, 0xE9, 0x9E, 0x4F, 0xE2, 0x4D, 0x40, 0x53, 0x74, 0x89, 0xE3, 0x2F
 
... ... struct bootstrap_node tcp_relays[] = {
590 590
591 591 { {
592 592 "5.189.176.217", "5.189.176.217",
593 5190,
593 33445,
594 594 { {
595 595 0x2B, 0x21, 0x37, 0xE0, 0x94, 0xF7, 0x43, 0xAC, 0x8B, 0xD4, 0x46, 0x52, 0xC5, 0x5F, 0x41, 0xDF, 0x2B, 0x21, 0x37, 0xE0, 0x94, 0xF7, 0x43, 0xAC, 0x8B, 0xD4, 0x46, 0x52, 0xC5, 0x5F, 0x41, 0xDF,
596 596 0xAC, 0xC5, 0x02, 0xF1, 0x25, 0xE9, 0x9E, 0x4F, 0xE2, 0x4D, 0x40, 0x53, 0x74, 0x89, 0xE3, 0x2F 0xAC, 0xC5, 0x02, 0xF1, 0x25, 0xE9, 0x9E, 0x4F, 0xE2, 0x4D, 0x40, 0x53, 0x74, 0x89, 0xE3, 0x2F
 
... ... struct bootstrap_node tcp_relays[] = {
599 599
600 600 { {
601 601 "217.182.143.254", "217.182.143.254",
602 443,
602 33445,
603 603 { {
604 604 0x7A, 0xED, 0x21, 0xF9, 0x4D, 0x82, 0xB0, 0x57, 0x74, 0xF6, 0x97, 0xB2, 0x09, 0x62, 0x8C, 0xD5, 0x7A, 0xED, 0x21, 0xF9, 0x4D, 0x82, 0xB0, 0x57, 0x74, 0xF6, 0x97, 0xB2, 0x09, 0x62, 0x8C, 0xD5,
605 605 0xA9, 0xAD, 0x17, 0xE0, 0xC0, 0x73, 0xD9, 0x32, 0x90, 0x76, 0xA4, 0xC2, 0x8E, 0xD2, 0x81, 0x47 0xA9, 0xAD, 0x17, 0xE0, 0xC0, 0x73, 0xD9, 0x32, 0x90, 0x76, 0xA4, 0xC2, 0x8E, 0xD2, 0x81, 0x47
 
... ... struct bootstrap_node tcp_relays[] = {
617 617
618 618 { {
619 619 "217.182.143.254", "217.182.143.254",
620 33445,
620 443,
621 621 { {
622 622 0x7A, 0xED, 0x21, 0xF9, 0x4D, 0x82, 0xB0, 0x57, 0x74, 0xF6, 0x97, 0xB2, 0x09, 0x62, 0x8C, 0xD5, 0x7A, 0xED, 0x21, 0xF9, 0x4D, 0x82, 0xB0, 0x57, 0x74, 0xF6, 0x97, 0xB2, 0x09, 0x62, 0x8C, 0xD5,
623 623 0xA9, 0xAD, 0x17, 0xE0, 0xC0, 0x73, 0xD9, 0x32, 0x90, 0x76, 0xA4, 0xC2, 0x8E, 0xD2, 0x81, 0x47 0xA9, 0xAD, 0x17, 0xE0, 0xC0, 0x73, 0xD9, 0x32, 0x90, 0x76, 0xA4, 0xC2, 0x8E, 0xD2, 0x81, 0x47
 
... ... struct bootstrap_node tcp_relays[] = {
644 644
645 645 { {
646 646 "138.201.117.204", "138.201.117.204",
647 33445,
647 3389,
648 648 { {
649 649 0x1C, 0x52, 0x93, 0xAE, 0xF2, 0x11, 0x47, 0x17, 0x54, 0x7B, 0x39, 0xDA, 0x8E, 0xA6, 0xF1, 0xE3, 0x1C, 0x52, 0x93, 0xAE, 0xF2, 0x11, 0x47, 0x17, 0x54, 0x7B, 0x39, 0xDA, 0x8E, 0xA6, 0xF1, 0xE3,
650 650 0x31, 0xE5, 0xE3, 0x58, 0xB3, 0x5F, 0x9B, 0x6B, 0x5F, 0x19, 0x31, 0x79, 0x11, 0xC5, 0xF9, 0x76 0x31, 0xE5, 0xE3, 0x58, 0xB3, 0x5F, 0x9B, 0x6B, 0x5F, 0x19, 0x31, 0x79, 0x11, 0xC5, 0xF9, 0x76
 
... ... struct bootstrap_node tcp_relays[] = {
653 653
654 654 { {
655 655 "138.201.117.204", "138.201.117.204",
656 3389,
656 33445,
657 657 { {
658 658 0x1C, 0x52, 0x93, 0xAE, 0xF2, 0x11, 0x47, 0x17, 0x54, 0x7B, 0x39, 0xDA, 0x8E, 0xA6, 0xF1, 0xE3, 0x1C, 0x52, 0x93, 0xAE, 0xF2, 0x11, 0x47, 0x17, 0x54, 0x7B, 0x39, 0xDA, 0x8E, 0xA6, 0xF1, 0xE3,
659 659 0x31, 0xE5, 0xE3, 0x58, 0xB3, 0x5F, 0x9B, 0x6B, 0x5F, 0x19, 0x31, 0x79, 0x11, 0xC5, 0xF9, 0x76 0x31, 0xE5, 0xE3, 0x58, 0xB3, 0x5F, 0x9B, 0x6B, 0x5F, 0x19, 0x31, 0x79, 0x11, 0xC5, 0xF9, 0x76
 
... ... struct bootstrap_node tcp_relays[] = {
671 671
672 672 { {
673 673 "51.254.84.212", "51.254.84.212",
674 33445,
674 3389,
675 675 { {
676 676 0xAE, 0xC2, 0x04, 0xB9, 0xA4, 0x50, 0x14, 0x12, 0xD5, 0xF0, 0xBB, 0x67, 0xD9, 0xC8, 0x1B, 0x5D, 0xAE, 0xC2, 0x04, 0xB9, 0xA4, 0x50, 0x14, 0x12, 0xD5, 0xF0, 0xBB, 0x67, 0xD9, 0xC8, 0x1B, 0x5D,
677 677 0xB3, 0xEE, 0x6A, 0xDA, 0x64, 0x12, 0x2D, 0x32, 0xA3, 0xE9, 0xB0, 0x93, 0xD5, 0x44, 0x32, 0x7D 0xB3, 0xEE, 0x6A, 0xDA, 0x64, 0x12, 0x2D, 0x32, 0xA3, 0xE9, 0xB0, 0x93, 0xD5, 0x44, 0x32, 0x7D
 
... ... struct bootstrap_node tcp_relays[] = {
680 680
681 681 { {
682 682 "51.254.84.212", "51.254.84.212",
683 3389,
683 33445,
684 684 { {
685 685 0xAE, 0xC2, 0x04, 0xB9, 0xA4, 0x50, 0x14, 0x12, 0xD5, 0xF0, 0xBB, 0x67, 0xD9, 0xC8, 0x1B, 0x5D, 0xAE, 0xC2, 0x04, 0xB9, 0xA4, 0x50, 0x14, 0x12, 0xD5, 0xF0, 0xBB, 0x67, 0xD9, 0xC8, 0x1B, 0x5D,
686 686 0xB3, 0xEE, 0x6A, 0xDA, 0x64, 0x12, 0x2D, 0x32, 0xA3, 0xE9, 0xB0, 0x93, 0xD5, 0x44, 0x32, 0x7D 0xB3, 0xEE, 0x6A, 0xDA, 0x64, 0x12, 0x2D, 0x32, 0xA3, 0xE9, 0xB0, 0x93, 0xD5, 0x44, 0x32, 0x7D
 
... ... struct bootstrap_node tcp_relays[] = {
689 689
690 690 { {
691 691 "88.99.133.52", "88.99.133.52",
692 3389,
692 33445,
693 693 { {
694 694 0x2D, 0x32, 0x0F, 0x97, 0x1E, 0xF2, 0xCA, 0x18, 0x00, 0x44, 0x16, 0xC2, 0xAA, 0xE7, 0xBA, 0x52, 0x2D, 0x32, 0x0F, 0x97, 0x1E, 0xF2, 0xCA, 0x18, 0x00, 0x44, 0x16, 0xC2, 0xAA, 0xE7, 0xBA, 0x52,
695 695 0xBF, 0x79, 0x49, 0xDB, 0x34, 0xEA, 0x8E, 0x2E, 0x21, 0xAF, 0x67, 0xBD, 0x36, 0x7B, 0xE2, 0x11 0xBF, 0x79, 0x49, 0xDB, 0x34, 0xEA, 0x8E, 0x2E, 0x21, 0xAF, 0x67, 0xBD, 0x36, 0x7B, 0xE2, 0x11
 
... ... struct bootstrap_node tcp_relays[] = {
698 698
699 699 { {
700 700 "88.99.133.52", "88.99.133.52",
701 33445,
701 3389,
702 702 { {
703 703 0x2D, 0x32, 0x0F, 0x97, 0x1E, 0xF2, 0xCA, 0x18, 0x00, 0x44, 0x16, 0xC2, 0xAA, 0xE7, 0xBA, 0x52, 0x2D, 0x32, 0x0F, 0x97, 0x1E, 0xF2, 0xCA, 0x18, 0x00, 0x44, 0x16, 0xC2, 0xAA, 0xE7, 0xBA, 0x52,
704 704 0xBF, 0x79, 0x49, 0xDB, 0x34, 0xEA, 0x8E, 0x2E, 0x21, 0xAF, 0x67, 0xBD, 0x36, 0x7B, 0xE2, 0x11 0xBF, 0x79, 0x49, 0xDB, 0x34, 0xEA, 0x8E, 0x2E, 0x21, 0xAF, 0x67, 0xBD, 0x36, 0x7B, 0xE2, 0x11
 
... ... struct bootstrap_node tcp_relays[] = {
734 734
735 735 { {
736 736 "174.127.245.27", "174.127.245.27",
737 3389,
737 33445,
738 738 { {
739 739 0x1A, 0x56, 0xEA, 0x3E, 0xDF, 0x5D, 0xF4, 0xC0, 0xAE, 0xAB, 0xBF, 0x3C, 0x2E, 0x4E, 0x60, 0x38, 0x1A, 0x56, 0xEA, 0x3E, 0xDF, 0x5D, 0xF4, 0xC0, 0xAE, 0xAB, 0xBF, 0x3C, 0x2E, 0x4E, 0x60, 0x38,
740 740 0x90, 0xF8, 0x7E, 0x98, 0x3C, 0xAC, 0x8A, 0x0D, 0x53, 0x2A, 0x33, 0x5F, 0x2C, 0x6E, 0x3E, 0x1F 0x90, 0xF8, 0x7E, 0x98, 0x3C, 0xAC, 0x8A, 0x0D, 0x53, 0x2A, 0x33, 0x5F, 0x2C, 0x6E, 0x3E, 0x1F
 
... ... struct bootstrap_node tcp_relays[] = {
743 743
744 744 { {
745 745 "174.127.245.27", "174.127.245.27",
746 33445,
746 3389,
747 747 { {
748 748 0x1A, 0x56, 0xEA, 0x3E, 0xDF, 0x5D, 0xF4, 0xC0, 0xAE, 0xAB, 0xBF, 0x3C, 0x2E, 0x4E, 0x60, 0x38, 0x1A, 0x56, 0xEA, 0x3E, 0xDF, 0x5D, 0xF4, 0xC0, 0xAE, 0xAB, 0xBF, 0x3C, 0x2E, 0x4E, 0x60, 0x38,
749 749 0x90, 0xF8, 0x7E, 0x98, 0x3C, 0xAC, 0x8A, 0x0D, 0x53, 0x2A, 0x33, 0x5F, 0x2C, 0x6E, 0x3E, 0x1F 0x90, 0xF8, 0x7E, 0x98, 0x3C, 0xAC, 0x8A, 0x0D, 0x53, 0x2A, 0x33, 0x5F, 0x2C, 0x6E, 0x3E, 0x1F
 
... ... struct bootstrap_node tcp_relays[] = {
788 788
789 789 { {
790 790 "163.172.136.118", "163.172.136.118",
791 3389,
791 33445,
792 792 { {
793 793 0x2C, 0x28, 0x9F, 0x9F, 0x37, 0xC2, 0x0D, 0x09, 0xDA, 0x83, 0x56, 0x55, 0x88, 0xBF, 0x49, 0x6F, 0x2C, 0x28, 0x9F, 0x9F, 0x37, 0xC2, 0x0D, 0x09, 0xDA, 0x83, 0x56, 0x55, 0x88, 0xBF, 0x49, 0x6F,
794 794 0xAB, 0x37, 0x64, 0x85, 0x3F, 0xA3, 0x81, 0x41, 0x81, 0x7A, 0x72, 0xE3, 0xF1, 0x8A, 0xCA, 0x0B 0xAB, 0x37, 0x64, 0x85, 0x3F, 0xA3, 0x81, 0x41, 0x81, 0x7A, 0x72, 0xE3, 0xF1, 0x8A, 0xCA, 0x0B
 
... ... struct bootstrap_node tcp_relays[] = {
797 797
798 798 { {
799 799 "163.172.136.118", "163.172.136.118",
800 33445,
800 3389,
801 801 { {
802 802 0x2C, 0x28, 0x9F, 0x9F, 0x37, 0xC2, 0x0D, 0x09, 0xDA, 0x83, 0x56, 0x55, 0x88, 0xBF, 0x49, 0x6F, 0x2C, 0x28, 0x9F, 0x9F, 0x37, 0xC2, 0x0D, 0x09, 0xDA, 0x83, 0x56, 0x55, 0x88, 0xBF, 0x49, 0x6F,
803 803 0xAB, 0x37, 0x64, 0x85, 0x3F, 0xA3, 0x81, 0x41, 0x81, 0x7A, 0x72, 0xE3, 0xF1, 0x8A, 0xCA, 0x0B 0xAB, 0x37, 0x64, 0x85, 0x3F, 0xA3, 0x81, 0x41, 0x81, 0x7A, 0x72, 0xE3, 0xF1, 0x8A, 0xCA, 0x0B
 
... ... struct bootstrap_node tcp_relays[] = {
806 806
807 807 { {
808 808 "144.76.31.180", "144.76.31.180",
809 3389,
809 33445,
810 810 { {
811 811 0x02, 0x80, 0x7C, 0xF4, 0xF8, 0xBB, 0x8F, 0xB3, 0x90, 0xCC, 0x37, 0x94, 0xBD, 0xF1, 0xE8, 0x44, 0x02, 0x80, 0x7C, 0xF4, 0xF8, 0xBB, 0x8F, 0xB3, 0x90, 0xCC, 0x37, 0x94, 0xBD, 0xF1, 0xE8, 0x44,
812 812 0x9E, 0x9A, 0x83, 0x92, 0xC5, 0xD3, 0xF2, 0x20, 0x00, 0x19, 0xDA, 0x9F, 0x1E, 0x81, 0x2E, 0x46 0x9E, 0x9A, 0x83, 0x92, 0xC5, 0xD3, 0xF2, 0x20, 0x00, 0x19, 0xDA, 0x9F, 0x1E, 0x81, 0x2E, 0x46
 
... ... struct bootstrap_node tcp_relays[] = {
815 815
816 816 { {
817 817 "144.76.31.180", "144.76.31.180",
818 33445,
818 3389,
819 819 { {
820 820 0x02, 0x80, 0x7C, 0xF4, 0xF8, 0xBB, 0x8F, 0xB3, 0x90, 0xCC, 0x37, 0x94, 0xBD, 0xF1, 0xE8, 0x44, 0x02, 0x80, 0x7C, 0xF4, 0xF8, 0xBB, 0x8F, 0xB3, 0x90, 0xCC, 0x37, 0x94, 0xBD, 0xF1, 0xE8, 0x44,
821 821 0x9E, 0x9A, 0x83, 0x92, 0xC5, 0xD3, 0xF2, 0x20, 0x00, 0x19, 0xDA, 0x9F, 0x1E, 0x81, 0x2E, 0x46 0x9E, 0x9A, 0x83, 0x92, 0xC5, 0xD3, 0xF2, 0x20, 0x00, 0x19, 0xDA, 0x9F, 0x1E, 0x81, 0x2E, 0x46
 
... ... struct bootstrap_node tcp_relays[] = {
833 833
834 834 { {
835 835 "80.87.193.193", "80.87.193.193",
836 33445,
836 3389,
837 837 { {
838 838 0xB3, 0x82, 0x55, 0xEE, 0x4B, 0x05, 0x49, 0x24, 0xF6, 0xD7, 0x9A, 0x5E, 0x6E, 0x58, 0x89, 0xEC, 0xB3, 0x82, 0x55, 0xEE, 0x4B, 0x05, 0x49, 0x24, 0xF6, 0xD7, 0x9A, 0x5E, 0x6E, 0x58, 0x89, 0xEC,
839 839 0x94, 0xB6, 0xAD, 0xF6, 0xFE, 0x99, 0x06, 0xF9, 0x7A, 0x3D, 0x01, 0xE3, 0xD0, 0x83, 0x22, 0x3A 0x94, 0xB6, 0xAD, 0xF6, 0xFE, 0x99, 0x06, 0xF9, 0x7A, 0x3D, 0x01, 0xE3, 0xD0, 0x83, 0x22, 0x3A
 
... ... struct bootstrap_node tcp_relays[] = {
842 842
843 843 { {
844 844 "80.87.193.193", "80.87.193.193",
845 3389,
845 33445,
846 846 { {
847 847 0xB3, 0x82, 0x55, 0xEE, 0x4B, 0x05, 0x49, 0x24, 0xF6, 0xD7, 0x9A, 0x5E, 0x6E, 0x58, 0x89, 0xEC, 0xB3, 0x82, 0x55, 0xEE, 0x4B, 0x05, 0x49, 0x24, 0xF6, 0xD7, 0x9A, 0x5E, 0x6E, 0x58, 0x89, 0xEC,
848 848 0x94, 0xB6, 0xAD, 0xF6, 0xFE, 0x99, 0x06, 0xF9, 0x7A, 0x3D, 0x01, 0xE3, 0xD0, 0x83, 0x22, 0x3A 0x94, 0xB6, 0xAD, 0xF6, 0xFE, 0x99, 0x06, 0xF9, 0x7A, 0x3D, 0x01, 0xE3, 0xD0, 0x83, 0x22, 0x3A
 
... ... struct bootstrap_node tcp_relays[] = {
850 850 }, },
851 851
852 852 { {
853 "61.230.160.183",
853 "61.230.173.150",
854 854 33445, 33445,
855 855 { {
856 856 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6, 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6,
 
... ... struct bootstrap_node tcp_relays[] = {
859 859 }, },
860 860
861 861 { {
862 "61.230.160.183",
862 "61.230.173.150",
863 863 3389, 3389,
864 864 { {
865 865 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6, 0x3F, 0x0A, 0x45, 0xA2, 0x68, 0x36, 0x7C, 0x1B, 0xEA, 0x65, 0x2F, 0x25, 0x8C, 0x85, 0xF4, 0xA6,
 
... ... struct bootstrap_node tcp_relays[] = {
914 914
915 915 { {
916 916 "144.217.86.39", "144.217.86.39",
917 3389,
917 33445,
918 918 { {
919 919 0x7E, 0x56, 0x68, 0xE0, 0xEE, 0x09, 0xE1, 0x9F, 0x32, 0x0A, 0xD4, 0x79, 0x02, 0x41, 0x93, 0x31, 0x7E, 0x56, 0x68, 0xE0, 0xEE, 0x09, 0xE1, 0x9F, 0x32, 0x0A, 0xD4, 0x79, 0x02, 0x41, 0x93, 0x31,
920 920 0xFF, 0xEE, 0x14, 0x7B, 0xB3, 0x60, 0x67, 0x69, 0xCF, 0xBE, 0x92, 0x1A, 0x2A, 0x2F, 0xD3, 0x4C 0xFF, 0xEE, 0x14, 0x7B, 0xB3, 0x60, 0x67, 0x69, 0xCF, 0xBE, 0x92, 0x1A, 0x2A, 0x2F, 0xD3, 0x4C
 
... ... struct bootstrap_node tcp_relays[] = {
923 923
924 924 { {
925 925 "144.217.86.39", "144.217.86.39",
926 33445,
926 3389,
927 927 { {
928 928 0x7E, 0x56, 0x68, 0xE0, 0xEE, 0x09, 0xE1, 0x9F, 0x32, 0x0A, 0xD4, 0x79, 0x02, 0x41, 0x93, 0x31, 0x7E, 0x56, 0x68, 0xE0, 0xEE, 0x09, 0xE1, 0x9F, 0x32, 0x0A, 0xD4, 0x79, 0x02, 0x41, 0x93, 0x31,
929 929 0xFF, 0xEE, 0x14, 0x7B, 0xB3, 0x60, 0x67, 0x69, 0xCF, 0xBE, 0x92, 0x1A, 0x2A, 0x2F, 0xD3, 0x4C 0xFF, 0xEE, 0x14, 0x7B, 0xB3, 0x60, 0x67, 0x69, 0xCF, 0xBE, 0x92, 0x1A, 0x2A, 0x2F, 0xD3, 0x4C
 
... ... struct bootstrap_node tcp_relays[] = {
932 932
933 933 { {
934 934 "185.14.30.213", "185.14.30.213",
935 443,
935 33445,
936 936 { {
937 937 0x25, 0x55, 0x76, 0x3C, 0x8C, 0x46, 0x04, 0x95, 0xB1, 0x41, 0x57, 0xD2, 0x34, 0xDD, 0x56, 0xB8, 0x25, 0x55, 0x76, 0x3C, 0x8C, 0x46, 0x04, 0x95, 0xB1, 0x41, 0x57, 0xD2, 0x34, 0xDD, 0x56, 0xB8,
938 938 0x63, 0x00, 0xA2, 0x39, 0x55, 0x54, 0xBC, 0xAE, 0x46, 0x21, 0xAC, 0x34, 0x5B, 0x8C, 0x1B, 0x1B 0x63, 0x00, 0xA2, 0x39, 0x55, 0x54, 0xBC, 0xAE, 0x46, 0x21, 0xAC, 0x34, 0x5B, 0x8C, 0x1B, 0x1B
 
... ... struct bootstrap_node tcp_relays[] = {
941 941
942 942 { {
943 943 "185.14.30.213", "185.14.30.213",
944 33445,
944 443,
945 945 { {
946 946 0x25, 0x55, 0x76, 0x3C, 0x8C, 0x46, 0x04, 0x95, 0xB1, 0x41, 0x57, 0xD2, 0x34, 0xDD, 0x56, 0xB8, 0x25, 0x55, 0x76, 0x3C, 0x8C, 0x46, 0x04, 0x95, 0xB1, 0x41, 0x57, 0xD2, 0x34, 0xDD, 0x56, 0xB8,
947 947 0x63, 0x00, 0xA2, 0x39, 0x55, 0x54, 0xBC, 0xAE, 0x46, 0x21, 0xAC, 0x34, 0x5B, 0x8C, 0x1B, 0x1B 0x63, 0x00, 0xA2, 0x39, 0x55, 0x54, 0xBC, 0xAE, 0x46, 0x21, 0xAC, 0x34, 0x5B, 0x8C, 0x1B, 0x1B
 
... ... struct bootstrap_node tcp_relays[] = {
957 957 } }
958 958 }, },
959 959
960 {
961 "85.21.144.224",
962 3389,
963 {
964 0x8F, 0x73, 0x8B, 0xBC, 0x8F, 0xA9, 0x39, 0x46, 0x70, 0xBC, 0xAB, 0x14, 0x6C, 0x67, 0xA5, 0x07,
965 0xB9, 0x90, 0x7C, 0x8E, 0x56, 0x4E, 0x28, 0xC2, 0xB5, 0x9B, 0xEB, 0xB2, 0xFF, 0x68, 0x71, 0x1B
966 }
967 },
968
969 {
970 "85.21.144.224",
971 33445,
972 {
973 0x8F, 0x73, 0x8B, 0xBC, 0x8F, 0xA9, 0x39, 0x46, 0x70, 0xBC, 0xAB, 0x14, 0x6C, 0x67, 0xA5, 0x07,
974 0xB9, 0x90, 0x7C, 0x8E, 0x56, 0x4E, 0x28, 0xC2, 0xB5, 0x9B, 0xEB, 0xB2, 0xFF, 0x68, 0x71, 0x1B
975 }
976 },
977
978 960 { {
979 961 "104.207.131.136", "104.207.131.136",
980 962 33445, 33445,
 
... ... struct bootstrap_node tcp_relays[] = {
986 968
987 969 { {
988 970 "37.187.122.30", "37.187.122.30",
989 33445,
971 3389,
990 972 { {
991 973 0xBE, 0xB7, 0x1F, 0x97, 0xED, 0x9C, 0x99, 0xC0, 0x4B, 0x84, 0x89, 0xBB, 0x75, 0x57, 0x9E, 0xB4, 0xBE, 0xB7, 0x1F, 0x97, 0xED, 0x9C, 0x99, 0xC0, 0x4B, 0x84, 0x89, 0xBB, 0x75, 0x57, 0x9E, 0xB4,
992 974 0xDC, 0x6A, 0xB6, 0xF4, 0x41, 0xB6, 0x03, 0xD6, 0x35, 0x33, 0x12, 0x2F, 0x18, 0x58, 0xB5, 0x1D 0xDC, 0x6A, 0xB6, 0xF4, 0x41, 0xB6, 0x03, 0xD6, 0x35, 0x33, 0x12, 0x2F, 0x18, 0x58, 0xB5, 0x1D
 
... ... struct bootstrap_node tcp_relays[] = {
995 977
996 978 { {
997 979 "37.187.122.30", "37.187.122.30",
998 3389,
980 33445,
999 981 { {
1000 982 0xBE, 0xB7, 0x1F, 0x97, 0xED, 0x9C, 0x99, 0xC0, 0x4B, 0x84, 0x89, 0xBB, 0x75, 0x57, 0x9E, 0xB4, 0xBE, 0xB7, 0x1F, 0x97, 0xED, 0x9C, 0x99, 0xC0, 0x4B, 0x84, 0x89, 0xBB, 0x75, 0x57, 0x9E, 0xB4,
1001 983 0xDC, 0x6A, 0xB6, 0xF4, 0x41, 0xB6, 0x03, 0xD6, 0x35, 0x33, 0x12, 0x2F, 0x18, 0x58, 0xB5, 0x1D 0xDC, 0x6A, 0xB6, 0xF4, 0x41, 0xB6, 0x03, 0xD6, 0x35, 0x33, 0x12, 0x2F, 0x18, 0x58, 0xB5, 0x1D
 
... ... struct bootstrap_node tcp_relays[] = {
1004 986
1005 987 { {
1006 988 "136.243.141.187", "136.243.141.187",
1007 33445,
989 443,
1008 990 { {
1009 991 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81, 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81,
1010 992 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39
 
... ... struct bootstrap_node tcp_relays[] = {
1013 995
1014 996 { {
1015 997 "136.243.141.187", "136.243.141.187",
1016 3389,
998 33445,
1017 999 { {
1018 1000 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81, 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81,
1019 1001 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39
 
... ... struct bootstrap_node tcp_relays[] = {
1022 1004
1023 1005 { {
1024 1006 "136.243.141.187", "136.243.141.187",
1025 443,
1007 3389,
1026 1008 { {
1027 1009 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81, 0x6E, 0xE1, 0xFA, 0xDE, 0x9F, 0x55, 0xCC, 0x79, 0x38, 0x23, 0x4C, 0xC0, 0x7C, 0x86, 0x40, 0x81,
1028 1010 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39 0xFC, 0x60, 0x6D, 0x8F, 0xE7, 0xB7, 0x51, 0xED, 0xA2, 0x17, 0xF2, 0x68, 0xF1, 0x07, 0x8A, 0x39
 
... ... struct bootstrap_node tcp_relays[] = {
1038 1020 } }
1039 1021 }, },
1040 1022
1023 {
1024 "95.215.46.114",
1025 3389,
1026 {
1027 0x58, 0x23, 0xFB, 0x94, 0x7F, 0xF2, 0x4C, 0xF8, 0x3D, 0xDF, 0xAC, 0x3F, 0x3B, 0xAA, 0x18, 0xF9,
1028 0x6E, 0xA2, 0x01, 0x8B, 0x16, 0xCC, 0x08, 0x42, 0x9C, 0xB9, 0x7F, 0xA5, 0x02, 0xF4, 0x0C, 0x23
1029 }
1030 },
1031
1032 {
1033 "95.215.46.114",
1034 33445,
1035 {
1036 0x58, 0x23, 0xFB, 0x94, 0x7F, 0xF2, 0x4C, 0xF8, 0x3D, 0xDF, 0xAC, 0x3F, 0x3B, 0xAA, 0x18, 0xF9,
1037 0x6E, 0xA2, 0x01, 0x8B, 0x16, 0xCC, 0x08, 0x42, 0x9C, 0xB9, 0x7F, 0xA5, 0x02, 0xF4, 0x0C, 0x23
1038 }
1039 },
1040
1041 1041 { {
1042 1042 "23.101.75.197", "23.101.75.197",
1043 1043 33445, 33445,
 
... ... struct bootstrap_node tcp_relays[] = {
1103 1103
1104 1104 { {
1105 1105 "5.79.75.37", "5.79.75.37",
1106 33445,
1106 3389,
1107 1107 { {
1108 1108 0xD5, 0x27, 0xE5, 0x84, 0x7F, 0x83, 0x30, 0xD6, 0x28, 0xDA, 0xB1, 0x81, 0x4F, 0x0A, 0x42, 0x2F, 0xD5, 0x27, 0xE5, 0x84, 0x7F, 0x83, 0x30, 0xD6, 0x28, 0xDA, 0xB1, 0x81, 0x4F, 0x0A, 0x42, 0x2F,
1109 1109 0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57, 0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63 0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57, 0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63
 
... ... struct bootstrap_node tcp_relays[] = {
1112 1112
1113 1113 { {
1114 1114 "5.79.75.37", "5.79.75.37",
1115 3389,
1115 33445,
1116 1116 { {
1117 1117 0xD5, 0x27, 0xE5, 0x84, 0x7F, 0x83, 0x30, 0xD6, 0x28, 0xDA, 0xB1, 0x81, 0x4F, 0x0A, 0x42, 0x2F, 0xD5, 0x27, 0xE5, 0x84, 0x7F, 0x83, 0x30, 0xD6, 0x28, 0xDA, 0xB1, 0x81, 0x4F, 0x0A, 0x42, 0x2F,
1118 1118 0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57, 0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63 0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57, 0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63
 
... ... struct bootstrap_node tcp_relays[] = {
1175 1175
1176 1176 { {
1177 1177 "46.101.197.175", "46.101.197.175",
1178 3389,
1178 33445,
1179 1179 { {
1180 1180 0xCD, 0x13, 0x3B, 0x52, 0x11, 0x59, 0x54, 0x1F, 0xB1, 0xD3, 0x26, 0xDE, 0x98, 0x50, 0xF5, 0xE5, 0xCD, 0x13, 0x3B, 0x52, 0x11, 0x59, 0x54, 0x1F, 0xB1, 0xD3, 0x26, 0xDE, 0x98, 0x50, 0xF5, 0xE5,
1181 1181 0x6A, 0x6C, 0x72, 0x4B, 0x5B, 0x8E, 0x5E, 0xB5, 0xCD, 0x8D, 0x95, 0x04, 0x08, 0xE9, 0x57, 0x07 0x6A, 0x6C, 0x72, 0x4B, 0x5B, 0x8E, 0x5E, 0xB5, 0xCD, 0x8D, 0x95, 0x04, 0x08, 0xE9, 0x57, 0x07
 
... ... struct bootstrap_node tcp_relays[] = {
1184 1184
1185 1185 { {
1186 1186 "46.101.197.175", "46.101.197.175",
1187 33445,
1187 3389,
1188 1188 { {
1189 1189 0xCD, 0x13, 0x3B, 0x52, 0x11, 0x59, 0x54, 0x1F, 0xB1, 0xD3, 0x26, 0xDE, 0x98, 0x50, 0xF5, 0xE5, 0xCD, 0x13, 0x3B, 0x52, 0x11, 0x59, 0x54, 0x1F, 0xB1, 0xD3, 0x26, 0xDE, 0x98, 0x50, 0xF5, 0xE5,
1190 1190 0x6A, 0x6C, 0x72, 0x4B, 0x5B, 0x8E, 0x5E, 0xB5, 0xCD, 0x8D, 0x95, 0x04, 0x08, 0xE9, 0x57, 0x07 0x6A, 0x6C, 0x72, 0x4B, 0x5B, 0x8E, 0x5E, 0xB5, 0xCD, 0x8D, 0x95, 0x04, 0x08, 0xE9, 0x57, 0x07
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/gdr/tuntox

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/gdr/tuntox

Clone this repository using git:
git clone git://git.rocketgit.com/user/gdr/tuntox

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main