librats 1.0.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -331
- package/binding.gyp +16 -3
- package/lib/index.d.ts +288 -696
- package/lib/index.js +407 -44
- package/native-src/3rdparty/android/ifaddrs-android.c +1 -0
- package/native-src/3rdparty/android/ifaddrs-android.h +1 -0
- package/native-src/CMakeLists.txt +404 -179
- package/native-src/LICENSE +1 -1
- package/native-src/src/librats/bindings/rats.cpp +762 -0
- package/native-src/src/librats/bindings/rats.h +380 -0
- package/native-src/src/librats/bittorrent/bencode.cpp +437 -0
- package/native-src/src/librats/bittorrent/bencode.h +176 -0
- package/native-src/src/librats/bittorrent/bitfield.cpp +97 -0
- package/native-src/src/librats/bittorrent/bitfield.h +76 -0
- package/native-src/src/librats/bittorrent/byte_io.h +58 -0
- package/native-src/src/librats/bittorrent/choker.cpp +25 -0
- package/native-src/src/librats/bittorrent/choker.h +46 -0
- package/native-src/src/librats/bittorrent/client.cpp +413 -0
- package/native-src/src/librats/bittorrent/client.h +227 -0
- package/native-src/src/librats/bittorrent/disk_io.cpp +209 -0
- package/native-src/src/librats/bittorrent/disk_io.h +150 -0
- package/native-src/src/librats/bittorrent/extensions.cpp +191 -0
- package/native-src/src/librats/bittorrent/extensions.h +94 -0
- package/native-src/src/librats/bittorrent/file_storage.cpp +77 -0
- package/native-src/src/librats/bittorrent/file_storage.h +79 -0
- package/native-src/src/librats/bittorrent/log.h +42 -0
- package/native-src/src/librats/bittorrent/magnet_uri.cpp +98 -0
- package/native-src/src/librats/bittorrent/magnet_uri.h +35 -0
- package/native-src/src/librats/bittorrent/peer_connection.cpp +502 -0
- package/native-src/src/librats/bittorrent/peer_connection.h +194 -0
- package/native-src/src/librats/bittorrent/peer_list.cpp +68 -0
- package/native-src/src/librats/bittorrent/peer_list.h +75 -0
- package/native-src/src/librats/bittorrent/piece_picker.cpp +352 -0
- package/native-src/src/librats/bittorrent/piece_picker.h +201 -0
- package/native-src/src/librats/bittorrent/reactor.cpp +97 -0
- package/native-src/src/librats/bittorrent/reactor.h +89 -0
- package/native-src/src/librats/bittorrent/resume_data.cpp +72 -0
- package/native-src/src/librats/bittorrent/resume_data.h +41 -0
- package/native-src/src/librats/bittorrent/store_buffer.cpp +48 -0
- package/native-src/src/librats/bittorrent/store_buffer.h +47 -0
- package/native-src/src/librats/bittorrent/torrent.cpp +870 -0
- package/native-src/src/librats/bittorrent/torrent.h +260 -0
- package/native-src/src/librats/bittorrent/torrent_creator.cpp +129 -0
- package/native-src/src/librats/bittorrent/torrent_creator.h +58 -0
- package/native-src/src/librats/bittorrent/torrent_info.cpp +314 -0
- package/native-src/src/librats/bittorrent/torrent_info.h +118 -0
- package/native-src/src/librats/bittorrent/tracker.cpp +374 -0
- package/native-src/src/librats/bittorrent/tracker.h +108 -0
- package/native-src/src/librats/bittorrent/types.cpp +206 -0
- package/native-src/src/librats/bittorrent/types.h +86 -0
- package/native-src/src/librats/core/address.cpp +35 -0
- package/native-src/src/librats/core/address.h +78 -0
- package/native-src/src/librats/core/bytes.h +69 -0
- package/native-src/src/librats/core/chained_send_buffer.cpp +172 -0
- package/native-src/src/librats/core/chained_send_buffer.h +183 -0
- package/native-src/src/librats/core/endpoint_parse.cpp +41 -0
- package/native-src/src/librats/core/endpoint_parse.h +31 -0
- package/native-src/src/librats/core/event_bus.h +70 -0
- package/native-src/src/librats/core/host_endpoint.h +56 -0
- package/native-src/src/{io_poller.cpp → librats/core/io_poller.cpp} +520 -65
- package/native-src/src/{io_poller.h → librats/core/io_poller.h} +12 -6
- package/native-src/src/librats/core/ip_address.cpp +120 -0
- package/native-src/src/librats/core/ip_address.h +109 -0
- package/native-src/src/librats/core/mpsc_queue.h +47 -0
- package/native-src/src/librats/core/notifier.h +74 -0
- package/native-src/src/librats/core/receive_buffer.cpp +219 -0
- package/native-src/src/librats/core/receive_buffer.h +171 -0
- package/native-src/src/librats/core/service_registry.h +58 -0
- package/native-src/src/{socket.cpp → librats/core/socket.cpp} +625 -118
- package/native-src/src/librats/core/socket.h +496 -0
- package/native-src/src/librats/core/timer_queue.h +105 -0
- package/native-src/src/librats/core/types.cpp +43 -0
- package/native-src/src/librats/core/types.h +103 -0
- package/native-src/src/librats/core/wakeup_pipe.h +83 -0
- package/native-src/src/{crypto → librats/crypto}/blake2_endian.h +21 -23
- package/native-src/src/{crypto → librats/crypto}/blake2b.c +34 -33
- package/native-src/src/{crypto → librats/crypto}/blake2b.h +7 -6
- package/native-src/src/{crypto → librats/crypto}/blake2s.c +55 -54
- package/native-src/src/{crypto → librats/crypto}/blake2s.h +13 -12
- package/native-src/src/{crypto → librats/crypto}/chacha.c +22 -21
- package/native-src/src/{crypto → librats/crypto}/chacha.h +14 -13
- package/native-src/src/{crypto → librats/crypto}/chachapoly.c +56 -56
- package/native-src/src/{crypto → librats/crypto}/chachapoly.h +24 -17
- package/native-src/src/{crc32.cpp → librats/crypto/crc32.cpp} +1 -1
- package/native-src/src/{crc32.h → librats/crypto/crc32.h} +3 -1
- package/native-src/src/{crypto → librats/crypto}/curve25519.c +6 -4
- package/native-src/src/{crypto → librats/crypto}/curve25519.h +6 -3
- package/native-src/src/librats/crypto/hkdf.c +266 -0
- package/native-src/src/{crypto → librats/crypto}/hkdf.h +19 -19
- package/native-src/src/{noise.cpp → librats/crypto/noise.cpp} +84 -73
- package/native-src/src/{noise.h → librats/crypto/noise.h} +18 -8
- package/native-src/src/{crypto → librats/crypto}/poly1305.c +47 -46
- package/native-src/src/librats/crypto/poly1305.h +37 -0
- package/native-src/src/{sha1.cpp → librats/crypto/sha1.cpp} +33 -1
- package/native-src/src/{sha1.h → librats/crypto/sha1.h} +14 -6
- package/native-src/src/{crypto → librats/crypto}/sha256.c +15 -14
- package/native-src/src/{crypto → librats/crypto}/sha256.h +8 -7
- package/native-src/src/{crypto → librats/crypto}/sha512.c +15 -14
- package/native-src/src/{crypto → librats/crypto}/sha512.h +8 -7
- package/native-src/src/librats/dht/announce.cpp +37 -0
- package/native-src/src/librats/dht/announce.h +41 -0
- package/native-src/src/librats/dht/bep42.cpp +109 -0
- package/native-src/src/librats/dht/bep42.h +48 -0
- package/native-src/src/librats/dht/dht.cpp +501 -0
- package/native-src/src/librats/dht/dht.h +119 -0
- package/native-src/src/librats/dht/dht_runner.cpp +103 -0
- package/native-src/src/librats/dht/dht_runner.h +71 -0
- package/native-src/src/librats/dht/dos_blocker.cpp +42 -0
- package/native-src/src/librats/dht/dos_blocker.h +47 -0
- package/native-src/src/librats/dht/find_peers.cpp +52 -0
- package/native-src/src/librats/dht/find_peers.h +73 -0
- package/native-src/src/librats/dht/id.h +167 -0
- package/native-src/src/{krpc.cpp → librats/dht/krpc.cpp} +32 -81
- package/native-src/src/{krpc.h → librats/dht/krpc.h} +19 -23
- package/native-src/src/librats/dht/log.h +38 -0
- package/native-src/src/librats/dht/node.cpp +473 -0
- package/native-src/src/librats/dht/node.h +164 -0
- package/native-src/src/librats/dht/node_entry.h +81 -0
- package/native-src/src/librats/dht/observer.h +72 -0
- package/native-src/src/librats/dht/persistence.cpp +90 -0
- package/native-src/src/librats/dht/persistence.h +32 -0
- package/native-src/src/librats/dht/routing_table.cpp +559 -0
- package/native-src/src/librats/dht/routing_table.h +185 -0
- package/native-src/src/librats/dht/rpc_manager.cpp +127 -0
- package/native-src/src/librats/dht/rpc_manager.h +77 -0
- package/native-src/src/librats/dht/storage.cpp +92 -0
- package/native-src/src/librats/dht/storage.h +74 -0
- package/native-src/src/librats/dht/transport.h +27 -0
- package/native-src/src/librats/dht/traversal.cpp +326 -0
- package/native-src/src/librats/dht/traversal.h +120 -0
- package/native-src/src/librats/dht/udp_transport.cpp +49 -0
- package/native-src/src/librats/dht/udp_transport.h +51 -0
- package/native-src/src/librats/mdns/log.h +22 -0
- package/native-src/src/{mdns.cpp → librats/mdns/mdns.cpp} +75 -40
- package/native-src/src/{mdns.h → librats/mdns/mdns.h} +9 -8
- package/native-src/src/{natpmp.cpp → librats/nat/natpmp.cpp} +12 -9
- package/native-src/src/{natpmp.h → librats/nat/natpmp.h} +3 -3
- package/native-src/src/{port_mapping.h → librats/nat/port_mapping.h} +3 -2
- package/native-src/src/{stun.cpp → librats/nat/stun.cpp} +4 -4
- package/native-src/src/{stun.h → librats/nat/stun.h} +1 -1
- package/native-src/src/{upnp.cpp → librats/nat/upnp.cpp} +6 -6
- package/native-src/src/{upnp.h → librats/nat/upnp.h} +2 -2
- package/native-src/src/librats/node/circuit_service.h +84 -0
- package/native-src/src/librats/node/config.h +110 -0
- package/native-src/src/librats/node/dial_service.h +54 -0
- package/native-src/src/librats/node/dialer.cpp +264 -0
- package/native-src/src/librats/node/dialer.h +188 -0
- package/native-src/src/librats/node/host_events.h +26 -0
- package/native-src/src/librats/node/identify.cpp +130 -0
- package/native-src/src/librats/node/identify.h +71 -0
- package/native-src/src/librats/node/nat_status.cpp +103 -0
- package/native-src/src/librats/node/nat_status.h +118 -0
- package/native-src/src/librats/node/node.cpp +865 -0
- package/native-src/src/librats/node/node.h +344 -0
- package/native-src/src/librats/node/node_context.h +33 -0
- package/native-src/src/librats/node/peer_network.h +91 -0
- package/native-src/src/librats/peer/peer.h +49 -0
- package/native-src/src/librats/peer/peer_book.cpp +181 -0
- package/native-src/src/librats/peer/peer_book.h +88 -0
- package/native-src/src/librats/peer/peer_id.cpp +72 -0
- package/native-src/src/librats/peer/peer_id.h +62 -0
- package/native-src/src/librats/peer/peer_info.h +37 -0
- package/native-src/src/librats/peer/peer_table.cpp +170 -0
- package/native-src/src/librats/peer/peer_table.h +148 -0
- package/native-src/src/librats/security/handshaker.h +66 -0
- package/native-src/src/librats/security/identity.h +43 -0
- package/native-src/src/librats/security/noise_security.cpp +122 -0
- package/native-src/src/librats/security/noise_security.h +37 -0
- package/native-src/src/librats/security/plaintext_security.h +106 -0
- package/native-src/src/librats/security/session.h +37 -0
- package/native-src/src/{storage.cpp → librats/storage/storage.cpp} +369 -522
- package/native-src/src/{storage.h → librats/storage/storage.h} +135 -299
- package/native-src/src/librats/subsystems/bittorrent.cpp +211 -0
- package/native-src/src/librats/subsystems/bittorrent.h +136 -0
- package/native-src/src/librats/subsystems/dht_discovery.cpp +202 -0
- package/native-src/src/librats/subsystems/dht_discovery.h +123 -0
- package/native-src/src/librats/subsystems/dht_service.h +36 -0
- package/native-src/src/librats/subsystems/file_transfer.cpp +972 -0
- package/native-src/src/librats/subsystems/file_transfer.h +367 -0
- package/native-src/src/librats/subsystems/hole_punch.cpp +605 -0
- package/native-src/src/librats/subsystems/hole_punch.h +290 -0
- package/native-src/src/librats/subsystems/hole_punch_service.h +38 -0
- package/native-src/src/librats/subsystems/mdns_discovery.cpp +66 -0
- package/native-src/src/librats/subsystems/mdns_discovery.h +55 -0
- package/native-src/src/librats/subsystems/message_json.cpp +112 -0
- package/native-src/src/librats/subsystems/message_json.h +88 -0
- package/native-src/src/librats/subsystems/peer_exchange.cpp +241 -0
- package/native-src/src/librats/subsystems/peer_exchange.h +136 -0
- package/native-src/src/librats/subsystems/ping_service.cpp +98 -0
- package/native-src/src/librats/subsystems/ping_service.h +66 -0
- package/native-src/src/librats/subsystems/port_mapping_service.cpp +192 -0
- package/native-src/src/librats/subsystems/port_mapping_service.h +84 -0
- package/native-src/src/librats/subsystems/pubsub.cpp +567 -0
- package/native-src/src/librats/subsystems/pubsub.h +175 -0
- package/native-src/src/librats/subsystems/reconnection.cpp +239 -0
- package/native-src/src/librats/subsystems/reconnection.h +126 -0
- package/native-src/src/librats/subsystems/relay.cpp +1142 -0
- package/native-src/src/librats/subsystems/relay.h +211 -0
- package/native-src/src/librats/subsystems/relay_service.h +46 -0
- package/native-src/src/librats/transport/connection.cpp +343 -0
- package/native-src/src/librats/transport/connection.h +283 -0
- package/native-src/src/librats/transport/link.h +96 -0
- package/native-src/src/librats/transport/reactor.cpp +588 -0
- package/native-src/src/librats/transport/reactor.h +262 -0
- package/native-src/src/librats/transport/reactor_pool.h +81 -0
- package/native-src/src/librats/transport/relay_link.cpp +208 -0
- package/native-src/src/librats/transport/relay_link.h +303 -0
- package/native-src/src/librats/transport/tcp_link.cpp +49 -0
- package/native-src/src/librats/transport/tcp_link.h +43 -0
- package/native-src/src/librats/transport/udp_mux.cpp +617 -0
- package/native-src/src/librats/transport/udp_mux.h +363 -0
- package/native-src/src/librats/transport/udp_packet.cpp +121 -0
- package/native-src/src/librats/transport/udp_packet.h +190 -0
- package/native-src/src/librats/transport/udp_stream.cpp +1194 -0
- package/native-src/src/librats/transport/udp_stream.h +614 -0
- package/native-src/src/librats/util/features.h.in +51 -0
- package/native-src/src/{fs.cpp → librats/util/fs.cpp} +51 -3
- package/native-src/src/librats/util/fs.h +136 -0
- package/native-src/src/librats/util/json.cpp +1002 -0
- package/native-src/src/librats/util/json.h +444 -0
- package/native-src/src/{logger.cpp → librats/util/logger.cpp} +1 -1
- package/native-src/src/{logger.h → librats/util/logger.h} +43 -31
- package/native-src/src/{network_monitor.cpp → librats/util/network_monitor.cpp} +12 -4
- package/native-src/src/{network_monitor.h → librats/util/network_monitor.h} +2 -1
- package/native-src/src/{network_utils.cpp → librats/util/network_utils.cpp} +38 -23
- package/native-src/src/{network_utils.h → librats/util/network_utils.h} +15 -8
- package/native-src/src/{os.cpp → librats/util/os.cpp} +48 -18
- package/native-src/src/librats/util/rats_export.h +69 -0
- package/native-src/src/{version.cpp → librats/util/version.cpp} +2 -2
- package/native-src/src/{version.h.in → librats/util/version.h.in} +1 -1
- package/native-src/src/librats/wire/frame.cpp +76 -0
- package/native-src/src/librats/wire/frame.h +111 -0
- package/native-src/src/librats/wire/message_router.cpp +45 -0
- package/native-src/src/librats/wire/message_router.h +47 -0
- package/package.json +5 -4
- package/scripts/build-librats.js +1 -0
- package/scripts/postinstall.js +3 -3
- package/scripts/prepare-package.js +4 -4
- package/scripts/verify-installation.js +63 -105
- package/src/librats_node.cpp +1067 -1323
- package/native-src/src/bencode.cpp +0 -485
- package/native-src/src/bencode.h +0 -145
- package/native-src/src/bittorrent.cpp +0 -14
- package/native-src/src/bittorrent.h +0 -74
- package/native-src/src/bt_bitfield.cpp +0 -372
- package/native-src/src/bt_bitfield.h +0 -316
- package/native-src/src/bt_choker.cpp +0 -228
- package/native-src/src/bt_choker.h +0 -147
- package/native-src/src/bt_client.cpp +0 -1047
- package/native-src/src/bt_client.h +0 -445
- package/native-src/src/bt_create_torrent.cpp +0 -677
- package/native-src/src/bt_create_torrent.h +0 -473
- package/native-src/src/bt_extension.cpp +0 -469
- package/native-src/src/bt_extension.h +0 -309
- package/native-src/src/bt_file_storage.cpp +0 -261
- package/native-src/src/bt_file_storage.h +0 -298
- package/native-src/src/bt_handshake.cpp +0 -134
- package/native-src/src/bt_handshake.h +0 -157
- package/native-src/src/bt_messages.cpp +0 -364
- package/native-src/src/bt_messages.h +0 -324
- package/native-src/src/bt_network.cpp +0 -1007
- package/native-src/src/bt_network.h +0 -417
- package/native-src/src/bt_peer_connection.cpp +0 -742
- package/native-src/src/bt_peer_connection.h +0 -592
- package/native-src/src/bt_piece_picker.cpp +0 -786
- package/native-src/src/bt_piece_picker.h +0 -473
- package/native-src/src/bt_resume_data.cpp +0 -410
- package/native-src/src/bt_resume_data.h +0 -249
- package/native-src/src/bt_torrent.cpp +0 -2120
- package/native-src/src/bt_torrent.h +0 -641
- package/native-src/src/bt_torrent_info.cpp +0 -659
- package/native-src/src/bt_torrent_info.h +0 -418
- package/native-src/src/bt_types.h +0 -621
- package/native-src/src/chained_send_buffer.cpp +0 -75
- package/native-src/src/chained_send_buffer.h +0 -137
- package/native-src/src/crypto/hkdf.c +0 -266
- package/native-src/src/crypto/poly1305.h +0 -36
- package/native-src/src/dht.cpp +0 -3311
- package/native-src/src/dht.h +0 -717
- package/native-src/src/disk_io.cpp +0 -632
- package/native-src/src/disk_io.h +0 -315
- package/native-src/src/file_transfer.cpp +0 -1415
- package/native-src/src/file_transfer.h +0 -286
- package/native-src/src/fs.h +0 -108
- package/native-src/src/gossipsub.cpp +0 -1139
- package/native-src/src/gossipsub.h +0 -403
- package/native-src/src/ice.cpp +0 -893
- package/native-src/src/ice.h +0 -559
- package/native-src/src/json.hpp +0 -25526
- package/native-src/src/librats.cpp +0 -2378
- package/native-src/src/librats.h +0 -2324
- package/native-src/src/librats_bittorrent.cpp +0 -601
- package/native-src/src/librats_c.cpp +0 -1557
- package/native-src/src/librats_c.h +0 -323
- package/native-src/src/librats_discovery.cpp +0 -402
- package/native-src/src/librats_encryption.cpp +0 -275
- package/native-src/src/librats_file_transfer.cpp +0 -144
- package/native-src/src/librats_gossipsub.cpp +0 -289
- package/native-src/src/librats_ice.cpp +0 -213
- package/native-src/src/librats_log_macros.h +0 -36
- package/native-src/src/librats_logging.cpp +0 -173
- package/native-src/src/librats_mdns.cpp +0 -166
- package/native-src/src/librats_persistence.cpp +0 -796
- package/native-src/src/librats_portmap.cpp +0 -419
- package/native-src/src/librats_reconnection.cpp +0 -218
- package/native-src/src/librats_statistic.cpp +0 -105
- package/native-src/src/librats_storage.cpp +0 -189
- package/native-src/src/rats_export.h +0 -17
- package/native-src/src/receive_buffer.cpp +0 -82
- package/native-src/src/receive_buffer.h +0 -127
- package/native-src/src/socket.h +0 -228
- package/native-src/src/threadmanager.cpp +0 -105
- package/native-src/src/threadmanager.h +0 -53
- package/native-src/src/tracker.cpp +0 -1264
- package/native-src/src/tracker.h +0 -319
- package/native-src/src/turn.cpp +0 -762
- package/native-src/src/turn.h +0 -460
- package/native-src/src/wakeup_pipe.h +0 -60
- /package/native-src/src/{os.h → librats/util/os.h} +0 -0
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
#include "librats.h"
|
|
2
|
-
#include "librats_log_macros.h"
|
|
3
|
-
#include <algorithm>
|
|
4
|
-
|
|
5
|
-
namespace librats {
|
|
6
|
-
|
|
7
|
-
//=============================================================================
|
|
8
|
-
// Logging Control API Implementation
|
|
9
|
-
//=============================================================================
|
|
10
|
-
|
|
11
|
-
void RatsClient::set_console_logging_enabled(bool enabled) {
|
|
12
|
-
Logger::getInstance().set_console_logging_enabled(enabled);
|
|
13
|
-
// Only log if console is enabled, otherwise we're silently disabling
|
|
14
|
-
if (enabled) {
|
|
15
|
-
LOG_CLIENT_INFO("Console logging enabled");
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
bool RatsClient::is_console_logging_enabled() const {
|
|
20
|
-
return Logger::getInstance().is_console_logging_enabled();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
void RatsClient::set_logging_enabled(bool enabled) {
|
|
24
|
-
LOG_CLIENT_INFO("Setting file logging " << (enabled ? "enabled" : "disabled"));
|
|
25
|
-
|
|
26
|
-
Logger& logger = Logger::getInstance();
|
|
27
|
-
|
|
28
|
-
if (enabled) {
|
|
29
|
-
// Set default log file path if not already set
|
|
30
|
-
if (logger.get_log_file_path().empty()) {
|
|
31
|
-
logger.set_log_file_path("rats.log");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
logger.set_file_logging_enabled(enabled);
|
|
36
|
-
|
|
37
|
-
if (enabled) {
|
|
38
|
-
LOG_CLIENT_INFO("File logging enabled - logs will be written to: " << logger.get_log_file_path());
|
|
39
|
-
} else {
|
|
40
|
-
LOG_CLIENT_INFO("File logging disabled");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
bool RatsClient::is_logging_enabled() const {
|
|
45
|
-
return Logger::getInstance().is_file_logging_enabled();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
void RatsClient::set_log_file_path(const std::string& file_path) {
|
|
49
|
-
Logger& logger = Logger::getInstance();
|
|
50
|
-
logger.set_log_file_path(file_path);
|
|
51
|
-
LOG_CLIENT_INFO("Log file path set to: " << file_path);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
std::string RatsClient::get_log_file_path() const {
|
|
55
|
-
return Logger::getInstance().get_log_file_path();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
void RatsClient::set_log_level(LogLevel level) {
|
|
59
|
-
Logger::getInstance().set_log_level(level);
|
|
60
|
-
LOG_CLIENT_INFO("Log level set to: " << static_cast<int>(level));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
void RatsClient::set_log_level(const std::string& level_str) {
|
|
64
|
-
LogLevel level;
|
|
65
|
-
|
|
66
|
-
std::string upper_level = level_str;
|
|
67
|
-
std::transform(upper_level.begin(), upper_level.end(), upper_level.begin(), ::toupper);
|
|
68
|
-
|
|
69
|
-
if (upper_level == "DEBUG") {
|
|
70
|
-
level = LogLevel::DEBUG;
|
|
71
|
-
} else if (upper_level == "INFO") {
|
|
72
|
-
level = LogLevel::INFO;
|
|
73
|
-
} else if (upper_level == "WARN" || upper_level == "WARNING") {
|
|
74
|
-
level = LogLevel::WARN;
|
|
75
|
-
} else if (upper_level == "ERROR") {
|
|
76
|
-
level = LogLevel::ERROR;
|
|
77
|
-
} else {
|
|
78
|
-
LOG_CLIENT_WARN("Invalid log level string: " << level_str << " - using INFO as default");
|
|
79
|
-
level = LogLevel::INFO;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
set_log_level(level);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
LogLevel RatsClient::get_log_level() const {
|
|
86
|
-
// Note: Logger doesn't expose get_log_level method, so we'll use a workaround
|
|
87
|
-
// by checking which level actually outputs. This is a limitation of the current Logger design.
|
|
88
|
-
Logger& logger = Logger::getInstance();
|
|
89
|
-
|
|
90
|
-
// Try to determine current level by checking if debug messages would be shown
|
|
91
|
-
// This is a simple approximation - for a more accurate implementation,
|
|
92
|
-
// the Logger class would need a get_log_level() method
|
|
93
|
-
|
|
94
|
-
// For now, we'll return INFO as a reasonable default
|
|
95
|
-
// In a production system, the Logger class should be enhanced to track and return the current level
|
|
96
|
-
return LogLevel::INFO;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
void RatsClient::set_log_colors_enabled(bool enabled) {
|
|
100
|
-
Logger::getInstance().set_colors_enabled(enabled);
|
|
101
|
-
LOG_CLIENT_INFO("Log colors " << (enabled ? "enabled" : "disabled"));
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
bool RatsClient::is_log_colors_enabled() const {
|
|
105
|
-
// Note: Logger doesn't expose a getter for colors_enabled
|
|
106
|
-
// This is another limitation of the current Logger design
|
|
107
|
-
// For now, return true as a reasonable default
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
void RatsClient::set_log_timestamps_enabled(bool enabled) {
|
|
112
|
-
Logger::getInstance().set_timestamps_enabled(enabled);
|
|
113
|
-
LOG_CLIENT_INFO("Log timestamps " << (enabled ? "enabled" : "disabled"));
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
bool RatsClient::is_log_timestamps_enabled() const {
|
|
117
|
-
// Note: Logger doesn't expose a getter for timestamps_enabled
|
|
118
|
-
// This is another limitation of the current Logger design
|
|
119
|
-
// For now, return true as a reasonable default
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
void RatsClient::set_log_rotation_size(size_t max_size_bytes) {
|
|
124
|
-
Logger::getInstance().set_log_rotation_size(max_size_bytes);
|
|
125
|
-
LOG_CLIENT_INFO("Log rotation size set to: " << max_size_bytes << " bytes");
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
void RatsClient::set_log_retention_count(int count) {
|
|
129
|
-
Logger::getInstance().set_log_retention_count(count);
|
|
130
|
-
LOG_CLIENT_INFO("Log retention count set to: " << count << " files");
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
void RatsClient::set_log_rotate_on_startup(bool enabled) {
|
|
134
|
-
Logger::getInstance().set_rotate_on_startup(enabled);
|
|
135
|
-
LOG_CLIENT_INFO("Log rotation on startup " << (enabled ? "enabled" : "disabled"));
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
bool RatsClient::is_log_rotate_on_startup_enabled() const {
|
|
139
|
-
return Logger::getInstance().is_rotate_on_startup_enabled();
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
void RatsClient::clear_log_file() {
|
|
143
|
-
Logger& logger = Logger::getInstance();
|
|
144
|
-
std::string log_path = logger.get_log_file_path();
|
|
145
|
-
|
|
146
|
-
if (log_path.empty()) {
|
|
147
|
-
LOG_CLIENT_WARN("No log file path set - cannot clear log file");
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
// Temporarily disable file logging
|
|
153
|
-
bool was_enabled = logger.is_file_logging_enabled();
|
|
154
|
-
if (was_enabled) {
|
|
155
|
-
logger.set_file_logging_enabled(false);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Delete the log file
|
|
159
|
-
std::remove(log_path.c_str());
|
|
160
|
-
|
|
161
|
-
// Re-enable file logging if it was enabled
|
|
162
|
-
if (was_enabled) {
|
|
163
|
-
logger.set_file_logging_enabled(true);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
LOG_CLIENT_INFO("Log file cleared: " << log_path);
|
|
167
|
-
|
|
168
|
-
} catch (const std::exception& e) {
|
|
169
|
-
LOG_CLIENT_ERROR("Failed to clear log file: " << e.what());
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
#include "librats.h"
|
|
2
|
-
#include "mdns.h"
|
|
3
|
-
#include <iostream>
|
|
4
|
-
#include <algorithm>
|
|
5
|
-
#include <chrono>
|
|
6
|
-
#include <memory>
|
|
7
|
-
#include <stdexcept>
|
|
8
|
-
|
|
9
|
-
#include "librats_log_macros.h"
|
|
10
|
-
|
|
11
|
-
namespace librats {
|
|
12
|
-
|
|
13
|
-
// ===== mDNS DISCOVERY METHODS IMPLEMENTATION =====
|
|
14
|
-
|
|
15
|
-
bool RatsClient::start_mdns_discovery(const std::string& service_instance_name,
|
|
16
|
-
const std::map<std::string, std::string>& txt_records) {
|
|
17
|
-
if (!running_.load()) {
|
|
18
|
-
LOG_CLIENT_ERROR("RatsClient is not running, cannot start mDNS discovery");
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (mdns_client_ && mdns_client_->is_running()) {
|
|
23
|
-
LOG_CLIENT_WARN("mDNS discovery is already running");
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
LOG_CLIENT_INFO("Starting mDNS service discovery and announcement");
|
|
28
|
-
|
|
29
|
-
// Create service instance name from our peer ID if not provided
|
|
30
|
-
std::string instance_name = service_instance_name;
|
|
31
|
-
if (instance_name.empty()) {
|
|
32
|
-
instance_name = "librats-" + get_our_peer_id().substr(0, 8);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Create mDNS client
|
|
36
|
-
mdns_client_ = std::make_unique<MdnsClient>(instance_name, listen_port_);
|
|
37
|
-
|
|
38
|
-
// Set service type based on protocol name (e.g., "_rats-search._tcp.local.")
|
|
39
|
-
std::string protocol_name = get_protocol_name();
|
|
40
|
-
std::string service_type = "_" + protocol_name + "._tcp.local.";
|
|
41
|
-
mdns_client_->set_service_type(service_type);
|
|
42
|
-
|
|
43
|
-
// Set service discovery callback
|
|
44
|
-
mdns_client_->set_service_callback([this](const MdnsService& service, bool is_new) {
|
|
45
|
-
handle_mdns_service_discovery(service, is_new);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
// Start mDNS client
|
|
49
|
-
if (!mdns_client_->start()) {
|
|
50
|
-
LOG_CLIENT_ERROR("Failed to start mDNS client");
|
|
51
|
-
mdns_client_.reset();
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Start service announcement
|
|
56
|
-
if (!mdns_client_->announce_service(instance_name, listen_port_, txt_records)) {
|
|
57
|
-
LOG_CLIENT_WARN("Failed to start mDNS service announcement");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Start service discovery
|
|
61
|
-
if (!mdns_client_->start_discovery()) {
|
|
62
|
-
LOG_CLIENT_WARN("Failed to start mDNS service discovery");
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
LOG_CLIENT_INFO("mDNS discovery started successfully for service: " << instance_name);
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
void RatsClient::stop_mdns_discovery() {
|
|
70
|
-
if (!mdns_client_) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
LOG_CLIENT_INFO("Stopping mDNS discovery");
|
|
75
|
-
|
|
76
|
-
mdns_client_->stop();
|
|
77
|
-
mdns_client_.reset();
|
|
78
|
-
|
|
79
|
-
LOG_CLIENT_INFO("mDNS discovery stopped");
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
bool RatsClient::is_mdns_running() const {
|
|
83
|
-
return mdns_client_ && mdns_client_->is_running();
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
void RatsClient::set_mdns_callback(std::function<void(const std::string&, int, const std::string&)> callback) {
|
|
87
|
-
mdns_callback_ = callback;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
std::vector<MdnsService> RatsClient::get_mdns_services() const {
|
|
91
|
-
if (!mdns_client_) {
|
|
92
|
-
return {};
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return mdns_client_->get_recent_services(std::chrono::seconds(300)); // Services seen in last 5 minutes
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
bool RatsClient::query_mdns_services() {
|
|
99
|
-
if (!mdns_client_) {
|
|
100
|
-
LOG_CLIENT_ERROR("mDNS client not initialized");
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return mdns_client_->query_services();
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
void RatsClient::handle_mdns_service_discovery(const MdnsService& service, bool is_new) {
|
|
108
|
-
LOG_CLIENT_INFO("mDNS discovered " << (is_new ? "new" : "updated") << " librats service: "
|
|
109
|
-
<< service.service_name << " at " << service.ip_address << ":" << service.port);
|
|
110
|
-
|
|
111
|
-
// Extract instance name from service name for logging
|
|
112
|
-
std::string instance_name = service.service_name;
|
|
113
|
-
size_t pos = instance_name.find("._librats._tcp.local.");
|
|
114
|
-
if (pos != std::string::npos) {
|
|
115
|
-
instance_name = instance_name.substr(0, pos);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Call user callback if registered
|
|
119
|
-
if (mdns_callback_) {
|
|
120
|
-
try {
|
|
121
|
-
mdns_callback_(service.ip_address, service.port, instance_name);
|
|
122
|
-
} catch (const std::exception& e) {
|
|
123
|
-
LOG_CLIENT_ERROR("Exception in mDNS callback: " << e.what());
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Auto-connect to discovered services if they're new
|
|
128
|
-
if (is_new) {
|
|
129
|
-
// Check if this peer should be ignored (local interface)
|
|
130
|
-
if (should_ignore_peer(service.ip_address, service.port)) {
|
|
131
|
-
LOG_CLIENT_DEBUG("Ignoring mDNS discovered peer " << service.ip_address << ":"
|
|
132
|
-
<< service.port << " - local interface address");
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Check if we're already connected to this peer
|
|
137
|
-
std::string normalized_peer_address = normalize_peer_address(service.ip_address, service.port);
|
|
138
|
-
if (is_already_connected_to_address(normalized_peer_address)) {
|
|
139
|
-
LOG_CLIENT_DEBUG("Already connected to mDNS discovered peer: " << normalized_peer_address);
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Check if peer limit is reached
|
|
144
|
-
if (is_peer_limit_reached()) {
|
|
145
|
-
LOG_CLIENT_DEBUG("Peer limit reached, not connecting to mDNS discovered peer "
|
|
146
|
-
<< service.ip_address << ":" << service.port);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
LOG_CLIENT_INFO("Attempting to connect to mDNS discovered peer: "
|
|
151
|
-
<< service.ip_address << ":" << service.port);
|
|
152
|
-
|
|
153
|
-
// Try to connect to the discovered peer (non-blocking)
|
|
154
|
-
std::thread([this, service]() {
|
|
155
|
-
if (connect_to_peer(service.ip_address, service.port)) {
|
|
156
|
-
LOG_CLIENT_INFO("Successfully connected to mDNS discovered peer: "
|
|
157
|
-
<< service.ip_address << ":" << service.port);
|
|
158
|
-
} else {
|
|
159
|
-
LOG_CLIENT_DEBUG("Failed to connect to mDNS discovered peer: "
|
|
160
|
-
<< service.ip_address << ":" << service.port);
|
|
161
|
-
}
|
|
162
|
-
}).detach();
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
} // namespace librats
|