diff --git a/cellframe-sdk b/cellframe-sdk index 807aee87a16b623be9c32b6bcd0fffaeefd1a8f4..da5591166a865e40c875dcf8fe16ce8759226547 160000 --- a/cellframe-sdk +++ b/cellframe-sdk @@ -1 +1 @@ -Subproject commit 807aee87a16b623be9c32b6bcd0fffaeefd1a8f4 +Subproject commit da5591166a865e40c875dcf8fe16ce8759226547 diff --git a/dap-sdk b/dap-sdk index 628e8fd05782d701bb1be115d3b5ba8268ee8fa6..09462f6ea2c421c663d6e946924b231b7c99f176 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 628e8fd05782d701bb1be115d3b5ba8268ee8fa6 +Subproject commit 09462f6ea2c421c663d6e946924b231b7c99f176 diff --git a/dist.linux/share/cellframe-node.asan.service b/dist.linux/share/cellframe-node.asan.service index 2e5c90cbcac4ae955881fabf6326a96b5b094daa..402399f736f5f3fdd1147b9be4dc87a98b19a419 100644 --- a/dist.linux/share/cellframe-node.asan.service +++ b/dist.linux/share/cellframe-node.asan.service @@ -13,7 +13,7 @@ Group=root RestartSec=10 LogNamespace=cellframe CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_IPC_LOCK CAP_KILL CAP_LEASE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYS_RAWIO CAP_SYSLOG CAP_WAKE_ALARM CAP_SYS_RESOURCE CAP_DAC_READ_SEARCH -Environment="ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:detect_invalid_pointer_pairs=2:debug=1:atexit=1:abort_on_error=1:log_path=asanlog.txt" +Environment="ASAN_OPTIONS=strict_string_checks=1:detect_invalid_pointer_pairs=2:debug=1:atexit=1:abort_on_error=1:log_path=asanlog.txt" [Install] WantedBy=multi-user.target diff --git a/dist/etc/network/Backbone/chain-0.cfg b/dist/etc/network/Backbone/chain-0.cfg index 73ca33f943852008b98dae4902888407ed6606b3..af1ac938fdb3ff0189f8af3e84a80a7998dea925 100755 --- a/dist/etc/network/Backbone/chain-0.cfg +++ b/dist/etc/network/Backbone/chain-0.cfg @@ -8,6 +8,7 @@ datum_types=[token,emission,ca,custom,decree] default_datum_types=[token,emission,ca,decree,custom] mempool_auto_types=[emission, decree] consensus=dag_poa +authorized_nodes_addrs=[FE39::A741::BCD1::1920,6F96::DAA6::2AF1::1004,7149::F58A::E7E2::A4BA,9DBE::6AC5::BFB0::5D8C,197A::C7D8::372D::6D64,F546::A2C3::B230::6068,3168::6ED3::6B53::9A21,4B4D::8DB3::0BDC::4209,C35A::748F::11FC::F05D,73BC::A885::D21E::01CC,1B98::8F04::5822::87E9] [files] storage_dir=../../../var/lib/network/scorpion/zerochain/ diff --git a/dist/etc/network/Backbone/main.cfg b/dist/etc/network/Backbone/main.cfg index 34146ab02947949f65802a19cc7039b86ad48ba0..d81abcde0b3d3e8c4dc9142f81a7050f83937ecc 100755 --- a/dist/etc/network/Backbone/main.cfg +++ b/dist/etc/network/Backbone/main.cfg @@ -19,7 +19,6 @@ static_genesis_block=0xD3E07282FC1C4FC733AEE7898BA1017DF7659CA7B64047886FA12EDD8 [esbocs] -consensus_debug=true #poa_mode=true min_validators_count=1 auth_certs_prefix=scorpion.master diff --git a/dist/etc/network/KelVPN/chain-0.cfg b/dist/etc/network/KelVPN/chain-0.cfg index 2430325677340e56a91b962a8e5c0b32e9cce849..6a523f4f9fe6a2355a0b20c32974f54c4fc516d5 100644 --- a/dist/etc/network/KelVPN/chain-0.cfg +++ b/dist/etc/network/KelVPN/chain-0.cfg @@ -8,6 +8,7 @@ datum_types=[token,emission,ca,decree,custom] default_datum_types=[token,emission,ca,decree, custom] mempool_auto_types=[] consensus=dag_poa +authorized_nodes_addrs=[4243::D90D::5B87::D579, 6D8C::9224::5C12::8AD4, F546::A2C3::B230::6068, 3168::6ED3::6B53::9A21, 4B4D::8DB3::0BDC::4209, C35A::748F::11FC::F05D, 73BC::A885::D21E::01CC, 1B98::8F04::5822::87E9] [files] storage_dir=../../../var/lib/network/kelvpn/zerochain/ diff --git a/dist/etc/network/KelVPN/main.cfg b/dist/etc/network/KelVPN/main.cfg index 9764075f67e1e0409d8da3058f34f69f5832a7e6..bf0f1c3d672d9594c3a95a515f0b4473a4982e00 100644 --- a/dist/etc/network/KelVPN/main.cfg +++ b/dist/etc/network/KelVPN/main.cfg @@ -18,7 +18,6 @@ is_static_genesis_block=true static_genesis_block=0xAB7EE08EF7FFD1D20A4660B7963601E831488AEA4B16149C02F6CCBD0847E858 [esbocs] -consensus_debug=true min_validators_count=1 auth_certs_prefix=kelvpn.master auth_certs_count=3 diff --git a/dist/etc/network/kelvpn-minkowski/main.cfg b/dist/etc/network/kelvpn-minkowski/main.cfg index 90f7896f53caa52dcbd05a1f10d9e456c36e1cde..62f3a65732b9dd3c2f790f8e5f1448b69954c5be 100755 --- a/dist/etc/network/kelvpn-minkowski/main.cfg +++ b/dist/etc/network/kelvpn-minkowski/main.cfg @@ -18,7 +18,6 @@ is_static_genesis_event=true static_genesis_event=0x5C6C3BDD89F7317A1E3D01E6C440021D81C17F16431ECF3D2BFCA0BE50143728 [esbocs] -consensus_debug=true min_validators_count=1 auth_certs_prefix=minkowski.master validators_addrs=[1234::0000::0000::0000] diff --git a/dist/etc/network/mileena/main.cfg b/dist/etc/network/mileena/main.cfg index 00df2b4609b642f1547c9a5218b7b948ef690bce..708d573375fb15b9856e2427c7a2e7e3f7b6c517 100755 --- a/dist/etc/network/mileena/main.cfg +++ b/dist/etc/network/mileena/main.cfg @@ -18,7 +18,6 @@ is_static_genesis_block=true static_genesis_block=0x1DB1E136B583A1553E4829D6A0453338B7413DDB1B12189F8456B064E822667F [esbocs] -consensus_debug=true min_validators_count=2 auth_certs_prefix=mileena.master validators_addrs=[CCCC::1234::0000::0000,CCCC::1234::0000::0001] diff --git a/dist/etc/network/raiden/chain-0.cfg b/dist/etc/network/raiden/chain-0.cfg index 43d50d86edac97d7acf5d5bf167cf55a97f406ac..73512fbb8b53cf032bac244b794eac35735e0cc2 100644 --- a/dist/etc/network/raiden/chain-0.cfg +++ b/dist/etc/network/raiden/chain-0.cfg @@ -8,6 +8,7 @@ datum_types=[token,emission,ca,decree] default_datum_types=[token,emission,ca,decree] mempool_auto_types=[emission] consensus=dag_poa +authorized_nodes_addrs=[BCA3::B097::DCDC::CB2B,038E::0C9B::A3E8::C533,CC88::3F68::5313::1577,72F9::511B::616A::A46F,A2C2::0CD4::38BA::2E8C,A983::7C3F::7FD4::4950,D1E4::F837::F42C::BFEF,B6E5::1B78::847A::F026] [files] storage_dir=../../../var/lib/network/raiden/zerochain/ diff --git a/dist/etc/network/raiden/main.cfg b/dist/etc/network/raiden/main.cfg index efbd3e520e9c6593fd2e06f8168f2f1762eae8d3..32d6e42cad30dcaba11753bfd8a1fa9306752689 100755 --- a/dist/etc/network/raiden/main.cfg +++ b/dist/etc/network/raiden/main.cfg @@ -18,7 +18,6 @@ is_static_genesis_block=true static_genesis_block=0x23003F4E373523075FF5EB7025DDAD7FA0DA44889E8A63335A22CCFA99E2C649 [esbocs] -consensus_debug=true min_validators_count=2 auth_certs_prefix=raiden.master validators_addrs=[3A58::8BB3::7B56::A74C,D6CB::5510::2544::FCBB,FF76::A533::1896::4ECC] diff --git a/dist/etc/network/riemann/chain-0.cfg b/dist/etc/network/riemann/chain-0.cfg index 5a13cc1492cd3680946e3b39311f1c91bb74dd73..1febfb770d7f23c06491ad31670fde40eaea7335 100644 --- a/dist/etc/network/riemann/chain-0.cfg +++ b/dist/etc/network/riemann/chain-0.cfg @@ -8,6 +8,7 @@ datum_types=[token,emission,ca,decree] default_datum_types=[token,emission,ca,decree] mempool_auto_types=[emission] consensus=dag_poa +authorized_nodes_addrs=[D420::C2A9::0637::040C,AC33::9A06::AAD8::B288,5DA8::C171::E316::C923,72F9::511B::616A::A46F,A2C2::0CD4::38BA::2E8C,A983::7C3F::7FD4::4950,D1E4::F837::F42C::BFEF] [files] storage_dir=../../../var/lib/network/riemann/zerochain/ diff --git a/dist/etc/network/riemann/main.cfg b/dist/etc/network/riemann/main.cfg index 29f09c91fa8ef87ba851dbc3e97ae47d6fd0c683..284238f5462e7ec1107b1e140f266ac2353229d6 100644 --- a/dist/etc/network/riemann/main.cfg +++ b/dist/etc/network/riemann/main.cfg @@ -18,7 +18,6 @@ is_static_genesis_block=true static_genesis_block=0x5FDA4B2952C89AB639AD77E00A8EAE9CBC5B472444F1003844DEAF3F4D618D0F [esbocs] -consensus_debug=true min_validators_count=1 auth_certs_prefix=riemann.master validators_addrs=[6074::5C74::C320::A0F5,DBBA::AED3::2C72::87A7,FE4E::4EEC::007D::07E9] diff --git a/dist/etc/network/subzero/chain-0.cfg b/dist/etc/network/subzero/chain-0.cfg index 292ed3f8683363581dc2319db5da806b9ce6575a..96445d4682bbfa38e3d55a26b697470ce1038ad8 100644 --- a/dist/etc/network/subzero/chain-0.cfg +++ b/dist/etc/network/subzero/chain-0.cfg @@ -8,6 +8,7 @@ datum_types=[token,emission,ca,decree] default_datum_types=[token,emission,ca,decree] mempool_auto_types=[] consensus=dag_poa +authorized_nodes_addrs=[608C::F7B7::D476::2438, 7497::4FB4::CFA1::9823, 5641::292F::13F5::F039] [files] storage_dir=../../../var/lib/network/subzero/zerochain/ diff --git a/dist/etc/network/subzero/main.cfg b/dist/etc/network/subzero/main.cfg index d7d4d7152a5324e9704e4fe80d7c6a6c205c3bb1..93768990ff9d57cea44fb98e68eff1abed969467 100644 --- a/dist/etc/network/subzero/main.cfg +++ b/dist/etc/network/subzero/main.cfg @@ -19,7 +19,6 @@ static_genesis_block=0x4E4FC8F1B04683861370C023D23C4DD67CEF4B82698E405537BA64BDD hard_accept_list=[0x89FDBFD7AAB3BEEE3907C6158684004468E8FDFC3F2AC50AF147E5208A0CFCB3,0x538988B7AB4593EDDC7ECB75F780D12DA7CE75356C94AA14CAFFC7350F0F97AC] [esbocs] -consensus_debug=true min_validators_count=2 auth_certs_prefix=subzero.master validators_addrs=[6E38::C103::53BE::C7BD, 8CA6::AB31::5798::4469, 8EA1::0678::E93F::55B4] diff --git a/dist/share/configs/network/Backbone.cfg b/dist/share/configs/network/Backbone.cfg index fd4835ec21e03c1a97e231447cfb63228e078097..fb67e61e3cb8cfe5b25890d0ecff3ed46d18fc4d 100755 --- a/dist/share/configs/network/Backbone.cfg +++ b/dist/share/configs/network/Backbone.cfg @@ -13,7 +13,6 @@ node-role= seed_nodes_hosts=[0.root.scorpion.cellframe.net:8079,1.root.scorpion.cellframe.net:8079,2.root.scorpion.cellframe.net:8079,3.root.scorpion.cellframe.net:8079,4.root.scorpion.cellframe.net:8079] #roots + dag goes here -authorized_nodes_addrs=[FE39::A741::BCD1::1920,6F96::DAA6::2AF1::1004,7149::F58A::E7E2::A4BA,9DBE::6AC5::BFB0::5D8C,197A::C7D8::372D::6D64,F546::A2C3::B230::6068,3168::6ED3::6B53::9A21,4B4D::8DB3::0BDC::4209,C35A::748F::11FC::F05D,73BC::A885::D21E::01CC,1B98::8F04::5822::87E9] #permanent_nodes_addrs=[0404::2022::0000::0005,0404::2022::0000::0006] diff --git a/dist/share/configs/network/KelVPN.cfg b/dist/share/configs/network/KelVPN.cfg index 5b50fcb5d4eb8ab449ae8b224d2753cf9d391fbe..0df7436192412fe331b12c9a753b5e34ff9a9fb8 100644 --- a/dist/share/configs/network/KelVPN.cfg +++ b/dist/share/configs/network/KelVPN.cfg @@ -11,8 +11,6 @@ bridged_network_ids=[0x0404202200000000] # Possible values: light, full, archive, master, root node-role= seed_nodes_hosts=[0.root.kelvpn.com:8079,1.root.kelvpn.com:8079,2.root.kelvpn.com:8079] -#root addresses -authorized_nodes_addrs=[4243::D90D::5B87::D579, 6D8C::9224::5C12::8AD4, F546::A2C3::B230::6068, 3168::6ED3::6B53::9A21, 4B4D::8DB3::0BDC::4209, C35A::748F::11FC::F05D, 73BC::A885::D21E::01CC, 1B98::8F04::5822::87E9] #[auth] #type=ca diff --git a/dist/share/configs/network/raiden.cfg b/dist/share/configs/network/raiden.cfg index dc391c681718ae05c6bf051002999537e8455bd0..07bc8d3b0bd827d6d5b08312861c00247b2174ed 100644 --- a/dist/share/configs/network/raiden.cfg +++ b/dist/share/configs/network/raiden.cfg @@ -18,8 +18,6 @@ node-role= #permanent_nodes_addrs=[] # If permanent addresses pointed without hosts then information about host will be retrieved from GDB #permanent_nodes_hosts=[] -# This addresses will have priviledged acceess to some GDB groups -authorized_nodes_addrs=[BCA3::B097::DCDC::CB2B, 038E::0C9B::A3E8::C533, CC88::3F68::5313::1577, 72F9::511B::616A::A46F, A2C2::0CD4::38BA::2E8C, A983::7C3F::7FD4::4950, D1E4::F837::F42C::BFEF, B6E5::1B78::847A::F026] # This hosts will be used as bootstrap balancers for first net access seed_nodes_hosts=[0.root.raiden.cellframe.net:8079, 1.root.raiden.cellframe.net:8079, 2.root.raiden.cellframe.net:8079] diff --git a/dist/share/configs/network/riemann.cfg b/dist/share/configs/network/riemann.cfg index bb83cc77ac8a72f37c92e779bdc0033c0316f7fb..0264e674c13ef6d71be2ba1aa45222c06050c296 100644 --- a/dist/share/configs/network/riemann.cfg +++ b/dist/share/configs/network/riemann.cfg @@ -18,8 +18,6 @@ node-role= #permanent_nodes_addrs=[] # If permanent addresses pointed without hosts then information about host will be retrieved from GDB #permanent_nodes_hosts=[] -# This addresses will have priviledged acceess to some GDB groups -authorized_nodes_addrs=[D420::C2A9::0637::040C,AC33::9A06::AAD8::B288,5DA8::C171::E316::C923,72F9::511B::616A::A46F,A2C2::0CD4::38BA::2E8C,A983::7C3F::7FD4::4950,D1E4::F837::F42C::BFEF] # This hosts will be used as bootstrap balancers for first net access seed_nodes_hosts=[0.root.riemann.cellframe.net:8079, 1.root.riemann.cellframe.net:8079, 2.root.riemann.cellframe.net:8079] diff --git a/dist/share/configs/network/subzero.cfg b/dist/share/configs/network/subzero.cfg index 0e91294f6e98c2aebdae17fedd4e85431d17e398..298158d715dea5952f133a616a0f343a649a1393 100755 --- a/dist/share/configs/network/subzero.cfg +++ b/dist/share/configs/network/subzero.cfg @@ -16,8 +16,6 @@ node-role= #permanent_nodes_addrs=[] # If permanent addresses pointed without hosts then information about host will be retrieved from GDB #permanent_nodes_hosts=[] -# This addresses will have priviledged acceess to some GDB groups -authorized_nodes_addrs=[608C::F7B7::D476::2438, 7497::4FB4::CFA1::9823, 5641::292F::13F5::F039] # This hosts will be used as bootstrap balancers for first net access seed_nodes_hosts=[0.root.subzero.cellframe.net:8190, 1.root.subzero.cellframe.net:8190, 2.root.subzero.cellframe.net:8190] diff --git a/dist/share/default.setup b/dist/share/default.setup index 1c19b4a66e9d00bc22e2239e6dac4ba8e79be196..b2f2d7b28760146c72ea7eaaa497c11dfb40b40d 100644 --- a/dist/share/default.setup +++ b/dist/share/default.setup @@ -101,10 +101,12 @@ config mileena general node-role default full config subzero general node-role default full config Backbone general seed_nodes_hosts ensure [0.root.scorpion.cellframe.net:8079,1.root.scorpion.cellframe.net:8079,2.root.scorpion.cellframe.net:8079,3.root.scorpion.cellframe.net:8079,4.root.scorpion.cellframe.net:8079] -config Backbone general authorized_nodes_addrs ensure [FE39::A741::BCD1::1920,6F96::DAA6::2AF1::1004,7149::F58A::E7E2::A4BA,9DBE::6AC5::BFB0::5D8C,197A::C7D8::372D::6D64,F546::A2C3::B230::6068,3168::6ED3::6B53::9A21,4B4D::8DB3::0BDC::4209,C35A::748F::11FC::F05D,73BC::A885::D21E::01CC,1B98::8F04::5822::87E9] -config KelVPN general authorized_nodes_addrs ensure [4243::D90D::5B87::D579,6D8C::9224::5C12::8AD4,F546::A2C3::B230::6068,3168::6ED3::6B53::9A21,4B4D::8DB3::0BDC::4209,C35A::748F::11FC::F05D,73BC::A885::D21E::01CC,1B98::8F04::5822::87E9] config KelVPN general seed_nodes_hosts ensure [0.root.kelvpn.com:8079,1.root.kelvpn.com:8079,2.root.kelvpn.com:8079] -config riemann general authorized_nodes_addrs ensure [D420::C2A9::0637::040C,AC33::9A06::AAD8::B288,5DA8::C171::E316::C923,72F9::511B::616A::A46F,A2C2::0CD4::38BA::2E8C,A983::7C3F::7FD4::4950,D1E4::F837::F42C::BFEF] -config raiden general authorized_nodes_addrs ensure [BCA3::B097::DCDC::CB2B,038E::0C9B::A3E8::C533,CC88::3F68::5313::1577,72F9::511B::616A::A46F,A2C2::0CD4::38BA::2E8C,A983::7C3F::7FD4::4950,D1E4::F837::F42C::BFEF,B6E5::1B78::847A::F026] \ No newline at end of file +config Backbone esbocs consensus_debug ensure true +config KelVPN esbocs consensus_debug ensure true +config raiden esbocs consensus_debug ensure true +config riemann esbocs consensus_debug ensure true +config mileena esbocs consensus_debug ensure true +config subzero esbocs consensus_debug ensure true diff --git a/python-cellframe b/python-cellframe index c131a8ac5476c9d87fd9cf969d6c9846decacf03..d560eca88c78ef003f1377af8b02eefda9ea8525 160000 --- a/python-cellframe +++ b/python-cellframe @@ -1 +1 @@ -Subproject commit c131a8ac5476c9d87fd9cf969d6c9846decacf03 +Subproject commit d560eca88c78ef003f1377af8b02eefda9ea8525 diff --git a/sources/cellframe-node.c b/sources/cellframe-node.c index 82b74eddb4fe0bd51f25e09b46458ea9667d2275..253c3feae65e707d6b384c373994275d96796c29 100755 --- a/sources/cellframe-node.c +++ b/sources/cellframe-node.c @@ -143,6 +143,8 @@ static int s_proc_running_check(const char *a_path); #define BUILD_TS "undefined" #endif +#define NODE_NAME "cellframe-node" + const char *dap_node_version() { return "CellframeNode, " DAP_VERSION ", " BUILD_TS ", " BUILD_HASH; } @@ -162,15 +164,15 @@ int main( int argc, const char **argv ) bool bServerEnabled = false; int rc = 0; - dap_set_appname("cellframe-node"); + dap_set_appname(NODE_NAME); #if defined(_WIN32) && defined(NDEBUG) S_SetExceptionFilter( ); #endif // get relative path to config #if !DAP_OS_ANDROID - if (argv[1] && argv[2] &&!dap_strcmp("-B" , argv[1])) - g_sys_dir_path = (char*)argv[2]; + if (argc > 2 && !dap_strcmp("-B" , argv[1])) + g_sys_dir_path = dap_strdup(argv[2]); #endif if (!g_sys_dir_path) { @@ -178,51 +180,50 @@ int main( int argc, const char **argv ) g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); #elif DAP_OS_MAC g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); -#elif DAP_OS_ANDROID - //must be set from jni through set_global_sys_dir befor main starts - //g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); #elif DAP_OS_UNIX g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); #endif } - - { - char *l_log_dir = dap_strdup_printf("%s/var/log", g_sys_dir_path); - dap_mkdir_with_parents(l_log_dir); - char * l_log_file = dap_strdup_printf( "%s/%s.log", l_log_dir, dap_get_appname()); - if (dap_common_init(dap_get_appname(), l_log_file, l_log_dir) != 0) - return printf("Fatal Error: Can't init common functions module"), -2; + if ( !dap_dir_test(g_sys_dir_path) ) { + printf("Invalid path \"%s\"", g_sys_dir_path); + rc = -1; + } else { + char l_path[MAX_PATH + 1]; + int pos = snprintf(l_path, sizeof(l_path), "%s/var/log", g_sys_dir_path); + if ( dap_mkdir_with_parents(l_path) ) { + printf("Can't create directory %s, error %d", l_path, errno); + rc = -2; + } else { + snprintf(l_path + pos, sizeof(l_path) - pos, "/%s.log", dap_get_appname()); + if ( dap_common_init(dap_get_appname(), l_path) ) { + printf("Fatal Error: Can't init common functions module"); + rc = -3; + } else { #if defined (DAP_DEBUG) || !defined(DAP_OS_WINDOWS) - dap_log_set_external_output(LOGGER_OUTPUT_STDOUT, NULL); + dap_log_set_external_output(LOGGER_OUTPUT_STDOUT, NULL); #else - dap_log_set_external_output(LOGGER_OUTPUT_NONE, NULL); + dap_log_set_external_output(LOGGER_OUTPUT_NONE, NULL); #endif #ifdef DAP_OS_ANDROID - dap_log_set_external_output(LOGGER_OUTPUT_ALOG, "NativeCellframeNode"); - + dap_log_set_external_output(LOGGER_OUTPUT_ALOG, "NativeCellframeNode"); #endif - - DAP_DELETE(l_log_dir); - DAP_DELETE(l_log_file); - } - log_it(L_DEBUG, "Use main path: %s", g_sys_dir_path); - - { - char l_config_dir[MAX_PATH] = {'\0'}; - sprintf(l_config_dir, "%s/etc", g_sys_dir_path); - if (dap_config_init(l_config_dir) != 0) { - log_it( L_CRITICAL,"Can't init general configurations" ); - return -1; + log_it(L_DEBUG, "Use main path: %s", g_sys_dir_path); + snprintf(l_path, sizeof(l_path), "%s/etc", g_sys_dir_path); + if ( dap_config_init(l_path) ) { + log_it( L_CRITICAL,"Can't init general config \"%s/%s.cfg\"\n", l_path, NODE_NAME ); + rc = -4; + } + } } } + if ( rc ) + return DAP_DELETE(g_sys_dir_path), rc; - if ((g_config = dap_config_open(dap_get_appname())) == NULL ) { - log_it( L_CRITICAL,"Can't init general configurations" ); - return -1; - } + if (!( g_config = dap_config_open(dap_get_appname()) )) + return log_it( L_CRITICAL,"Can't open general config %s.cfg", dap_get_appname() ), DAP_DELETE(g_sys_dir_path), -5; #ifndef DAP_OS_WINDOWS - char l_default_dir[MAX_PATH] = {'\0'}; - sprintf(l_default_dir, "%s/tmp", g_sys_dir_path); + char l_default_dir[MAX_PATH + 1]; + snprintf(l_default_dir, MAX_PATH + 1, "%s/tmp", g_sys_dir_path); char *l_pid_file_path = dap_config_get_item_str_path_default(g_config, "resources", "pid_path", l_default_dir); int l_pid_check = s_proc_running_check(l_pid_file_path); DAP_DELETE(l_pid_file_path); @@ -231,7 +232,7 @@ int main( int argc, const char **argv ) #else if ( s_proc_running_check("DAP_CELLFRAME_NODE_74E9201D33F7F7F684D2FEF1982799A79B6BF94" "B568446A8D1DE947B00E3C75060F3FD5BF277592D02F77D7E50935E56") ) - return 2; + return DAP_DELETE(g_sys_dir_path), 2; #endif log_it(L_DEBUG, "Parsing command line args"); @@ -252,7 +253,6 @@ int main( int argc, const char **argv ) l_max_file_size = dap_config_get_item_int64(g_config, "log", "rotate_size"); log_it(L_NOTICE, "Log rotation every %lu min enabled, max log file size %lu MB", l_timeout_minutes, l_max_file_size); - int64_t l_timeout = l_timeout_minutes * 60000; dap_common_enable_cleaner_log(l_timeout_minutes * 60000, l_max_file_size); } @@ -434,7 +434,7 @@ int main( int argc, const char **argv ) const char *str_start_mempool = dap_config_get_item_str( g_config, "mempool", "accept" ); if ( str_start_mempool && !strcmp(str_start_mempool, "true")) { - dap_chain_mempool_add_proc(DAP_HTTP_SERVER(l_server), MEMPOOL_URL); + dap_chain_mempool_add_proc(DAP_HTTP_SERVER(l_server), MEMPOOL_URL); } // Built in WWW server @@ -613,9 +613,8 @@ int s_proc_running_check(const char *a_path) { FILE *l_pidfile = fopen(a_path, "r"); if (l_pidfile) { pid_t f_pid = 0; - fscanf( l_pidfile, "%d", &f_pid ); - if (lockf(fileno(l_pidfile), F_TEST, 0) == -1) { - return log_it(L_ERROR, "Error %ld: \"%s\", dap_server is already running with PID %d", + if ( fscanf( l_pidfile, "%d", &f_pid ) && lockf(fileno(l_pidfile), F_TEST, 0) == -1 ) { + return log_it(L_ERROR, "Error %d: \"%s\", dap_server is already running with PID %d", errno, dap_strerror(errno), f_pid), 1; } else @@ -630,4 +629,4 @@ int s_proc_running_check(const char *a_path) { fflush(l_pidfile); return lockf(fileno(l_pidfile), F_TLOCK, sizeof(pid_t)); #endif -} \ No newline at end of file +} diff --git a/sources/exh_win32.c b/sources/exh_win32.c index 330cb834d24981484e9dbe1c22ef018c61fc7668..0828c62f2a8e65a65fed337c3359d3dbe596ea37 100644 --- a/sources/exh_win32.c +++ b/sources/exh_win32.c @@ -12,90 +12,16 @@ LONG ExceptionFilter( EXCEPTION_POINTERS *ep ); void S_SetExceptionFilter( void ) { - SetErrorMode( SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX ); + SetErrorMode( SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX ); - #ifdef WIN64 +#ifdef WIN64 AddVectoredExceptionHandler( 1, ExceptionFilter ); - #else +#else SetUnhandledExceptionFilter( (LPTOP_LEVEL_EXCEPTION_FILTER) ExceptionFilter ); - #endif - - return; -} - -#if 0 -typedef struct _EXCEPTION_RECORD { - DWORD ExceptionCode; - DWORD ExceptionFlags; - struct _EXCEPTION_RECORD *ExceptionRecord; - PVOID ExceptionAddress; - DWORD NumberParameters; - ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; -} EXCEPTION_RECORD; #endif +} LONG ExceptionFilter( EXCEPTION_POINTERS *ep ) { -// printf( "\r\nExceptionCode = 0x%0X[%s]\r\n", ep->ExceptionRecord->ExceptionCode, buff ); - - uint8_t buff[128]; - - if ( ep->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) - memcpy( buff, "EXCEPTION_ACCESS_VIOLATION", 27 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_ARRAY_BOUNDS_EXCEEDED) - memcpy( buff, "EXCEPTION_ARRAY_BOUNDS_EXCEEDED", 32 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_BREAKPOINT) - memcpy( buff, "EXCEPTION_BREAKPOINT", 21 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_DATATYPE_MISALIGNMENT) - memcpy( buff, "EXCEPTION_DATATYPE_MISALIGNMENT", 32 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_DENORMAL_OPERAND) - memcpy( buff, "EXCEPTION_FLT_DENORMAL_OPERAND", 31 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_DIVIDE_BY_ZERO) - memcpy( buff, "EXCEPTION_FLT_DIVIDE_BY_ZERO", 29 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_INEXACT_RESULT) - memcpy( buff, "EXCEPTION_FLT_INEXACT_RESULT", 29 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_INVALID_OPERATION) - memcpy( buff, "EXCEPTION_FLT_INVALID_OPERATION", 32 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_OVERFLOW) - memcpy( buff, "EXCEPTION_FLT_OVERFLOW", 23 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_STACK_CHECK) - memcpy( buff, "EXCEPTION_FLT_STACK_CHECK", 26 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_FLT_UNDERFLOW) - memcpy( buff, "EXCEPTION_FLT_UNDERFLOW", 24 ); - else if (ep->ExceptionRecord->ExceptionCode == STATUS_ILLEGAL_INSTRUCTION) - memcpy( buff, "EXCEPTION_ILLEGAL_INSTRUCTION", 30 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_IN_PAGE_ERROR) - memcpy( buff, "EXCEPTION_IN_PAGE_ERROR", 24 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO) - memcpy( buff, "EXCEPTION_INT_DIVIDE_BY_ZERO", 29 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_INT_OVERFLOW) - memcpy( buff, "EXCEPTION_INT_OVERFLOW", 23 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_INVALID_DISPOSITION) - memcpy( buff, "EXCEPTION_INVALID_DISPOSITION", 30 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_NONCONTINUABLE_EXCEPTION) - memcpy( buff, "EXCEPTION_NONCONTINUABLE_EXCEPTION", 35 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_PRIV_INSTRUCTION) - memcpy( buff, "EXCEPTION_PRIV_INSTRUCTION", 27 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_SINGLE_STEP) - memcpy( buff, "EXCEPTION_SINGLE_STEP", 22 ); - else if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_STACK_OVERFLOW) - memcpy( buff, "EXCEPTION_STACK_OVERFLOW", 25 ); - else - memcpy( buff, "EXCEPTION_UNKNOWN", 18 ); - - HANDLE hConOut = GetStdHandle( STD_OUTPUT_HANDLE ); - SetConsoleTextAttribute( hConOut, 12 ); - - printf( "\r\nExceptionCode = 0x%0lX[%s]\r\n", ep->ExceptionRecord->ExceptionCode, buff ); - - SetConsoleTextAttribute( hConOut, 7 ); - - dap_common_deinit( ); // close log file - - Beep( 1000, 200 ); - Sleep( 1000 ); - getch( ); - - ExitProcess( -1 ); - return 0; + return Beep( 1000, 200 ); } diff --git a/sources/main_node_cli.c b/sources/main_node_cli.c index adb4f6fa7a196060417d89970bb82e8248c392be..d56a987f55da4db9666037a29f99432cbda97c3b 100644 --- a/sources/main_node_cli.c +++ b/sources/main_node_cli.c @@ -50,62 +50,52 @@ static const char *listen_socket = NULL; #if !DAP_OS_ANDROID int main(int argc, const char *argv[]) - { dap_set_appname(NODE_NAME "-cli"); + // get relative path to config + if (argc > 2 && !dap_strcmp("-B" , argv[1])) { + g_sys_dir_path = dap_strdup(argv[2]); + if (! dap_dir_test(g_sys_dir_path) ) + return printf("Invalid path \"%s\"", g_sys_dir_path), DAP_DELETE(g_sys_dir_path), -1; + argc -= 2; + argv += 2; + } else { + g_sys_dir_path = +#ifdef DAP_OS_WINDOWS + dap_strdup_printf("%s/%s", regGetUsrPath(), NODE_NAME); +#elif defined DAP_OS_MAC + dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); +#elif defined DAP_OS_UNIX + dap_strdup_printf("/opt/%s", NODE_NAME); +#endif + } #ifdef DAP_OS_WINDOWS SetConsoleCP(1252); SetConsoleOutputCP(1252); WSADATA wsaData; WSAStartup(MAKEWORD(2,2), &wsaData); #endif - - // get relative path to config - int l_rel_path = 0; - if (argv[1] && argv[2] && !dap_strcmp("-B" , argv[1])) { - g_sys_dir_path = (char*)argv[2]; - l_rel_path = 1; - } - if (!g_sys_dir_path) { - #ifdef DAP_OS_WINDOWS - g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), NODE_NAME); - #elif DAP_OS_MAC - g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); - #elif DAP_OS_ANDROID - g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s", NODE_NAME); - #elif DAP_OS_UNIX - g_sys_dir_path = dap_strdup_printf("/opt/%s", NODE_NAME); - #endif - } - - - /*if (dap_common_init(dap_get_appname(), NULL, NULL) != 0) { - printf("Fatal Error: Can't init common functions module"); - return -2; - } - - */{ - char l_config_dir[MAX_PATH] = {'\0'}; - sprintf(l_config_dir, "%s/etc", g_sys_dir_path); - dap_config_init(l_config_dir); - } dap_log_level_set(L_CRITICAL); - int res = dap_app_cli_main(NODE_NAME, l_rel_path ? argc - 2 : argc, l_rel_path ? argv + 2 : argv); + int res = dap_app_cli_main(NODE_NAME, argc, argv); switch (res) { - case DAP_CLI_ERROR_FORMAT: - printf("Response format error!\n"); - break; - case DAP_CLI_ERROR_SOCKET: - printf("Socket read error!\n"); - break; - case DAP_CLI_ERROR_TIMEOUT: - printf("No response recieved\n"); - break; - case DAP_CLI_ERROR_INCOMPLETE: - printf("Connection closed by peer\n"); - default: - break; + case DAP_CLI_ERROR_FORMAT: + printf("Response format error!\n"); + break; + case DAP_CLI_ERROR_SOCKET: + printf("Socket read error!\n"); + break; + case DAP_CLI_ERROR_TIMEOUT: + printf("No response recieved\n"); + break; + case DAP_CLI_ERROR_INCOMPLETE: + printf("Connection closed by peer\n"); + default: + break; } + DAP_DELETE(g_sys_dir_path); +#ifdef DAP_OS_WINDOWS + WSACleanup(); +#endif return res; } -#endif +#endif \ No newline at end of file diff --git a/sources/main_node_tool.c b/sources/main_node_tool.c index b65c9f7855c200a0424024c7f93d31fda351561b..1769f34b2a01cfecef213d1c964c8477f1c42b0c 100644 --- a/sources/main_node_tool.c +++ b/sources/main_node_tool.c @@ -36,6 +36,7 @@ #include "dap_file_utils.h" #define LOG_TAG "main_node_tool" +#define NODE_NAME "cellframe-node" #undef log_it #ifdef DAP_OS_WINDOWS @@ -111,76 +112,62 @@ int cellframe_node_tool_Main(int argc, const char **argv) int main(int argc, const char **argv) #endif { - dap_set_appname("cellframe-node"); - + dap_set_appname(NODE_NAME); // get relative path to config - int l_rel_path = 0; - if (argv[1] && argv[2] && !dap_strcmp("-B" , argv[1])) { - g_sys_dir_path = (char*)argv[2]; - l_rel_path = 1; + int l_argv_start = 1, l_argvi, l_err = -2, l_ret_cmd = -1; + if (argc > 2 && !dap_strcmp("-B" , argv[1])) { + g_sys_dir_path = dap_strdup(argv[2]); + if (! dap_dir_test(g_sys_dir_path) ) + return printf("Invalid path \"%s\"", g_sys_dir_path), DAP_DELETE(g_sys_dir_path), -1; + argc -= 2; + argv += 2; + l_argv_start += 2; + } else { + g_sys_dir_path = +#ifdef DAP_OS_WINDOWS + dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); +#elif defined DAP_OS_MAC + dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); +#elif defined DAP_OS_UNIX + dap_strdup_printf("/opt/%s", dap_get_appname()); +#endif } - - if (!g_sys_dir_path) { - #ifdef DAP_OS_WINDOWS - g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); - #elif DAP_OS_MAC - g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); - #elif DAP_OS_ANDROID - g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); - #elif DAP_OS_UNIX - g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); - #endif + if ( argc < 2 ) + return s_help( ), DAP_DELETE(g_sys_dir_path), -2; + if ( s_init() ) + return log_it( L_ERROR, "Can't init modules" ), DAP_DELETE(g_sys_dir_path), -3; + + size_t i, l_size = sizeof(s_opts) / sizeof(struct options); + for (i = 0; i < l_size; ++i) { + l_argvi = l_argv_start; + if (argc >= l_argvi && !strncmp(s_opts[i].cmd, argv[l_argvi], strlen (argv[l_argvi]) + 1)) { + l_err = 0; + for (int isub = 0; isub < s_opts[i].count_of_subcommands; isub++) { + if ( argc - 1 < ++l_argvi || strncmp(s_opts[i].subcmd[isub], argv[l_argvi], strlen(argv[l_argvi]) + 1) ) { + l_err = -1; + break; + } + } + if ( !l_err ) { + l_ret_cmd = s_opts[i].handler(argc, argv); + break; + } + } } - - int ret = s_init(); - - if ( ret ) { - log_it( L_ERROR, "Can't init modules" ); - return ret; - } - - if ( argc < 2 ) { - log_it( L_INFO, "No params. Nothing to do" ); - s_help( ); - exit( -1000 ); - } - - size_t l_size = sizeof(s_opts) / sizeof(struct options); - bool l_find_cmd = false; - bool l_find_subcmd = true; - for (size_t i = 0; i < l_size; i++) { - int argv_index = 1 + l_rel_path*2; - if (argc >= argv_index && !strncmp(s_opts[i].cmd, argv[argv_index], strlen (argv[argv_index]) + 1)) { - l_find_cmd = true; - l_find_subcmd = false; - int match = 1; - for (int isub = 0; isub < s_opts[i].count_of_subcommands; isub++) { - if ((argc - 1) < ++argv_index) { - match = 0; - break; - } - if (strncmp(s_opts[i].subcmd[isub], argv[argv_index], strlen(argv[argv_index]) + 1)) { - match = 0; - break; - } - } - if (match) { - int l_ret = s_opts[i].handler(l_rel_path ? argc-2 : argc, l_rel_path ? argv+2 : argv); - return l_ret; - } - } - } - if (!l_find_cmd) { - printf("Command %s not found.\n", argv[1]); - } - if (!l_find_subcmd) { - printf("No subcommand was found for the %s command or the number of command arguments is less than the minimum.\n", - argv[1]); - } - - s_help(); - dap_config_close(g_config); - return -1; + switch ( l_err ) { + case -2: + printf("Command \"%s\" not found.\n", argv[1]); + s_help(); + break; + case -1: + printf("No subcommand was found for command \"%s\".\n", argv[1]); + s_help(); + break; + default: break; + } + dap_config_close(g_config); + DAP_DELETE(g_sys_dir_path); + return l_err ? l_err : l_ret_cmd; } static int s_wallet_create(int argc, const char **argv) { @@ -633,7 +620,7 @@ static int s_cert_get_addr(int argc, const char **argv) { */ static int s_init() { - if (dap_common_init(dap_get_appname(), NULL, NULL) != 0) + if ( dap_common_init(dap_get_appname(), NULL) ) return printf("Fatal Error: Can't init common functions module"), -2; #if defined (DAP_DEBUG) || !defined(DAP_OS_WINDOWS) dap_log_set_external_output(LOGGER_OUTPUT_STDOUT, NULL); @@ -641,25 +628,19 @@ static int s_init() dap_log_set_external_output(LOGGER_OUTPUT_NONE, NULL); #endif dap_log_level_set(L_ERROR); - char l_config_dir[MAX_PATH] = {'\0'}; - sprintf(l_config_dir, "%s/etc", g_sys_dir_path); - dap_config_init(l_config_dir); - g_config = dap_config_open(dap_get_appname()); - if (g_config) { - uint16_t l_ca_folders_size = 0; - char **l_ca_folders = dap_config_get_item_str_path_array(g_config, "resources", "ca_folders", &l_ca_folders_size); - dap_stpcpy(s_system_ca_dir, l_ca_folders[0]); - dap_config_get_item_str_path_array_free(l_ca_folders, &l_ca_folders_size); - int t = dap_strlen(s_system_ca_dir); - if (s_system_ca_dir[t - 1] == '/') - s_system_ca_dir[t-1] = '\0'; - char *l_wallet_folder = dap_config_get_item_str_path_default(g_config, "resources", "wallets_path", NULL); - dap_stpcpy(s_system_wallet_dir, l_wallet_folder); - DAP_DEL_Z(l_wallet_folder); - } else { - dap_stpcpy(s_system_ca_dir, "./"); - dap_stpcpy(s_system_wallet_dir, "./"); - } + { + char l_config_dir[MAX_PATH]; + snprintf(l_config_dir, MAX_PATH, "%s/etc", g_sys_dir_path); + if ( dap_config_init(l_config_dir) || !(g_config = dap_config_open(dap_get_appname())) ) + return printf("Can't init general config \"%s/%s.cfg\"\n", l_config_dir, dap_get_appname()), -3; + } + char *l_ca_path = dap_config_get_item_str_path_default(g_config, "resources", "ca_folders", "."), + *l_wal_path = dap_config_get_item_str_path_default(g_config, "resources", "wallets_path", "."); + char *l_pos = dap_strncpy(s_system_ca_dir, l_ca_path, MAX_PATH); + if (*--l_pos == '/') + *l_pos = '\0'; + dap_strncpy(s_system_wallet_dir, l_wal_path, MAX_PATH); + DAP_DEL_MULTY(l_ca_path, l_wal_path); return 0; } @@ -671,10 +652,9 @@ static int s_init() */ static int s_is_file_available (char *l_path, const char *name, const char *ext) { - char l_buf_path[255]; - snprintf (l_buf_path, 255, "%s/%s%s", l_path, name, ext ? ext : 0); - if (access (l_buf_path, F_OK)) return -1; - return 0; + char l_buf_path[MAX_PATH + 1]; + snprintf (l_buf_path, MAX_PATH, "%s/%s%s", l_path, name, ext ? ext : 0); + return access (l_buf_path, F_OK) ? -1 : 0; } /** @@ -694,8 +674,7 @@ static void s_fill_hash_key_for_data(dap_enc_key_t *l_key, void *l_data) size_t l_sign_ser_size = l_sign_unserialized_size; uint8_t *l_sign_ser = dap_enc_key_serialize_sign(l_key->type, l_sign_unserialized, &l_sign_ser_size); if ( l_sign_ser ) { - dap_sign_t *l_ret; - DAP_NEW_Z_SIZE_RET(l_ret, dap_sign_t, sizeof(dap_sign_hdr_t) + l_sign_ser_size + l_pub_key_size, NULL); + dap_sign_t *l_ret = DAP_NEW_Z_SIZE_RET_IF_FAIL(dap_sign_t, sizeof(dap_sign_hdr_t) + l_sign_ser_size + l_pub_key_size); // write serialized public key to dap_sign_t memcpy(l_ret->pkey_n_sign, l_pub_key, l_pub_key_size); l_ret->header.type = dap_sign_type_from_key_type(l_key->type);