diff --git a/misc/getnodes.py b/misc/getnodes.py index e70e701..fc283f1 100755 --- a/misc/getnodes.py +++ b/misc/getnodes.py @@ -38,27 +38,17 @@ if __name__ == '__main__': # extract relevant values from node dictionaries addresses = [node['ipv4'] for node in nodes] ports = [node['port'] for node in nodes] - pubkeys = [node['public_key'] for node in nodes] + keys = [node['public_key'] for node in nodes] comments = ['Maintainer: {}, location: {}'.format( node['maintainer'], node['location']) for node in nodes] - # format data as C literals - addresses_c = ', '.join('"{}"'.format(address) for address in addresses) - ports_c = ', '.join('{}'.format(port) for port in ports) - pubkeys_c = ',\n '.join('/* {} */\n "{}"'.format( - comment, key) for comment, key in zip(comments, pubkeys)) - - # word-wrap and indent addresses and ports - addresses_c = textwrap.fill(addresses_c).replace('\n', '\n ') - ports_c = textwrap.fill(ports_c).replace('\n', '\n ') - # emit C code - print('/* bootstrap nodes generated by {}, do not modify'.format(__file__)) - print(' * last generated', datetime.datetime.now().isoformat()) - print(' */') - print('char *twc_bootstrap_keys[] = {') - print(' '*3, pubkeys_c, ' };\n') - print('char *twc_bootstrap_addresses[] = {') - print(' '*3, addresses_c, ' };\n') - print('uint16_t twc_bootstrap_ports[] = {') - print(' '*3, ports_c, ' };') + print('/* bootstrap nodes generated by', __file__) + print(' * last generated', datetime.datetime.now().isoformat(), '*/') + + print('static struct t_twc_bootstrap_node const twc_bootstrap_nodes[] = {') + for key, address, port, comment in zip(keys, addresses, ports, comments): + print(' /* {} */'.format(comment)) + print(' {{"{}",'.format(key)) + print(' "{}", {}}},'.format(address, port)) + print('};') diff --git a/src/twc-bootstrap.c b/src/twc-bootstrap.c index 7e6a7db..79cc1ce 100644 --- a/src/twc-bootstrap.c +++ b/src/twc-bootstrap.c @@ -23,79 +23,101 @@ #include "twc-bootstrap.h" -/* bootstrap nodes generated by misc/getnodes.py, do not modify - * last generated 2017-02-09T23:08:31.399895 - */ -char *twc_bootstrap_keys[] = { +struct t_twc_bootstrap_node +{ + char const *const key; + char const *const address; + uint16_t const port; +}; + +/* bootstrap nodes generated by misc/getnodes.py + * last generated 2017-02-18T22:26:38.420540 */ +static struct t_twc_bootstrap_node const twc_bootstrap_nodes[] = { /* Maintainer: Manolis, location: DE */ - "461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F", + {"461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F", + "130.133.110.14", 33445}, /* Maintainer: Busindre, location: US */ - "A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702", + {"A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702", + "205.185.116.116", 33445}, /* Maintainer: Busindre, location: US */ - "1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F", + {"1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F", + "198.98.51.198", 33445}, /* Maintainer: ray65536, location: NL */ - "8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832", + {"8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832", + "108.61.165.198", 33445}, /* Maintainer: fluke571, location: SI */ - "3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B", + {"3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B", + "194.249.212.109", 33445}, /* Maintainer: MAH69K, location: UA */ - "DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", + {"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", + "185.25.116.107", 33445}, /* Maintainer: Rotkaermota, location: SE */ - "5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23", + {"5823FB947FF24CF83DDFAC3F3BAA18F96EA2018B16CC08429CB97FA502F40C23", + "95.215.46.114", 33445}, /* Maintainer: tastytea, location: DE */ - "2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F", + {"2B2137E094F743AC8BD44652C55F41DFACC502F125E99E4FE24D40537489E32F", + "5.189.176.217", 5190}, /* Maintainer: pucetox, location: DE */ - "7AED21F94D82B05774F697B209628CD5A9AD17E0C073D9329076A4C28ED28147", + {"7AED21F94D82B05774F697B209628CD5A9AD17E0C073D9329076A4C28ED28147", + "148.251.23.146", 2306}, /* Maintainer: ru_maniac, location: US */ - "0FB96EEBFB1650DDB52E70CF773DDFCABE25A95CC3BB50FC251082E4B63EF82A", + {"0FB96EEBFB1650DDB52E70CF773DDFCABE25A95CC3BB50FC251082E4B63EF82A", + "104.223.122.15", 33445}, /* Maintainer: wildermesser, location: CA */ - "EDEE8F2E839A57820DE3DA4156D88350E53D4161447068A3457EE8F59F362414", + {"EDEE8F2E839A57820DE3DA4156D88350E53D4161447068A3457EE8F59F362414", + "104.233.104.126", 33445}, /* Maintainer: a68366, location: FR */ - "AEC204B9A4501412D5F0BB67D9C81B5DB3EE6ADA64122D32A3E9B093D544327D", + {"AEC204B9A4501412D5F0BB67D9C81B5DB3EE6ADA64122D32A3E9B093D544327D", + "51.254.84.212", 33445}, /* Maintainer: ru_maniac, location: RU */ - "24156472041E5F220D1FA11D9DF32F7AD697D59845701CDD7BE7D1785EB9DB39", + {"24156472041E5F220D1FA11D9DF32F7AD697D59845701CDD7BE7D1785EB9DB39", + "185.58.206.164", 33445}, /* Maintainer: t3mp, location: RU */ - "5625A62618CB4FCA70E147A71B29695F38CC65FF0CBD68AD46254585BE564802", + {"5625A62618CB4FCA70E147A71B29695F38CC65FF0CBD68AD46254585BE564802", + "92.54.84.70", 33445}, + /* Maintainer: strngr, location: UA */ + {"FB4CE0DDEFEED45F26917053E5D24BDDA0FA0A3D83A672A9DA2375928B37023D", + "195.93.190.6", 33445}, + /* Maintainer: nek, location: AM */ + {"2B9CD794424FD579044EC2FC5252B23DF8B4AAF239C25074F70B1090C3F8C83A", + "109.75.40.105", 33445}, /* Maintainer: HooinKyoma, location: SE */ - "672DBE27B4ADB9D5FB105A6BB648B2F8FDB89B3323486A7A21968316E012023C", + {"672DBE27B4ADB9D5FB105A6BB648B2F8FDB89B3323486A7A21968316E012023C", + "95.215.44.78", 33445}, /* Maintainer: LittleVulpix, location: FR */ - "2C289F9F37C20D09DA83565588BF496FAB3764853FA38141817A72E3F18ACA0B", + {"2C289F9F37C20D09DA83565588BF496FAB3764853FA38141817A72E3F18ACA0B", + "163.172.136.118", 33445}, /* Maintainer: Yani, location: NL */ - "E59A0E71ADA20D35BD1B0957059D7EF7E7792B3D680AE25C6F4DBBA09114D165", + {"E59A0E71ADA20D35BD1B0957059D7EF7E7792B3D680AE25C6F4DBBA09114D165", + "37.97.185.116", 33445}, /* Maintainer: Cactus, location: RU */ - "9906D65F2A4751068A59D30505C5FC8AE1A95E0843AE9372EAFA3BAB6AC16C2C", + {"9906D65F2A4751068A59D30505C5FC8AE1A95E0843AE9372EAFA3BAB6AC16C2C", + "193.124.186.205", 5228}, /* Maintainer: linxon, location: RU */ - "B38255EE4B054924F6D79A5E6E5889EC94B6ADF6FE9906F97A3D01E3D083223A", + {"B38255EE4B054924F6D79A5E6E5889EC94B6ADF6FE9906F97A3D01E3D083223A", + "80.87.193.193", 33445}, /* Maintainer: Stranger, location: UA */ - "813C8F4187833EF0655B10F7752141A352248462A567529A38B6BBF73E979307", + {"813C8F4187833EF0655B10F7752141A352248462A567529A38B6BBF73E979307", + "46.229.52.198", 33445}, /* Maintainer: dvor, location: NL */ - "2555763C8C460495B14157D234DD56B86300A2395554BCAE4621AC345B8C1B1B", - /* Maintainer: Madji, location: RU */ - "CE678DEAFA29182EFD1B0C5B9BC6999E5A20B50A1A6EC18B91C8EBB591712416", + {"2555763C8C460495B14157D234DD56B86300A2395554BCAE4621AC345B8C1B1B", + "185.14.30.213", 443}, + /* Maintainer: ps, location: RU */ + {"98F5830A426C6BF165F895F04B897AFC4F57331B4BE0561F583C9F323194227B", + "77.37.142.179", 33445}, /* Maintainer: himura, location: RU */ - "8F738BBC8FA9394670BCAB146C67A507B9907C8E564E28C2B59BEBB2FF68711B", + {"8F738BBC8FA9394670BCAB146C67A507B9907C8E564E28C2B59BEBB2FF68711B", + "85.21.144.224", 33445}, /* Maintainer: dolohow, location: FR */ - "BEB71F97ED9C99C04B8489BB75579EB4DC6AB6F441B603D63533122F1858B51D", - /* Maintainer: ws, location: NZ */ - "F202E0936ABEE09067F55B0955C3FF6A84ABEED3C750A9EB930D926D03248F4C", + {"BEB71F97ED9C99C04B8489BB75579EB4DC6AB6F441B603D63533122F1858B51D", + "37.187.122.30", 33445}, /* Maintainer: clearmartin, location: DE */ - "CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707"}; + {"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", + "46.101.197.175", 443}, +}; -char *twc_bootstrap_addresses[] = { - "130.133.110.14", "205.185.116.116", "198.98.51.198", "108.61.165.198", - "194.249.212.109", "185.25.116.107", "95.215.46.114", "5.189.176.217", - "148.251.23.146", "104.223.122.15", "104.233.104.126", "51.254.84.212", - "185.58.206.164", "92.54.84.70", "95.215.44.78", "163.172.136.118", - "37.97.185.116", "193.124.186.205", "80.87.193.193", "46.229.52.198", - "185.14.30.213", "77.37.160.178", "85.21.144.224", "37.187.122.30", - "202.36.75.162", "46.101.197.175"}; - -uint16_t twc_bootstrap_ports[] = { - 33445, 33445, 33445, 33445, 33445, 33445, 33445, 5190, 2306, - 33445, 33445, 33445, 33445, 33445, 33445, 33445, 33445, 5228, - 33445, 33445, 443, 33440, 33445, 33445, 33445, 443}; - -int twc_bootstrap_count = - sizeof(twc_bootstrap_addresses) / sizeof(twc_bootstrap_addresses[0]); +static int const twc_bootstrap_count = + sizeof(twc_bootstrap_nodes) / sizeof(twc_bootstrap_nodes[0]); /** * Bootstrap a Tox object with a DHT bootstrap node. Returns the result of @@ -121,6 +143,6 @@ void twc_bootstrap_random_node(Tox *tox) { int i = rand() % twc_bootstrap_count; - twc_bootstrap_tox(tox, twc_bootstrap_addresses[i], twc_bootstrap_ports[i], - twc_bootstrap_keys[i]); + struct t_twc_bootstrap_node const *const node = &twc_bootstrap_nodes[i]; + twc_bootstrap_tox(tox, node->address, node->port, node->key); }