First
This commit is contained in:
		
							parent
							
								
									d40d314f6a
								
							
						
					
					
						commit
						b72ca69a8a
					
				
					 9 changed files with 309 additions and 93 deletions
				
			
		|  | @ -20,6 +20,9 @@ | ||||||
| cmake_minimum_required(VERSION 2.8.12) | cmake_minimum_required(VERSION 2.8.12) | ||||||
| project(tox-weechat C) | project(tox-weechat C) | ||||||
| 
 | 
 | ||||||
|  | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/var/local/src/c-toxcore/toxcore -I/var/local/src/c-toxcore/toxac -I/var/local/src/c-toxcore/toxencryptsave") | ||||||
|  | set(LD_FLAGS "${LD_FLAGS} -I/var/local/src/c-toxcore/_build") | ||||||
|  | 
 | ||||||
| add_library(tox MODULE | add_library(tox MODULE | ||||||
|     src/twc.c |     src/twc.c | ||||||
|     src/twc-bootstrap.c |     src/twc-bootstrap.c | ||||||
|  | @ -29,7 +32,7 @@ add_library(tox MODULE | ||||||
|     src/twc-config.c |     src/twc-config.c | ||||||
|     src/twc-friend-request.c |     src/twc-friend-request.c | ||||||
|     src/twc-gui.c |     src/twc-gui.c | ||||||
|     src/twc-group-invite.c |     src/twc-conf-invite.c | ||||||
|     src/twc-list.c |     src/twc-list.c | ||||||
|     src/twc-message-queue.c |     src/twc-message-queue.c | ||||||
|     src/twc-profile.c |     src/twc-profile.c | ||||||
|  |  | ||||||
|  | @ -21,14 +21,19 @@ | ||||||
| 
 | 
 | ||||||
| import re | import re | ||||||
| import sys | import sys | ||||||
|  | import os | ||||||
| import json | import json | ||||||
| import datetime | import datetime | ||||||
| import textwrap | import textwrap | ||||||
| import urllib.request | import urllib.request | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | def iMain(surl): | ||||||
|     with urllib.request.urlopen('https://nodes.tox.chat/json') as response: |     if os.path.exists(surl): | ||||||
|         data = json.load(response) |         with open(surl, 'rt') as response: | ||||||
|  |             data = json.load(response) | ||||||
|  |     else: | ||||||
|  |         with urllib.request.urlopen(surl) as response: | ||||||
|  |             data = json.load(response) | ||||||
| 
 | 
 | ||||||
|     # get online nodes that are defined by IP address |     # get online nodes that are defined by IP address | ||||||
|     nodes = [node for node in data['nodes'] |     nodes = [node for node in data['nodes'] | ||||||
|  | @ -52,3 +57,32 @@ if __name__ == '__main__': | ||||||
|         print('    {{"{}",'.format(key)) |         print('    {{"{}",'.format(key)) | ||||||
|         print('     "{}", {}}},'.format(address, port)) |         print('     "{}", {}}},'.format(address, port)) | ||||||
|     print('};') |     print('};') | ||||||
|  | 
 | ||||||
|  |     # get online nodes that are defined by IP address | ||||||
|  |     nodes = [node for node in data['nodes'] | ||||||
|  |                   if (node['status_tcp'] and node['tcp_ports']) | ||||||
|  |                     and re.match(r'^\d+\.\d+\.\d+\.\d+$', node['ipv4'])] | ||||||
|  | 
 | ||||||
|  |     print('static struct t_twc_bootstrap_node const twc_bootstrap_relays[] = {') | ||||||
|  |     for node in nodes: | ||||||
|  |         for port in node['tcp_ports']: | ||||||
|  |             # extract relevant values from node dictionaries | ||||||
|  |             address = node['ipv4'] | ||||||
|  |             key = node['public_key'] | ||||||
|  |             comment = 'Maintainer: {}, location: {}'.format( | ||||||
|  |                 node['maintainer'], node['location']) | ||||||
|  | 
 | ||||||
|  |             print('    /* {} */'.format(comment)) | ||||||
|  |             print('    {{"{}",'.format(key)) | ||||||
|  |             print('     "{}", {}}},'.format(address, port)) | ||||||
|  |     print('};') | ||||||
|  |     return 0 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     if len(sys.argv) > 1: | ||||||
|  |         surl = sys.argv[1] | ||||||
|  |     else: | ||||||
|  |         surl = 'https://nodes.tox.chat/json' | ||||||
|  |     sys.exit(iMain(surl)) | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |  | ||||||
|  | @ -30,81 +30,155 @@ struct t_twc_bootstrap_node | ||||||
|     uint16_t const port; |     uint16_t const port; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* bootstrap nodes generated by misc/getnodes.py
 | /* bootstrap nodes generated by /o/var/local/src/tox-weechat/misc/getnodes.py
 | ||||||
|  * last generated 2018-04-12T22:40:44.123211 */ |  * last generated 2022-11-11T08:54:10.303144 */ | ||||||
| static struct t_twc_bootstrap_node const twc_bootstrap_nodes[] = { | static struct t_twc_bootstrap_node const twc_bootstrap_nodes[] = { | ||||||
|     /* Maintainer: Manolis, location: DE */ |     /* Maintainer: MAH69K, location: RU */ | ||||||
|     {"461FA3776EF0FA655F1A05477DF1B3B614F7D6B124F7DB1DD4FE3C08B03B640F", |  | ||||||
|      "130.133.110.14", 33445}, |  | ||||||
|     /* Maintainer: Busindre, location: US */ |  | ||||||
|     {"A179B09749AC826FF01F37A9613F6B57118AE014D4196A0E1105A98F93A54702", |  | ||||||
|      "205.185.116.116", 33445}, |  | ||||||
|     /* Maintainer: Busindre, location: US */ |  | ||||||
|     {"1D5A5F2F5D6233058BF0259B09622FB40B482E4FA0931EB8FD3AB8E7BF7DAF6F", |  | ||||||
|      "198.98.51.198", 33445}, |  | ||||||
|     /* Maintainer: ray65536, location: RU */ |  | ||||||
|     {"8E7D0B859922EF569298B4D261A8CCB5FEA14FB91ED412A7603A585A25698832", |  | ||||||
|      "85.172.30.117", 33445}, |  | ||||||
|     /* Maintainer: fluke571, location: SI */ |  | ||||||
|     {"3CEE1F054081E7A011234883BC4FC39F661A55B73637A5AC293DDF1251D9432B", |  | ||||||
|      "194.249.212.109", 33445}, |  | ||||||
|     /* Maintainer: MAH69K, location: UA */ |  | ||||||
|     {"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", |     {"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", | ||||||
|      "185.25.116.107", 33445}, |      "85.143.221.42", 33445}, | ||||||
|     /* Maintainer: pucetox, location: FR */ |     /* Maintainer: initramfs, location: TW */ | ||||||
|     {"7AED21F94D82B05774F697B209628CD5A9AD17E0C073D9329076A4C28ED28147", |     {"3F0A45A268367C1BEA652F258C85F4A66DA76BCAA667A49E770BCC4917AB6A25", | ||||||
|      "217.182.143.254", 2306}, |      "114.35.245.150", 33445}, | ||||||
|     /* Maintainer: ru_maniac, location: US */ |  | ||||||
|     {"0FB96EEBFB1650DDB52E70CF773DDFCABE25A95CC3BB50FC251082E4B63EF82A", |  | ||||||
|      "104.223.122.15", 33445}, |  | ||||||
|     /* Maintainer: a68366, location: FR */ |  | ||||||
|     {"AEC204B9A4501412D5F0BB67D9C81B5DB3EE6ADA64122D32A3E9B093D544327D", |  | ||||||
|      "51.254.84.212", 33445}, |  | ||||||
|     /* Maintainer: Skey, location: NL */ |  | ||||||
|     {"B71E91E2F5029B0A84D3B1136319CDD3D1DB6D3702B6CEFA66A4BEB25A635916", |  | ||||||
|      "213.183.51.211", 33445}, |  | ||||||
|     /* Maintainer: t3mp, location: RU */ |  | ||||||
|     {"5625A62618CB4FCA70E147A71B29695F38CC65FF0CBD68AD46254585BE564802", |  | ||||||
|      "92.54.84.70", 33445}, |  | ||||||
|     /* Maintainer: HooinKyoma, location: SE */ |  | ||||||
|     {"672DBE27B4ADB9D5FB105A6BB648B2F8FDB89B3323486A7A21968316E012023C", |  | ||||||
|      "95.215.44.78", 33445}, |  | ||||||
|     /* Maintainer: LittleVulpix, location: FR */ |  | ||||||
|     {"2C289F9F37C20D09DA83565588BF496FAB3764853FA38141817A72E3F18ACA0B", |  | ||||||
|      "163.172.136.118", 33445}, |  | ||||||
|     /* Maintainer: Yani, location: NL */ |  | ||||||
|     {"E59A0E71ADA20D35BD1B0957059D7EF7E7792B3D680AE25C6F4DBBA09114D165", |  | ||||||
|      "37.97.185.116", 33445}, |  | ||||||
|     /* Maintainer: linxon, location: RU */ |  | ||||||
|     {"B38255EE4B054924F6D79A5E6E5889EC94B6ADF6FE9906F97A3D01E3D083223A", |  | ||||||
|      "80.87.193.193", 33445}, |  | ||||||
|     /* Maintainer: Stranger, location: UA */ |  | ||||||
|     {"813C8F4187833EF0655B10F7752141A352248462A567529A38B6BBF73E979307", |  | ||||||
|      "46.229.52.198", 33445}, |  | ||||||
|     /* Maintainer: velusip, location: CA */ |     /* Maintainer: velusip, location: CA */ | ||||||
|     {"7E5668E0EE09E19F320AD47902419331FFEE147BB3606769CFBE921A2A2FD34C", |     {"7E5668E0EE09E19F320AD47902419331FFEE147BB3606769CFBE921A2A2FD34C", | ||||||
|      "149.56.140.5", 33445}, |      "144.217.167.73", 33445}, | ||||||
|     /* Maintainer: dvor, location: NL */ |     /* Maintainer: Cody, location: US */ | ||||||
|     {"2555763C8C460495B14157D234DD56B86300A2395554BCAE4621AC345B8C1B1B", |     {"BEF0CFB37AF874BD17B9A8F9FE64C75521DB95A37D33C5BDB00E9CF58659C04F", | ||||||
|      "185.14.30.213", 443}, |      "198.199.98.108", 33445}, | ||||||
|     /* Maintainer: CeBe, location: DE */ |     /* Maintainer: GDR!, location: US */ | ||||||
|     {"6EE1FADE9F55CC7938234CC07C864081FC606D8FE7B751EDA217F268F1078A39", |     {"3091C6BEB2A993F1C6300C16549FABA67098FF3D62C6D253828B531470B53D68", | ||||||
|      "136.243.141.187", 443}, |      "205.185.115.131", 53}, | ||||||
|     /* Maintainer: Pokemon, location: NL */ |     /* Maintainer: kotelnik, location: DE */ | ||||||
|     {"1B5A8AB25FFFB66620A531C4646B47F0F32B74C547B30AF8BD8266CA50A3AB59", |  | ||||||
|      "37.48.122.22", 33445}, |  | ||||||
|     /* Maintainer: warlomak, location: RU */ |  | ||||||
|     {"FFAC871E85B1E1487F87AE7C76726AE0E60318A85F6A1669E04C47EB8DC7C72D", |  | ||||||
|      "79.140.30.52", 33445}, |  | ||||||
|     /* Maintainer: ru_maniac, location: US */ |  | ||||||
|     {"3925752E43BF2F8EB4E12B0E9414311064FF2D76707DC7D5D2CCB43F75081F6B", |  | ||||||
|      "104.223.122.204", 33445}, |  | ||||||
|     /* Maintainer: GDR!, location: PL */ |  | ||||||
|     {"B9D109CC820C69A5D97A4A1A15708107C6BA85C13BC6188CC809D374AFF18E63", |  | ||||||
|      "77.55.211.53", 53}, |  | ||||||
|     /* Maintainer: clearmartin, location: DE */ |  | ||||||
|     {"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", |     {"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", | ||||||
|      "46.101.197.175", 443}, |      "46.101.197.175", 33445}, | ||||||
|  |     /* Maintainer: 2mf, location: DE */ | ||||||
|  |     {"B3E5FA80DC8EBD1149AD2AB35ED8B85BD546DEDE261CA593234C619249419506", | ||||||
|  |      "49.12.229.145", 33445}, | ||||||
|  |     /* Maintainer: tux1973, location: DE */ | ||||||
|  |     {"B84E865125B4EC4C368CD047C72BCE447644A2DC31EF75BD2CDA345BFD310107", | ||||||
|  |      "195.201.7.101", 33445}, | ||||||
|  |     /* Maintainer: Tha_14, location: MD */ | ||||||
|  |     {"836D1DA2BE12FE0E669334E437BE3FB02806F1528C2B2782113E0910C7711409", | ||||||
|  |      "114.35.245.150", 33445}, | ||||||
|  |     /* Maintainer: Nikat, location: RU */ | ||||||
|  |     {"1911341A83E02503AB1FD6561BD64AF3A9D6C3F12B5FBB656976B2E678644A67", | ||||||
|  |      "188.225.9.167", 33445}, | ||||||
|  |     /* Maintainer: miaoski, location: TW */ | ||||||
|  |     {"5716530A10D362867C8E87EE1CD5362A233BAFBBA4CF47FA73B7CAD368BD5E6E", | ||||||
|  |      "122.116.39.151", 33445}, | ||||||
|  |     /* Maintainer: Cüber, location: LV */ | ||||||
|  |     {"534A589BA7427C631773D13083570F529238211893640C99D1507300F055FE73", | ||||||
|  |      "195.123.208.139", 33445}, | ||||||
|  |     /* Maintainer: ToxTom, location: CA */ | ||||||
|  |     {"F76A11284547163889DDC89A7738CF271797BF5E5E220643E97AD3C7E7903D55", | ||||||
|  |      "139.162.110.188", 33445}, | ||||||
|  |     /* Maintainer: Cüber, location: US */ | ||||||
|  |     {"28DB44A3CEEE69146469855DFFE5F54DA567F5D65E03EFB1D38BBAEFF2553255", | ||||||
|  |      "198.98.49.206", 33445}, | ||||||
|  |     /* Maintainer: Toxdaemon, location: RU */ | ||||||
|  |     {"DA98A4C0CD7473A133E115FEA2EBDAEEA2EF4F79FD69325FC070DA4DE4BA3238", | ||||||
|  |      "5.19.249.240", 38296}, | ||||||
|  | }; | ||||||
|  | static struct t_twc_bootstrap_node const twc_bootstrap_relays[] = { | ||||||
|  |     /* Maintainer: MAH69K, location: RU */ | ||||||
|  |     {"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", | ||||||
|  |      "85.143.221.42", 33445}, | ||||||
|  |     /* Maintainer: MAH69K, location: RU */ | ||||||
|  |     {"DA4E4ED4B697F2E9B000EEFE3A34B554ACD3F45F5C96EAEA2516DD7FF9AF7B43", | ||||||
|  |      "85.143.221.42", 3389}, | ||||||
|  |     /* Maintainer: initramfs, location: TW */ | ||||||
|  |     {"3F0A45A268367C1BEA652F258C85F4A66DA76BCAA667A49E770BCC4917AB6A25", | ||||||
|  |      "114.35.245.150", 3389}, | ||||||
|  |     /* Maintainer: initramfs, location: TW */ | ||||||
|  |     {"3F0A45A268367C1BEA652F258C85F4A66DA76BCAA667A49E770BCC4917AB6A25", | ||||||
|  |      "114.35.245.150", 33445}, | ||||||
|  |     /* Maintainer: velusip, location: CA */ | ||||||
|  |     {"7E5668E0EE09E19F320AD47902419331FFEE147BB3606769CFBE921A2A2FD34C", | ||||||
|  |      "144.217.167.73", 33445}, | ||||||
|  |     /* Maintainer: velusip, location: CA */ | ||||||
|  |     {"7E5668E0EE09E19F320AD47902419331FFEE147BB3606769CFBE921A2A2FD34C", | ||||||
|  |      "144.217.167.73", 3389}, | ||||||
|  |     /* Maintainer: Cody, location: US */ | ||||||
|  |     {"BEF0CFB37AF874BD17B9A8F9FE64C75521DB95A37D33C5BDB00E9CF58659C04F", | ||||||
|  |      "198.199.98.108", 33445}, | ||||||
|  |     /* Maintainer: Cody, location: US */ | ||||||
|  |     {"BEF0CFB37AF874BD17B9A8F9FE64C75521DB95A37D33C5BDB00E9CF58659C04F", | ||||||
|  |      "198.199.98.108", 3389}, | ||||||
|  |     /* Maintainer: GDR!, location: US */ | ||||||
|  |     {"3091C6BEB2A993F1C6300C16549FABA67098FF3D62C6D253828B531470B53D68", | ||||||
|  |      "205.185.115.131", 3389}, | ||||||
|  |     /* Maintainer: GDR!, location: US */ | ||||||
|  |     {"3091C6BEB2A993F1C6300C16549FABA67098FF3D62C6D253828B531470B53D68", | ||||||
|  |      "205.185.115.131", 443}, | ||||||
|  |     /* Maintainer: GDR!, location: US */ | ||||||
|  |     {"3091C6BEB2A993F1C6300C16549FABA67098FF3D62C6D253828B531470B53D68", | ||||||
|  |      "205.185.115.131", 33445}, | ||||||
|  |     /* Maintainer: GDR!, location: US */ | ||||||
|  |     {"3091C6BEB2A993F1C6300C16549FABA67098FF3D62C6D253828B531470B53D68", | ||||||
|  |      "205.185.115.131", 53}, | ||||||
|  |     /* Maintainer: kotelnik, location: DE */ | ||||||
|  |     {"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", | ||||||
|  |      "46.101.197.175", 3389}, | ||||||
|  |     /* Maintainer: kotelnik, location: DE */ | ||||||
|  |     {"CD133B521159541FB1D326DE9850F5E56A6C724B5B8E5EB5CD8D950408E95707", | ||||||
|  |      "46.101.197.175", 33445}, | ||||||
|  |     /* Maintainer: 2mf, location: DE */ | ||||||
|  |     {"B3E5FA80DC8EBD1149AD2AB35ED8B85BD546DEDE261CA593234C619249419506", | ||||||
|  |      "49.12.229.145", 3389}, | ||||||
|  |     /* Maintainer: 2mf, location: DE */ | ||||||
|  |     {"B3E5FA80DC8EBD1149AD2AB35ED8B85BD546DEDE261CA593234C619249419506", | ||||||
|  |      "49.12.229.145", 33445}, | ||||||
|  |     /* Maintainer: tux1973, location: DE */ | ||||||
|  |     {"B84E865125B4EC4C368CD047C72BCE447644A2DC31EF75BD2CDA345BFD310107", | ||||||
|  |      "195.201.7.101", 3389}, | ||||||
|  |     /* Maintainer: tux1973, location: DE */ | ||||||
|  |     {"B84E865125B4EC4C368CD047C72BCE447644A2DC31EF75BD2CDA345BFD310107", | ||||||
|  |      "195.201.7.101", 33445}, | ||||||
|  |     /* Maintainer: Tha_14, location: MD */ | ||||||
|  |     {"836D1DA2BE12FE0E669334E437BE3FB02806F1528C2B2782113E0910C7711409", | ||||||
|  |      "114.35.245.150", 33445}, | ||||||
|  |     /* Maintainer: Tha_14, location: MD */ | ||||||
|  |     {"836D1DA2BE12FE0E669334E437BE3FB02806F1528C2B2782113E0910C7711409", | ||||||
|  |      "114.35.245.150", 443}, | ||||||
|  |     /* Maintainer: Tha_14, location: MD */ | ||||||
|  |     {"836D1DA2BE12FE0E669334E437BE3FB02806F1528C2B2782113E0910C7711409", | ||||||
|  |      "114.35.245.150", 3389}, | ||||||
|  |     /* Maintainer: Nikat, location: RU */ | ||||||
|  |     {"1911341A83E02503AB1FD6561BD64AF3A9D6C3F12B5FBB656976B2E678644A67", | ||||||
|  |      "188.225.9.167", 3389}, | ||||||
|  |     /* Maintainer: Nikat, location: RU */ | ||||||
|  |     {"1911341A83E02503AB1FD6561BD64AF3A9D6C3F12B5FBB656976B2E678644A67", | ||||||
|  |      "188.225.9.167", 33445}, | ||||||
|  |     /* Maintainer: miaoski, location: TW */ | ||||||
|  |     {"5716530A10D362867C8E87EE1CD5362A233BAFBBA4CF47FA73B7CAD368BD5E6E", | ||||||
|  |      "122.116.39.151", 3389}, | ||||||
|  |     /* Maintainer: miaoski, location: TW */ | ||||||
|  |     {"5716530A10D362867C8E87EE1CD5362A233BAFBBA4CF47FA73B7CAD368BD5E6E", | ||||||
|  |      "122.116.39.151", 33445}, | ||||||
|  |     /* Maintainer: Cüber, location: LV */ | ||||||
|  |     {"534A589BA7427C631773D13083570F529238211893640C99D1507300F055FE73", | ||||||
|  |      "195.123.208.139", 3389}, | ||||||
|  |     /* Maintainer: Cüber, location: LV */ | ||||||
|  |     {"534A589BA7427C631773D13083570F529238211893640C99D1507300F055FE73", | ||||||
|  |      "195.123.208.139", 33445}, | ||||||
|  |     /* Maintainer: ToxTom, location: CA */ | ||||||
|  |     {"F76A11284547163889DDC89A7738CF271797BF5E5E220643E97AD3C7E7903D55", | ||||||
|  |      "139.162.110.188", 443}, | ||||||
|  |     /* Maintainer: ToxTom, location: CA */ | ||||||
|  |     {"F76A11284547163889DDC89A7738CF271797BF5E5E220643E97AD3C7E7903D55", | ||||||
|  |      "139.162.110.188", 33445}, | ||||||
|  |     /* Maintainer: ToxTom, location: CA */ | ||||||
|  |     {"F76A11284547163889DDC89A7738CF271797BF5E5E220643E97AD3C7E7903D55", | ||||||
|  |      "139.162.110.188", 3389}, | ||||||
|  |     /* Maintainer: Cüber, location: US */ | ||||||
|  |     {"28DB44A3CEEE69146469855DFFE5F54DA567F5D65E03EFB1D38BBAEFF2553255", | ||||||
|  |      "198.98.49.206", 33445}, | ||||||
|  |     /* Maintainer: Toxdaemon, location: RU */ | ||||||
|  |     {"DA98A4C0CD7473A133E115FEA2EBDAEEA2EF4F79FD69325FC070DA4DE4BA3238", | ||||||
|  |      "5.19.249.240", 3389}, | ||||||
|  |     /* Maintainer: Toxdaemon, location: RU */ | ||||||
|  |     {"DA98A4C0CD7473A133E115FEA2EBDAEEA2EF4F79FD69325FC070DA4DE4BA3238", | ||||||
|  |      "5.19.249.240", 38296}, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static int const twc_bootstrap_count = | static int const twc_bootstrap_count = | ||||||
|  | @ -122,7 +196,26 @@ twc_bootstrap_tox(Tox *tox, const char *address, uint16_t port, | ||||||
|     twc_hex2bin(public_key, TOX_ADDRESS_SIZE, binary_key); |     twc_hex2bin(public_key, TOX_ADDRESS_SIZE, binary_key); | ||||||
|     TOX_ERR_BOOTSTRAP err; |     TOX_ERR_BOOTSTRAP err; | ||||||
| 
 | 
 | ||||||
|     int result = tox_bootstrap(tox, address, port, binary_key, &err); |     int result; | ||||||
|  |     result = tox_bootstrap(tox, address, port, binary_key, &err); | ||||||
|  | 
 | ||||||
|  |     return result; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Bootstrap a Tox object with a relay node. Returns the result of | ||||||
|  |  * tox_bootstrap_from_address. | ||||||
|  |  */ | ||||||
|  | int | ||||||
|  | twc_bootstrap_relay(Tox *tox, const char *address, uint16_t port, | ||||||
|  |                   const char *public_key) | ||||||
|  | { | ||||||
|  |     uint8_t binary_key[TOX_ADDRESS_SIZE]; | ||||||
|  |     twc_hex2bin(public_key, TOX_ADDRESS_SIZE, binary_key); | ||||||
|  |     TOX_ERR_BOOTSTRAP err; | ||||||
|  | 
 | ||||||
|  |     int result; | ||||||
|  |     result = tox_add_tcp_relay(tox, address, port, binary_key, &err); | ||||||
| 
 | 
 | ||||||
|     return result; |     return result; | ||||||
| } | } | ||||||
|  | @ -130,10 +223,25 @@ twc_bootstrap_tox(Tox *tox, const char *address, uint16_t port, | ||||||
| /**
 | /**
 | ||||||
|  * Bootstrap a Tox object with a random DHT bootstrap node. |  * Bootstrap a Tox object with a random DHT bootstrap node. | ||||||
|  */ |  */ | ||||||
| void | int | ||||||
| twc_bootstrap_random_node(Tox *tox) | twc_bootstrap_random_node(Tox *tox) | ||||||
| { | { | ||||||
|     int i = rand() % twc_bootstrap_count; |     int i = rand() % twc_bootstrap_count; | ||||||
|     struct t_twc_bootstrap_node const *const node = &twc_bootstrap_nodes[i]; |     struct t_twc_bootstrap_node const *const node = &twc_bootstrap_nodes[i]; | ||||||
|     twc_bootstrap_tox(tox, node->address, node->port, node->key); |     int result; | ||||||
|  |     result = twc_bootstrap_tox(tox, node->address, node->port, node->key); | ||||||
|  |     return result; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Bootstrap a Tox object with a random DHT bootstrap node. | ||||||
|  |  */ | ||||||
|  | int | ||||||
|  | twc_bootstrap_random_relay(Tox *tox) | ||||||
|  | { | ||||||
|  |     int i = rand() % twc_bootstrap_count; | ||||||
|  |     struct t_twc_bootstrap_node const *const node = &twc_bootstrap_relays[i]; | ||||||
|  |     int result; | ||||||
|  |     result = twc_bootstrap_relay(tox, node->address, node->port, node->key); | ||||||
|  |     return result; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -26,7 +26,14 @@ int | ||||||
| twc_bootstrap_tox(Tox *tox, const char *address, uint16_t port, | twc_bootstrap_tox(Tox *tox, const char *address, uint16_t port, | ||||||
|                   const char *public_key); |                   const char *public_key); | ||||||
| 
 | 
 | ||||||
| void | int | ||||||
| twc_bootstrap_random_node(Tox *tox); | twc_bootstrap_random_node(Tox *tox); | ||||||
| 
 | 
 | ||||||
|  | int | ||||||
|  | twc_bootstrap_relay(Tox *tox, const char *address, uint16_t port, | ||||||
|  |                   const char *public_key); | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | twc_bootstrap_random_relay(Tox *tox); | ||||||
|  | 
 | ||||||
| #endif /* TOX_WEECHAT_BOOTSTRAP_H */ | #endif /* TOX_WEECHAT_BOOTSTRAP_H */ | ||||||
|  |  | ||||||
|  | @ -303,7 +303,7 @@ void | ||||||
| twc_chat_send_message(struct t_twc_chat *chat, const char *message, | twc_chat_send_message(struct t_twc_chat *chat, const char *message, | ||||||
|                       TOX_MESSAGE_TYPE message_type) |                       TOX_MESSAGE_TYPE message_type) | ||||||
| { | { | ||||||
|     TOX_ERR_CONFERENCE_SEND_MESSAGE err = TOX_ERR_CONFERENCE_SEND_MESSAGE_OK; |     Tox_Err_Conference_Send_Message err = TOX_ERR_CONFERENCE_SEND_MESSAGE_OK; | ||||||
|     if (chat->friend_number >= 0) |     if (chat->friend_number >= 0) | ||||||
|     { |     { | ||||||
|         twc_message_queue_add_friend_message(chat->profile, chat->friend_number, |         twc_message_queue_add_friend_message(chat->profile, chat->friend_number, | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ | ||||||
| #include "twc-chat.h" | #include "twc-chat.h" | ||||||
| #include "twc-config.h" | #include "twc-config.h" | ||||||
| #include "twc-friend-request.h" | #include "twc-friend-request.h" | ||||||
| #include "twc-group-invite.h" | #include "twc-conf-invite.h" | ||||||
| #include "twc-list.h" | #include "twc-list.h" | ||||||
| #include "twc-profile.h" | #include "twc-profile.h" | ||||||
| #include "twc-tfer.h" | #include "twc-tfer.h" | ||||||
|  | @ -215,8 +215,9 @@ twc_cmd_bootstrap(const void *pointer, void *data, struct t_gui_buffer *buffer, | ||||||
|     TWC_CHECK_PROFILE_LOADED(profile); |     TWC_CHECK_PROFILE_LOADED(profile); | ||||||
| 
 | 
 | ||||||
|     /* /bootstrap connect <address> <port> <key> */ |     /* /bootstrap connect <address> <port> <key> */ | ||||||
|     if (argc == 5 && weechat_strcasecmp(argv[1], "connect") == 0) |     if (argc > 1 && weechat_strcasecmp(argv[1], "connect") == 0) | ||||||
|     { |     { | ||||||
|  |       if (argc > 4 && strlen(argv[2]) > 0) { | ||||||
|         char *address = argv[2]; |         char *address = argv[2]; | ||||||
|         uint16_t port = atoi(argv[3]); |         uint16_t port = atoi(argv[3]); | ||||||
|         char *public_key = argv[4]; |         char *public_key = argv[4]; | ||||||
|  | @ -227,8 +228,68 @@ twc_cmd_bootstrap(const void *pointer, void *data, struct t_gui_buffer *buffer, | ||||||
|                            "%sBootstrap could not open address \"%s\"", |                            "%sBootstrap could not open address \"%s\"", | ||||||
|                            weechat_prefix("error"), address); |                            weechat_prefix("error"), address); | ||||||
|         } |         } | ||||||
|  |       } else if (argc > 2 && strlen(argv[2]) > 0) { | ||||||
|  | 	if (weechat_strcasecmp(argv[2], "0") == 0) { | ||||||
|  | 	  TOX_CONNECTION status; | ||||||
|  | 	  status = tox_self_get_connection_status(profile->tox); | ||||||
|  | 	  if ( status == TOX_CONNECTION_NONE) { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap connected.", | ||||||
|  |                            weechat_prefix("network")); | ||||||
|  | 	  } else { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap not connected.", | ||||||
|  |                            weechat_prefix("network")); | ||||||
|  | 	  } | ||||||
|  | 	} | ||||||
|  |       } else { | ||||||
|  |         if (!twc_bootstrap_random_node(profile->tox)) | ||||||
|  |         { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap could not open random DHT", | ||||||
|  |                            weechat_prefix("error")); | ||||||
|  |         } | ||||||
|  |       }; | ||||||
|  |       return WEECHAT_RC_OK; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|         return WEECHAT_RC_OK; |     /* /bootstrap relay <address> <port> <key> */ | ||||||
|  |     if (argc > 1 && weechat_strcasecmp(argv[1], "relay") == 0) | ||||||
|  |     { | ||||||
|  |       if (argc > 4 && strlen(argv[2]) > 0) { | ||||||
|  |         char *address = argv[2]; | ||||||
|  |         uint16_t port = atoi(argv[3]); | ||||||
|  |         char *public_key = argv[4]; | ||||||
|  | 
 | ||||||
|  |         if (!twc_bootstrap_relay(profile->tox, address, port, public_key)) | ||||||
|  |         { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap could not open address \"%s\"", | ||||||
|  |                            weechat_prefix("error"), address); | ||||||
|  |         } | ||||||
|  |       } else if (argc > 2 && strlen(argv[2]) > 0) { | ||||||
|  | 	if (weechat_strcasecmp(argv[2], "0") == 0) { | ||||||
|  | 	  TOX_CONNECTION status; | ||||||
|  | 	  status = tox_self_get_connection_status(profile->tox); | ||||||
|  | 	  if ( status == TOX_CONNECTION_NONE) { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap connected.", | ||||||
|  |                            weechat_prefix("network")); | ||||||
|  | 	  } else { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap not connected.", | ||||||
|  |                            weechat_prefix("network")); | ||||||
|  | 	  } | ||||||
|  | 	} | ||||||
|  |       } else {	 | ||||||
|  |         if (!twc_bootstrap_random_relay(profile->tox)) | ||||||
|  |         { | ||||||
|  |             weechat_printf(profile->buffer, | ||||||
|  |                            "%sBootstrap could not open random relay", | ||||||
|  |                            weechat_prefix("error")); | ||||||
|  |         } | ||||||
|  |       };	 | ||||||
|  |       return WEECHAT_RC_OK; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return WEECHAT_RC_ERROR; |     return WEECHAT_RC_ERROR; | ||||||
|  | @ -1337,11 +1398,14 @@ void | ||||||
| twc_commands_init() | twc_commands_init() | ||||||
| { | { | ||||||
|     weechat_hook_command("bootstrap", "manage bootstrap nodes", |     weechat_hook_command("bootstrap", "manage bootstrap nodes", | ||||||
|                          "connect <address> <port> <Tox ID>", |                          "connect <address> <port> <Tox ID>" | ||||||
|  | 			 " || relay <address> <port> <Tox ID>", | ||||||
|                          "address: internet address of node to bootstrap with\n" |                          "address: internet address of node to bootstrap with\n" | ||||||
|                          "   port: port of the node\n" |                          "   port: port of the node\n" | ||||||
|                          " Tox ID: Tox ID of the node", |                          " Tox ID: Tox ID of the node", | ||||||
|                          "connect", twc_cmd_bootstrap, NULL, NULL); |                          "connect" | ||||||
|  | 			 " || relay", | ||||||
|  | 			 twc_cmd_bootstrap, NULL, NULL); | ||||||
| 
 | 
 | ||||||
|     weechat_hook_command("friend", "manage friends", |     weechat_hook_command("friend", "manage friends", | ||||||
|                          "list" |                          "list" | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ | ||||||
| #include "twc-utils.h" | #include "twc-utils.h" | ||||||
| #include "twc.h" | #include "twc.h" | ||||||
| 
 | 
 | ||||||
| #include "twc-group-invite.h" | #include "twc-conf-invite.h" | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Add a new group invite to a profile. |  * Add a new group invite to a profile. | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ | ||||||
| 
 | 
 | ||||||
| #include "twc-chat.h" | #include "twc-chat.h" | ||||||
| #include "twc-friend-request.h" | #include "twc-friend-request.h" | ||||||
| #include "twc-group-invite.h" | #include "twc-conf-invite.h" | ||||||
| #include "twc-message-queue.h" | #include "twc-message-queue.h" | ||||||
| #include "twc-profile.h" | #include "twc-profile.h" | ||||||
| #include "twc-tfer.h" | #include "twc-tfer.h" | ||||||
|  | @ -593,7 +593,7 @@ twc_group_title_callback(Tox *tox, uint32_t group_number, uint32_t peer_number, | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| twc_file_recv_control_callback(Tox *tox, uint32_t friend_number, | twc_file_recv_control_callback(Tox *tox, uint32_t friend_number, | ||||||
|                                uint32_t file_number, TOX_FILE_CONTROL control, |                                uint32_t file_number, Tox_File_Control control, | ||||||
|                                void *user_data) |                                void *user_data) | ||||||
| { | { | ||||||
|     struct t_twc_profile *profile = twc_profile_search_tox(tox); |     struct t_twc_profile *profile = twc_profile_search_tox(tox); | ||||||
|  | @ -668,7 +668,7 @@ twc_file_chunk_request_callback(Tox *tox, uint32_t friend_number, | ||||||
|                        weechat_prefix("error"), file->filename); |                        weechat_prefix("error"), file->filename); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     enum TOX_ERR_FILE_SEND_CHUNK error; |     enum Tox_Err_File_Send_Chunk error; | ||||||
|     tox_file_send_chunk(profile->tox, friend_number, file_number, position, |     tox_file_send_chunk(profile->tox, friend_number, file_number, position, | ||||||
|                         data, length, &error); |                         data, length, &error); | ||||||
|     if (error) |     if (error) | ||||||
|  |  | ||||||
|  | @ -239,7 +239,7 @@ twc_set_buffer_logging(struct t_gui_buffer *buffer, bool logging) | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| char * | char * | ||||||
| twc_tox_err_file_control(enum TOX_ERR_FILE_CONTROL error) | twc_tox_err_file_control(enum Tox_Err_File_Control error) | ||||||
| { | { | ||||||
|     char *messages[] = { |     char *messages[] = { | ||||||
|         "success", |         "success", | ||||||
|  | @ -256,7 +256,7 @@ twc_tox_err_file_control(enum TOX_ERR_FILE_CONTROL error) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char * | char * | ||||||
| twc_tox_err_file_get(enum TOX_ERR_FILE_GET error) | twc_tox_err_file_get(enum Tox_Err_File_Get error) | ||||||
| { | { | ||||||
|     char *messages[] = { |     char *messages[] = { | ||||||
|         "success", |         "success", | ||||||
|  | @ -269,7 +269,7 @@ twc_tox_err_file_get(enum TOX_ERR_FILE_GET error) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char * | char * | ||||||
| twc_tox_err_file_seek(enum TOX_ERR_FILE_SEEK error) | twc_tox_err_file_seek(enum Tox_Err_File_Seek error) | ||||||
| { | { | ||||||
|     char *messages[] = { |     char *messages[] = { | ||||||
|         "success", |         "success", | ||||||
|  | @ -284,7 +284,7 @@ twc_tox_err_file_seek(enum TOX_ERR_FILE_SEEK error) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char * | char * | ||||||
| twc_tox_err_file_send(enum TOX_ERR_FILE_SEND error) | twc_tox_err_file_send(enum Tox_Err_File_Send error) | ||||||
| { | { | ||||||
|     char *messages[] = { |     char *messages[] = { | ||||||
|         "success", |         "success", | ||||||
|  | @ -298,7 +298,7 @@ twc_tox_err_file_send(enum TOX_ERR_FILE_SEND error) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char * | char * | ||||||
| twc_tox_err_file_send_chunk(enum TOX_ERR_FILE_SEND_CHUNK error) | twc_tox_err_file_send_chunk(enum Tox_Err_File_Send_Chunk error) | ||||||
| { | { | ||||||
|     char *messages[] = { |     char *messages[] = { | ||||||
|         "success", |         "success", | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 emdee
						emdee