Renamed dht server to dht node

This commit is contained in:
Maxim Biro 2014-02-22 17:06:07 -05:00
parent 44c1dfc5fd
commit 5a142bb697
14 changed files with 57 additions and 56 deletions

View File

@ -8,5 +8,5 @@ include ../toxcore/Makefile.inc
include ../toxav/Makefile.inc
include ../other/Makefile.inc
include ../testing/Makefile.inc
include ../other/bootstrap_serverdaemon/Makefile.inc
include ../other/bootstrap_daemon/Makefile.inc
include ../auto_tests/Makefile.inc

View File

@ -12,9 +12,9 @@ can use Tox regardless of the quality of their internet connection.
How it's probably going to work:
1. Alice, a Tox client on a TCP only network generates a temporary public key
and connects to a bootstrap server.
and connects to a bootstrap node.
2. Using the bootstrap server she find and connects to a couple (exact number
2. Using the bootstrap node she find and connects to a couple (exact number
to be determined later) number of random nodes that have TCP relay support.
3. She uses the onion through the TCP relay connections to send friend requests

View File

@ -7,7 +7,7 @@ But:
Vastly simplified packet format and encryption.
Boostrapping:
The first time you install the client we bootstrap it with a node on our servers.(bandwidth should not be a problem as the client only needs to be sent one reply.)
The first time you install the client we bootstrap it with a node. (bandwidth should not be a problem as the client only needs to be sent one reply.)
Basics

View File

@ -1,7 +1,7 @@
/* DHT boostrap
*
* A simple DHT boostrap server for tox.
* A simple DHT boostrap node for tox.
*
* Copyright (C) 2013 Tox project All Rights Reserved.
*
@ -33,8 +33,8 @@
#include "../testing/misc_tools.c"
#ifdef DHT_SERVER_EXTRA_PACKETS
#include "./bootstrap_server_packets.c"
#ifdef DHT_NODE_EXTRA_PACKETS
#include "./bootstrap_node_packets.c"
#define DHT_VERSION_NUMBER 1
#define DHT_MOTD "This is a test motd"
@ -111,7 +111,7 @@ int main(int argc, char *argv[])
Onion *onion = new_onion(dht);
Onion_Announce *onion_a = new_onion_announce(dht);
#ifdef DHT_SERVER_EXTRA_PACKETS
#ifdef DHT_NODE_EXTRA_PACKETS
bootstrap_set_callbacks(dht->net, DHT_VERSION_NUMBER, DHT_MOTD, sizeof(DHT_MOTD));
#endif
@ -123,7 +123,7 @@ int main(int argc, char *argv[])
perror("Initialization");
manage_keys(dht);
/* We want our DHT public key to be the same as our internal one since this is a bootstrap server */
/* We want our DHT public key to be the same as our internal one since this is a bootstrap node */
memcpy(dht->self_public_key, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES);
memcpy(dht->self_secret_key, dht->c->self_secret_key, crypto_box_SECRETKEYBYTES);
printf("Public key: ");
@ -166,7 +166,7 @@ int main(int argc, char *argv[])
while (1) {
if (is_waiting_for_dht_connection && DHT_isconnected(dht)) {
printf("Connected to other bootstrap server successfully.\n");
printf("Connected to other bootstrap node successfully.\n");
is_waiting_for_dht_connection = 0;
}

View File

@ -1,3 +1,3 @@
As maintaining 2 seperate lists of the same information seemed redundant, this list has been phased out.
For a current DHT server list please visit http://wiki.tox.im/Servers
For a current DHT node list please visit http://wiki.tox.im/nodes

View File

@ -15,5 +15,5 @@ DHT_bootstrap_LDADD = $(LIBSODIUM_LDFLAGS) \
$(NACL_LIBS) \
$(WINSOCK2_LIBS)
EXTRA_DIST += $(top_srcdir)/other/DHTservers \
EXTRA_DIST += $(top_srcdir)/other/DHTnodes \
$(top_srcdir)/other/tox.png

View File

@ -3,10 +3,10 @@ if BUILD_DHT_BOOTSTRAP_DAEMON
noinst_PROGRAMS += tox_bootstrap_daemon
tox_bootstrap_daemon_SOURCES = \
../other/bootstrap_serverdaemon/tox_bootstrap_daemon.c
../other/bootstrap_daemon/tox_bootstrap_daemon.c
tox_bootstrap_daemon_CFLAGS = \
-I$(top_srcdir)/other/bootstrap_serverdaemon \
-I$(top_srcdir)/other/bootstrap_daemon \
$(LIBSODIUM_CFLAGS) \
$(NACL_CFLAGS) \
$(LIBCONFIG_CFLAGS)
@ -22,6 +22,6 @@ tox_bootstrap_daemon_LDADD = \
endif
EXTRA_DIST += \
$(top_srcdir)/other/bootstrap_serverdaemon/conf \
$(top_srcdir)/other/bootstrap_serverdaemon/tox_bootstrap_daemon.sh
$(top_srcdir)/other/bootstrap_daemon/conf \
$(top_srcdir)/other/bootstrap_daemon/tox_bootstrap_daemon.sh

View File

@ -1,4 +1,4 @@
// ProjectTox dht bootstrap server daemon configuration file.
// ProjectTox dht bootstrap node daemon configuration file.
// Listening port.
port = 33445
@ -20,20 +20,21 @@ enable_ipv6 = false
// Automatically bootstrap with nodes on local area network.
enable_lan_discovery = true
// Any number of servers the daemon will bootstrap itself from.
// Remember to replace the provided example with your own server list.
// You may leave the list empty or remove "bootstrap_servers" complitely,
// Any number of nodes the daemon will bootstrap itself from.
// Remember to replace the provided example with your own node list.
// There is a maintained list of bootstrap nodes on Tox's wiki, if you need it.
// You may leave the list empty or remove "bootstrap_nodes" complitely,
// in both cases this will be interpreted as if you don't want to bootstrap
// from anyone.
bootstrap_servers = (
{ // Server 1
bootstrap_nodes = (
{ // Node 1
// Any ipv4 or ipv6, depending if `enable_ipv6` is set or not, and also
// any US-ASCII domain name.
address = "198.46.136.167"
port = 33445
public_key = "728925473812C7AAC482BE7250BCCAD0B8CB9F737BF3D42ABD34459C1768F854"
},
{ // Server 2
{ // Node 2
address = "example.org"
port = 33445
public_key = "8CD5A9BF0A6CE358BA36F7A653F99FA6B258FF756E490F52C1F98CC420F78858"

View File

@ -1,6 +1,6 @@
/* tox_bootstrap_daemon.c
*
* Tox DHT bootstrap server daemon.
* Tox DHT bootstrap node daemon.
*
* Copyright (C) 2014 Tox project All Rights Reserved.
*
@ -92,7 +92,7 @@ int manage_keys(DHT *dht, char *keys_file_path)
fclose(keys_file);
// We want our DHT public key to be the same as our internal one since this is a bootstrap server
// We want our DHT public key to be the same as our internal one since this is a bootstrap node
memcpy(dht->self_public_key, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES);
memcpy(dht->self_secret_key, dht->c->self_secret_key, crypto_box_SECRETKEYBYTES);
@ -184,14 +184,14 @@ int get_general_config(char *cfg_file_path, char **pid_file_path, char **keys_fi
return 1;
}
// Bootstraps servers listed in the config file
// Bootstraps nodes listed in the config file
//
// returns 1 on success, some or no bootstrap servers were added
// returns 1 on success, some or no bootstrap nodes were added
// 0 on failure, a error accured while parsing config file
int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
{
const char *NAME_BOOTSTRAP_SERVERS = "bootstrap_servers";
const char *NAME_BOOTSTRAP_NODES = "bootstrap_nodes";
const char *NAME_PUBLIC_KEY = "public_key";
const char *NAME_PORT = "port";
@ -207,16 +207,16 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
return 0;
}
config_setting_t *server_list = config_lookup(&cfg, NAME_BOOTSTRAP_SERVERS);
config_setting_t *node_list = config_lookup(&cfg, NAME_BOOTSTRAP_NODES);
if (server_list == NULL) {
syslog(LOG_WARNING, "No '%s' setting in the configuration file. Skipping bootstrapping.\n", NAME_BOOTSTRAP_SERVERS);
if (node_list == NULL) {
syslog(LOG_WARNING, "No '%s' setting in the configuration file. Skipping bootstrapping.\n", NAME_BOOTSTRAP_NODES);
config_destroy(&cfg);
return 1;
}
if (config_setting_length(server_list) == 0) {
syslog(LOG_WARNING, "No bootstrap servers found. Skipping bootstrapping.\n");
if (config_setting_length(node_list) == 0) {
syslog(LOG_WARNING, "No bootstrap nodes found. Skipping bootstrapping.\n");
config_destroy(&cfg);
return 1;
}
@ -225,45 +225,45 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
const char *bs_address;
const char *bs_public_key;
config_setting_t *server;
config_setting_t *node;
int i = 0;
while (config_setting_length(server_list)) {
while (config_setting_length(node_list)) {
server = config_setting_get_elem(server_list, 0);
node = config_setting_get_elem(node_list, 0);
if (server == NULL) {
if (node == NULL) {
config_destroy(&cfg);
return 0;
}
// Check that all settings are present
if (config_setting_lookup_string(server, NAME_PUBLIC_KEY, &bs_public_key) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_PUBLIC_KEY);
if (config_setting_lookup_string(node, NAME_PUBLIC_KEY, &bs_public_key) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_PUBLIC_KEY);
goto next;
}
if (config_setting_lookup_int(server, NAME_PORT, &bs_port) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_PORT);
if (config_setting_lookup_int(node, NAME_PORT, &bs_port) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_PORT);
goto next;
}
if (config_setting_lookup_string(server, NAME_ADDRESS, &bs_address) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_ADDRESS);
if (config_setting_lookup_string(node, NAME_ADDRESS, &bs_address) == CONFIG_FALSE) {
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_ADDRESS);
goto next;
}
// Process settings
if (strlen(bs_public_key) != 64) {
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %s. Skipping the server.\n", i, NAME_PUBLIC_KEY,
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %s. Skipping the node.\n", i, NAME_PUBLIC_KEY,
bs_public_key);
goto next;
}
// not (1 <= port <= 65535)
if (bs_port < 1 || bs_port > 65535) {
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %d. Skipping the server.\n", i, NAME_PORT, bs_port);
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %d. Skipping the node.\n", i, NAME_PORT, bs_port);
goto next;
}
@ -273,17 +273,17 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
free(bs_public_key_bin);
if (!address_resolved) {
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %s. Skipping the server.\n", i, NAME_ADDRESS, bs_address);
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %s. Skipping the node.\n", i, NAME_ADDRESS, bs_address);
goto next;
}
syslog(LOG_DEBUG, "Successfully added bootstrap server #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
syslog(LOG_DEBUG, "Successfully added bootstrap node #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
next:
// config_setting_lookup_string() allocates string inside and doesn't allow us to free it
// so in order to reuse `bs_public_key` and `bs_address` we have to remove the element
// which will cause libconfig to free allocated strings
config_setting_remove_elem(server_list, 0);
config_setting_remove_elem(node_list, 0);
i++;
}
@ -378,9 +378,9 @@ int main(int argc, char *argv[])
}
if (bootstrap_from_config(cfg_file_path, dht, enable_ipv6)) {
syslog(LOG_DEBUG, "List of bootstrap servers read successfully\n");
syslog(LOG_DEBUG, "List of bootstrap nodes read successfully\n");
} else {
syslog(LOG_ERR, "Couldn't read list of bootstrap servers in %s. Exiting.\n", cfg_file_path);
syslog(LOG_ERR, "Couldn't read list of bootstrap nodes in %s. Exiting.\n", cfg_file_path);
return 1;
}
@ -449,7 +449,7 @@ int main(int argc, char *argv[])
networking_poll(dht->net);
if (waiting_for_dht_connection && DHT_isconnected(dht)) {
syslog(LOG_DEBUG, "Connected to other bootstrap server successfully.\n");
syslog(LOG_DEBUG, "Connected to other bootstrap node successfully.\n");
waiting_for_dht_connection = 0;
}

View File

@ -1,8 +1,8 @@
/* bootstrap_server_packets.c
/* bootstrap_node_packets.c
*
* Special bootstrap server only packets.
* Special bootstrap node only packets.
*
* Include it in your bootstrap server and use: bootstrap_set_callbacks() to enable.
* Include it in your bootstrap node and use: bootstrap_set_callbacks() to enable.
*
* Copyright (C) 2013 Tox project All Rights Reserved.
*

View File

@ -995,7 +995,7 @@ void print_help(char *prog_name)
puts("Options: (order IS relevant)");
puts(" --ipv4 / --ipv6 [Optional] Support IPv4 only or IPv4 & IPv6.");
puts(" IP PORT KEY [REQUIRED] A server to connect to (IP/Port) and its key.");
puts(" IP PORT KEY [REQUIRED] A node to connect to (IP/Port) and its key.");
puts(" -f keyfile [Optional] Specify a keyfile to read from and write to.");
}

View File

@ -149,7 +149,7 @@ typedef int sock_t;
#define NET_PACKET_ONION_RECV_2 141
#define NET_PACKET_ONION_RECV_1 142
/* Only used for bootstrap servers */
/* Only used for bootstrap nodes */
#define BOOTSTRAP_INFO_PACKET_ID 240