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,323 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "rats_export.h"
|
|
4
|
-
#include <stdint.h>
|
|
5
|
-
#include <stddef.h>
|
|
6
|
-
|
|
7
|
-
#ifdef __cplusplus
|
|
8
|
-
extern "C" {
|
|
9
|
-
#endif
|
|
10
|
-
|
|
11
|
-
// Opaque handle to a RatsClient instance
|
|
12
|
-
typedef void* rats_client_t;
|
|
13
|
-
|
|
14
|
-
// Memory helpers for returned strings
|
|
15
|
-
RATS_API void rats_string_free(const char* str);
|
|
16
|
-
|
|
17
|
-
// Version / ABI
|
|
18
|
-
RATS_API const char* rats_get_version_string(void);
|
|
19
|
-
RATS_API void rats_get_version(int* major, int* minor, int* patch, int* build);
|
|
20
|
-
RATS_API const char* rats_get_git_describe(void);
|
|
21
|
-
RATS_API uint32_t rats_get_abi(void);
|
|
22
|
-
|
|
23
|
-
// Client lifecycle
|
|
24
|
-
RATS_API rats_client_t rats_create(int listen_port);
|
|
25
|
-
RATS_API void rats_destroy(rats_client_t client);
|
|
26
|
-
RATS_API int rats_start(rats_client_t client);
|
|
27
|
-
RATS_API void rats_stop(rats_client_t client);
|
|
28
|
-
|
|
29
|
-
// Basic operations
|
|
30
|
-
RATS_API int rats_connect(rats_client_t client, const char* host, int port);
|
|
31
|
-
RATS_API int rats_get_listen_port(rats_client_t client);
|
|
32
|
-
RATS_API int rats_broadcast_string(rats_client_t client, const char* message);
|
|
33
|
-
RATS_API int rats_send_string(rats_client_t client, const char* peer_id, const char* message);
|
|
34
|
-
|
|
35
|
-
// Info
|
|
36
|
-
RATS_API int rats_get_peer_count(rats_client_t client);
|
|
37
|
-
RATS_API char* rats_get_our_peer_id(rats_client_t client); // caller must free with rats_string_free
|
|
38
|
-
RATS_API char* rats_get_connection_statistics_json(rats_client_t client); // caller must free with rats_string_free
|
|
39
|
-
RATS_API char** rats_get_validated_peer_ids(rats_client_t client, int* count); // caller must free array and strings
|
|
40
|
-
RATS_API char** rats_get_peer_ids(rats_client_t client, int* count); // caller must free array and strings
|
|
41
|
-
RATS_API char* rats_get_peer_info_json(rats_client_t client, const char* peer_id); // caller must free
|
|
42
|
-
|
|
43
|
-
// Logging controls (optional helpers)
|
|
44
|
-
RATS_API void rats_set_console_logging_enabled(int enabled);
|
|
45
|
-
RATS_API int rats_is_console_logging_enabled(void);
|
|
46
|
-
RATS_API void rats_set_logging_enabled(int enabled);
|
|
47
|
-
RATS_API void rats_set_log_level(const char* level_str); // "DEBUG", "INFO", "WARN", "ERROR"
|
|
48
|
-
RATS_API void rats_set_log_file_path(rats_client_t client, const char* file_path);
|
|
49
|
-
RATS_API char* rats_get_log_file_path(rats_client_t client); // caller must free
|
|
50
|
-
RATS_API void rats_set_log_colors_enabled(rats_client_t client, int enabled);
|
|
51
|
-
RATS_API int rats_is_log_colors_enabled(rats_client_t client);
|
|
52
|
-
RATS_API void rats_set_log_timestamps_enabled(rats_client_t client, int enabled);
|
|
53
|
-
RATS_API int rats_is_log_timestamps_enabled(rats_client_t client);
|
|
54
|
-
RATS_API void rats_set_log_rotation_size(rats_client_t client, size_t max_size_bytes);
|
|
55
|
-
RATS_API void rats_set_log_retention_count(rats_client_t client, int count);
|
|
56
|
-
RATS_API void rats_set_log_rotate_on_startup(rats_client_t client, int enabled);
|
|
57
|
-
RATS_API int rats_is_log_rotate_on_startup_enabled(rats_client_t client);
|
|
58
|
-
RATS_API void rats_clear_log_file(rats_client_t client);
|
|
59
|
-
|
|
60
|
-
// Error codes
|
|
61
|
-
typedef enum {
|
|
62
|
-
RATS_SUCCESS = 0,
|
|
63
|
-
RATS_ERROR_INVALID_HANDLE = -1,
|
|
64
|
-
RATS_ERROR_INVALID_PARAMETER = -2,
|
|
65
|
-
RATS_ERROR_NOT_RUNNING = -3,
|
|
66
|
-
RATS_ERROR_OPERATION_FAILED = -4,
|
|
67
|
-
RATS_ERROR_PEER_NOT_FOUND = -5,
|
|
68
|
-
RATS_ERROR_MEMORY_ALLOCATION = -6,
|
|
69
|
-
RATS_ERROR_JSON_PARSE = -7
|
|
70
|
-
} rats_error_t;
|
|
71
|
-
|
|
72
|
-
// C callbacks
|
|
73
|
-
typedef void (*rats_connection_cb)(void* user_data, const char* peer_id);
|
|
74
|
-
typedef void (*rats_string_cb)(void* user_data, const char* peer_id, const char* message);
|
|
75
|
-
typedef void (*rats_binary_cb)(void* user_data, const char* peer_id, const void* data, size_t size);
|
|
76
|
-
typedef void (*rats_json_cb)(void* user_data, const char* peer_id, const char* json_str);
|
|
77
|
-
typedef void (*rats_disconnect_cb)(void* user_data, const char* peer_id);
|
|
78
|
-
typedef void (*rats_peer_discovered_cb)(void* user_data, const char* host, int port, const char* service_name);
|
|
79
|
-
typedef void (*rats_message_cb)(void* user_data, const char* peer_id, const char* message_data);
|
|
80
|
-
typedef void (*rats_peers_found_cb)(void* user_data, const char** peer_addresses, int count);
|
|
81
|
-
|
|
82
|
-
// Peer configuration
|
|
83
|
-
RATS_API rats_error_t rats_set_max_peers(rats_client_t client, int max_peers);
|
|
84
|
-
RATS_API int rats_get_max_peers(rats_client_t client);
|
|
85
|
-
RATS_API int rats_is_peer_limit_reached(rats_client_t client);
|
|
86
|
-
|
|
87
|
-
// Connection methods
|
|
88
|
-
RATS_API rats_error_t rats_disconnect_peer_by_id(rats_client_t client, const char* peer_id);
|
|
89
|
-
|
|
90
|
-
// Binary data operations
|
|
91
|
-
RATS_API rats_error_t rats_send_binary(rats_client_t client, const char* peer_id,
|
|
92
|
-
const void* data, size_t size);
|
|
93
|
-
RATS_API int rats_broadcast_binary(rats_client_t client, const void* data, size_t size);
|
|
94
|
-
|
|
95
|
-
// JSON operations
|
|
96
|
-
RATS_API rats_error_t rats_send_json(rats_client_t client, const char* peer_id, const char* json_str);
|
|
97
|
-
RATS_API int rats_broadcast_json(rats_client_t client, const char* json_str);
|
|
98
|
-
|
|
99
|
-
// DHT Discovery
|
|
100
|
-
RATS_API rats_error_t rats_start_dht_discovery(rats_client_t client, int dht_port);
|
|
101
|
-
RATS_API void rats_stop_dht_discovery(rats_client_t client);
|
|
102
|
-
RATS_API int rats_is_dht_running(rats_client_t client);
|
|
103
|
-
RATS_API rats_error_t rats_announce_for_hash(rats_client_t client, const char* content_hash, int port,
|
|
104
|
-
rats_peers_found_cb callback, void* user_data);
|
|
105
|
-
RATS_API size_t rats_get_dht_routing_table_size(rats_client_t client);
|
|
106
|
-
|
|
107
|
-
// Automatic discovery
|
|
108
|
-
RATS_API void rats_start_automatic_peer_discovery(rats_client_t client);
|
|
109
|
-
RATS_API void rats_stop_automatic_peer_discovery(rats_client_t client);
|
|
110
|
-
RATS_API int rats_is_automatic_discovery_running(rats_client_t client);
|
|
111
|
-
RATS_API char* rats_get_discovery_hash(rats_client_t client); // caller must free
|
|
112
|
-
RATS_API char* rats_get_rats_peer_discovery_hash(void); // caller must free - static method
|
|
113
|
-
|
|
114
|
-
// mDNS Discovery
|
|
115
|
-
RATS_API rats_error_t rats_start_mdns_discovery(rats_client_t client, const char* service_name);
|
|
116
|
-
RATS_API void rats_stop_mdns_discovery(rats_client_t client);
|
|
117
|
-
RATS_API int rats_is_mdns_running(rats_client_t client);
|
|
118
|
-
RATS_API rats_error_t rats_query_mdns_services(rats_client_t client);
|
|
119
|
-
|
|
120
|
-
// Encryption
|
|
121
|
-
RATS_API rats_error_t rats_set_encryption_enabled(rats_client_t client, int enabled);
|
|
122
|
-
RATS_API int rats_is_encryption_enabled(rats_client_t client);
|
|
123
|
-
|
|
124
|
-
// Protocol configuration
|
|
125
|
-
RATS_API rats_error_t rats_set_protocol_name(rats_client_t client, const char* protocol_name);
|
|
126
|
-
RATS_API rats_error_t rats_set_protocol_version(rats_client_t client, const char* protocol_version);
|
|
127
|
-
RATS_API char* rats_get_protocol_name(rats_client_t client); // caller must free
|
|
128
|
-
RATS_API char* rats_get_protocol_version(rats_client_t client); // caller must free
|
|
129
|
-
|
|
130
|
-
// Message Exchange API
|
|
131
|
-
RATS_API rats_error_t rats_on_message(rats_client_t client, const char* message_type,
|
|
132
|
-
rats_message_cb callback, void* user_data);
|
|
133
|
-
RATS_API rats_error_t rats_send_message(rats_client_t client, const char* peer_id,
|
|
134
|
-
const char* message_type, const char* data);
|
|
135
|
-
RATS_API rats_error_t rats_broadcast_message(rats_client_t client, const char* message_type,
|
|
136
|
-
const char* data);
|
|
137
|
-
|
|
138
|
-
// File Transfer
|
|
139
|
-
RATS_API char* rats_send_file(rats_client_t client, const char* peer_id,
|
|
140
|
-
const char* file_path, const char* remote_filename); // returns transfer_id, caller must free
|
|
141
|
-
RATS_API char* rats_send_directory(rats_client_t client, const char* peer_id, const char* directory_path, const char* remote_directory_name, int recursive); // returns transfer_id, caller must free
|
|
142
|
-
RATS_API char* rats_request_file(rats_client_t client, const char* peer_id, const char* remote_file_path, const char* local_path); // returns transfer_id, caller must free
|
|
143
|
-
RATS_API char* rats_request_directory(rats_client_t client, const char* peer_id, const char* remote_directory_path, const char* local_directory_path, int recursive); // returns transfer_id, caller must free
|
|
144
|
-
RATS_API rats_error_t rats_accept_file_transfer(rats_client_t client, const char* transfer_id,
|
|
145
|
-
const char* local_path);
|
|
146
|
-
RATS_API rats_error_t rats_reject_file_transfer(rats_client_t client, const char* transfer_id,
|
|
147
|
-
const char* reason);
|
|
148
|
-
RATS_API rats_error_t rats_cancel_file_transfer(rats_client_t client, const char* transfer_id);
|
|
149
|
-
RATS_API rats_error_t rats_accept_directory_transfer(rats_client_t client, const char* transfer_id, const char* local_path);
|
|
150
|
-
RATS_API rats_error_t rats_reject_directory_transfer(rats_client_t client, const char* transfer_id, const char* reason);
|
|
151
|
-
RATS_API rats_error_t rats_pause_file_transfer(rats_client_t client, const char* transfer_id);
|
|
152
|
-
RATS_API rats_error_t rats_resume_file_transfer(rats_client_t client, const char* transfer_id);
|
|
153
|
-
RATS_API char* rats_get_file_transfer_progress_json(rats_client_t client, const char* transfer_id); // caller must free
|
|
154
|
-
RATS_API char* rats_get_file_transfer_statistics_json(rats_client_t client); // caller must free
|
|
155
|
-
|
|
156
|
-
// File transfer callbacks
|
|
157
|
-
typedef void (*rats_file_request_cb)(void* user_data, const char* peer_id, const char* transfer_id, const char* remote_path, const char* filename);
|
|
158
|
-
typedef void (*rats_directory_request_cb)(void* user_data, const char* peer_id, const char* transfer_id, const char* remote_path, const char* directory_name);
|
|
159
|
-
typedef void (*rats_directory_progress_cb)(void* user_data, const char* transfer_id, int files_completed, int total_files, const char* current_file);
|
|
160
|
-
typedef void (*rats_file_progress_cb)(void* user_data, const char* transfer_id, int progress_percent, const char* status);
|
|
161
|
-
|
|
162
|
-
// Additional file transfer callbacks
|
|
163
|
-
RATS_API void rats_set_file_request_callback(rats_client_t client, rats_file_request_cb cb, void* user_data);
|
|
164
|
-
RATS_API void rats_set_directory_request_callback(rats_client_t client, rats_directory_request_cb cb, void* user_data);
|
|
165
|
-
RATS_API void rats_set_file_progress_callback(rats_client_t client, rats_file_progress_cb cb, void* user_data);
|
|
166
|
-
RATS_API void rats_set_directory_progress_callback(rats_client_t client, rats_directory_progress_cb cb, void* user_data);
|
|
167
|
-
|
|
168
|
-
// Enhanced callbacks
|
|
169
|
-
RATS_API void rats_set_connection_callback(rats_client_t client, rats_connection_cb cb, void* user_data);
|
|
170
|
-
RATS_API void rats_set_string_callback(rats_client_t client, rats_string_cb cb, void* user_data);
|
|
171
|
-
RATS_API void rats_set_binary_callback(rats_client_t client, rats_binary_cb cb, void* user_data);
|
|
172
|
-
RATS_API void rats_set_json_callback(rats_client_t client, rats_json_cb cb, void* user_data);
|
|
173
|
-
RATS_API void rats_set_disconnect_callback(rats_client_t client, rats_disconnect_cb cb, void* user_data);
|
|
174
|
-
RATS_API void rats_set_peer_discovered_callback(rats_client_t client, rats_peer_discovered_cb cb, void* user_data);
|
|
175
|
-
|
|
176
|
-
// GossipSub functionality
|
|
177
|
-
RATS_API int rats_is_gossipsub_available(rats_client_t client);
|
|
178
|
-
RATS_API int rats_is_gossipsub_running(rats_client_t client);
|
|
179
|
-
RATS_API rats_error_t rats_subscribe_to_topic(rats_client_t client, const char* topic);
|
|
180
|
-
RATS_API rats_error_t rats_unsubscribe_from_topic(rats_client_t client, const char* topic);
|
|
181
|
-
RATS_API int rats_is_subscribed_to_topic(rats_client_t client, const char* topic);
|
|
182
|
-
RATS_API char** rats_get_subscribed_topics(rats_client_t client, int* count); // caller must free array and strings
|
|
183
|
-
RATS_API rats_error_t rats_publish_to_topic(rats_client_t client, const char* topic, const char* message);
|
|
184
|
-
RATS_API rats_error_t rats_publish_json_to_topic(rats_client_t client, const char* topic, const char* json_str);
|
|
185
|
-
RATS_API char** rats_get_topic_peers(rats_client_t client, const char* topic, int* count); // caller must free array and strings
|
|
186
|
-
RATS_API char** rats_get_topic_mesh_peers(rats_client_t client, const char* topic, int* count); // caller must free array and strings
|
|
187
|
-
RATS_API char* rats_get_gossipsub_statistics_json(rats_client_t client); // caller must free
|
|
188
|
-
|
|
189
|
-
// GossipSub callbacks
|
|
190
|
-
typedef void (*rats_topic_message_cb)(void* user_data, const char* peer_id, const char* topic, const char* message);
|
|
191
|
-
typedef void (*rats_topic_json_message_cb)(void* user_data, const char* peer_id, const char* topic, const char* json_str);
|
|
192
|
-
typedef void (*rats_topic_peer_joined_cb)(void* user_data, const char* peer_id, const char* topic);
|
|
193
|
-
typedef void (*rats_topic_peer_left_cb)(void* user_data, const char* peer_id, const char* topic);
|
|
194
|
-
|
|
195
|
-
RATS_API void rats_set_topic_message_callback(rats_client_t client, const char* topic, rats_topic_message_cb cb, void* user_data);
|
|
196
|
-
RATS_API void rats_set_topic_json_message_callback(rats_client_t client, const char* topic, rats_topic_json_message_cb cb, void* user_data);
|
|
197
|
-
RATS_API void rats_set_topic_peer_joined_callback(rats_client_t client, const char* topic, rats_topic_peer_joined_cb cb, void* user_data);
|
|
198
|
-
RATS_API void rats_set_topic_peer_left_callback(rats_client_t client, const char* topic, rats_topic_peer_left_cb cb, void* user_data);
|
|
199
|
-
RATS_API void rats_clear_topic_callbacks(rats_client_t client, const char* topic);
|
|
200
|
-
|
|
201
|
-
// Address blocking
|
|
202
|
-
RATS_API void rats_add_ignored_address(rats_client_t client, const char* ip_address);
|
|
203
|
-
|
|
204
|
-
// Configuration persistence
|
|
205
|
-
RATS_API rats_error_t rats_load_configuration(rats_client_t client);
|
|
206
|
-
RATS_API rats_error_t rats_save_configuration(rats_client_t client);
|
|
207
|
-
RATS_API rats_error_t rats_set_data_directory(rats_client_t client, const char* directory_path);
|
|
208
|
-
RATS_API char* rats_get_data_directory(rats_client_t client); // caller must free
|
|
209
|
-
RATS_API int rats_load_and_reconnect_peers(rats_client_t client);
|
|
210
|
-
RATS_API int rats_load_historical_peers(rats_client_t client);
|
|
211
|
-
RATS_API int rats_save_historical_peers(rats_client_t client);
|
|
212
|
-
RATS_API void rats_clear_historical_peers(rats_client_t client);
|
|
213
|
-
RATS_API char** rats_get_historical_peer_ids(rats_client_t client, int* count); // caller must free array and strings
|
|
214
|
-
|
|
215
|
-
// ===================== ENHANCED ENCRYPTION API =====================
|
|
216
|
-
|
|
217
|
-
// Initialize encryption system
|
|
218
|
-
RATS_API rats_error_t rats_initialize_encryption(rats_client_t client, int enable);
|
|
219
|
-
|
|
220
|
-
// Check if a specific peer connection is encrypted
|
|
221
|
-
RATS_API int rats_is_peer_encrypted(rats_client_t client, const char* peer_id);
|
|
222
|
-
|
|
223
|
-
// Set custom Noise Protocol static keypair (32-byte private key as hex string)
|
|
224
|
-
RATS_API rats_error_t rats_set_noise_static_keypair(rats_client_t client, const char* private_key_hex);
|
|
225
|
-
|
|
226
|
-
// Get our Noise Protocol static public key (returns 64-char hex string, caller must free)
|
|
227
|
-
RATS_API char* rats_get_noise_static_public_key(rats_client_t client);
|
|
228
|
-
|
|
229
|
-
// Get remote peer's Noise static public key (returns 64-char hex string, caller must free)
|
|
230
|
-
RATS_API char* rats_get_peer_noise_public_key(rats_client_t client, const char* peer_id);
|
|
231
|
-
|
|
232
|
-
// Get handshake hash for channel binding (returns 64-char hex string, caller must free)
|
|
233
|
-
RATS_API char* rats_get_peer_handshake_hash(rats_client_t client, const char* peer_id);
|
|
234
|
-
|
|
235
|
-
// ===================== ICE (NAT TRAVERSAL) API =====================
|
|
236
|
-
|
|
237
|
-
// ICE connection states
|
|
238
|
-
typedef enum {
|
|
239
|
-
RATS_ICE_STATE_NEW = 0,
|
|
240
|
-
RATS_ICE_STATE_GATHERING = 1,
|
|
241
|
-
RATS_ICE_STATE_CHECKING = 2,
|
|
242
|
-
RATS_ICE_STATE_CONNECTED = 3,
|
|
243
|
-
RATS_ICE_STATE_COMPLETED = 4,
|
|
244
|
-
RATS_ICE_STATE_FAILED = 5,
|
|
245
|
-
RATS_ICE_STATE_DISCONNECTED = 6,
|
|
246
|
-
RATS_ICE_STATE_CLOSED = 7
|
|
247
|
-
} rats_ice_connection_state_t;
|
|
248
|
-
|
|
249
|
-
// ICE gathering states
|
|
250
|
-
typedef enum {
|
|
251
|
-
RATS_ICE_GATHERING_NEW = 0,
|
|
252
|
-
RATS_ICE_GATHERING_GATHERING = 1,
|
|
253
|
-
RATS_ICE_GATHERING_COMPLETE = 2
|
|
254
|
-
} rats_ice_gathering_state_t;
|
|
255
|
-
|
|
256
|
-
// ICE candidate types
|
|
257
|
-
typedef enum {
|
|
258
|
-
RATS_ICE_CANDIDATE_HOST = 0,
|
|
259
|
-
RATS_ICE_CANDIDATE_SRFLX = 1,
|
|
260
|
-
RATS_ICE_CANDIDATE_PRFLX = 2,
|
|
261
|
-
RATS_ICE_CANDIDATE_RELAY = 3
|
|
262
|
-
} rats_ice_candidate_type_t;
|
|
263
|
-
|
|
264
|
-
// ICE callbacks
|
|
265
|
-
typedef void (*rats_ice_candidates_cb)(void* user_data, const char* candidates_json);
|
|
266
|
-
typedef void (*rats_ice_new_candidate_cb)(void* user_data, const char* candidate_sdp);
|
|
267
|
-
typedef void (*rats_ice_gathering_state_cb)(void* user_data, rats_ice_gathering_state_t state);
|
|
268
|
-
typedef void (*rats_ice_connection_state_cb)(void* user_data, rats_ice_connection_state_t state);
|
|
269
|
-
typedef void (*rats_ice_selected_pair_cb)(void* user_data, const char* local_candidate_json, const char* remote_candidate_json);
|
|
270
|
-
|
|
271
|
-
// Check if ICE is available
|
|
272
|
-
RATS_API int rats_is_ice_available(rats_client_t client);
|
|
273
|
-
|
|
274
|
-
// Server configuration
|
|
275
|
-
RATS_API void rats_add_stun_server(rats_client_t client, const char* host, uint16_t port);
|
|
276
|
-
RATS_API void rats_add_turn_server(rats_client_t client, const char* host, uint16_t port,
|
|
277
|
-
const char* username, const char* password);
|
|
278
|
-
RATS_API void rats_clear_ice_servers(rats_client_t client);
|
|
279
|
-
|
|
280
|
-
// Candidate gathering
|
|
281
|
-
RATS_API int rats_gather_ice_candidates(rats_client_t client);
|
|
282
|
-
RATS_API char* rats_get_ice_candidates_json(rats_client_t client); // caller must free
|
|
283
|
-
RATS_API int rats_is_ice_gathering_complete(rats_client_t client);
|
|
284
|
-
|
|
285
|
-
// Public address discovery
|
|
286
|
-
RATS_API char* rats_get_public_address(rats_client_t client); // returns "ip:port" string, caller must free
|
|
287
|
-
RATS_API char* rats_discover_public_address(rats_client_t client, const char* stun_server,
|
|
288
|
-
uint16_t port, int timeout_ms); // caller must free
|
|
289
|
-
|
|
290
|
-
// Remote candidates
|
|
291
|
-
RATS_API void rats_add_remote_ice_candidate(rats_client_t client, const char* candidate_sdp);
|
|
292
|
-
RATS_API void rats_add_remote_ice_candidates_from_sdp(rats_client_t client,
|
|
293
|
-
const char** sdp_lines, int count);
|
|
294
|
-
RATS_API void rats_end_of_remote_ice_candidates(rats_client_t client);
|
|
295
|
-
|
|
296
|
-
// Connectivity
|
|
297
|
-
RATS_API void rats_start_ice_checks(rats_client_t client);
|
|
298
|
-
RATS_API rats_ice_connection_state_t rats_get_ice_connection_state(rats_client_t client);
|
|
299
|
-
RATS_API rats_ice_gathering_state_t rats_get_ice_gathering_state(rats_client_t client);
|
|
300
|
-
RATS_API int rats_is_ice_connected(rats_client_t client);
|
|
301
|
-
RATS_API char* rats_get_ice_selected_pair_json(rats_client_t client); // caller must free
|
|
302
|
-
|
|
303
|
-
// ICE callbacks
|
|
304
|
-
RATS_API void rats_set_ice_candidates_gathered_callback(rats_client_t client,
|
|
305
|
-
rats_ice_candidates_cb cb, void* user_data);
|
|
306
|
-
RATS_API void rats_set_ice_new_candidate_callback(rats_client_t client,
|
|
307
|
-
rats_ice_new_candidate_cb cb, void* user_data);
|
|
308
|
-
RATS_API void rats_set_ice_gathering_state_callback(rats_client_t client,
|
|
309
|
-
rats_ice_gathering_state_cb cb, void* user_data);
|
|
310
|
-
RATS_API void rats_set_ice_connection_state_callback(rats_client_t client,
|
|
311
|
-
rats_ice_connection_state_cb cb, void* user_data);
|
|
312
|
-
RATS_API void rats_set_ice_selected_pair_callback(rats_client_t client,
|
|
313
|
-
rats_ice_selected_pair_cb cb, void* user_data);
|
|
314
|
-
|
|
315
|
-
// ICE lifecycle
|
|
316
|
-
RATS_API void rats_close_ice(rats_client_t client);
|
|
317
|
-
RATS_API void rats_restart_ice(rats_client_t client);
|
|
318
|
-
|
|
319
|
-
#ifdef __cplusplus
|
|
320
|
-
} // extern "C"
|
|
321
|
-
#endif
|
|
322
|
-
|
|
323
|
-
|