ccbt 0.0.1__tar.gz
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.
- ccbt-0.0.1/.env copy +469 -0
- ccbt-0.0.1/.github/ISSUE_TEMPLATE/bug_report.md +58 -0
- ccbt-0.0.1/.github/ISSUE_TEMPLATE/compatibility_issue.md +75 -0
- ccbt-0.0.1/.github/ISSUE_TEMPLATE/config.yml +15 -0
- ccbt-0.0.1/.github/ISSUE_TEMPLATE/feature_request.md +42 -0
- ccbt-0.0.1/.github/ISSUE_TEMPLATE/user_experience.md +45 -0
- ccbt-0.0.1/.github/README.md +96 -0
- ccbt-0.0.1/.github/release.yml +40 -0
- ccbt-0.0.1/.github/workflows/README.md +285 -0
- ccbt-0.0.1/.github/workflows/benchmark.yml +77 -0
- ccbt-0.0.1/.github/workflows/build-documentation.yml +207 -0
- ccbt-0.0.1/.github/workflows/build.yml +105 -0
- ccbt-0.0.1/.github/workflows/ci.yml +72 -0
- ccbt-0.0.1/.github/workflows/compatibility.yml +130 -0
- ccbt-0.0.1/.github/workflows/deploy.yml +100 -0
- ccbt-0.0.1/.github/workflows/pre-release.yml +97 -0
- ccbt-0.0.1/.github/workflows/publish-pypi-dev.yml +114 -0
- ccbt-0.0.1/.github/workflows/publish-pypi.yml +183 -0
- ccbt-0.0.1/.github/workflows/release-to-main.yml +142 -0
- ccbt-0.0.1/.github/workflows/release.yml +241 -0
- ccbt-0.0.1/.github/workflows/security.yml +81 -0
- ccbt-0.0.1/.github/workflows/test.yml +129 -0
- ccbt-0.0.1/.github/workflows/version-check.yml +169 -0
- ccbt-0.0.1/.gitignore +352 -0
- ccbt-0.0.1/PKG-INFO +174 -0
- ccbt-0.0.1/ccbt/__init__.py +255 -0
- ccbt-0.0.1/ccbt/__main__.py +357 -0
- ccbt-0.0.1/ccbt/async_main.py +32 -0
- ccbt-0.0.1/ccbt/bencode.py +10 -0
- ccbt-0.0.1/ccbt/cli/__init__.py +21 -0
- ccbt-0.0.1/ccbt/cli/advanced_commands.py +688 -0
- ccbt-0.0.1/ccbt/cli/checkpoints.py +313 -0
- ccbt-0.0.1/ccbt/cli/config_commands.py +429 -0
- ccbt-0.0.1/ccbt/cli/config_commands_extended.py +1064 -0
- ccbt-0.0.1/ccbt/cli/config_utils.py +319 -0
- ccbt-0.0.1/ccbt/cli/console.py +60 -0
- ccbt-0.0.1/ccbt/cli/create_torrent.py +313 -0
- ccbt-0.0.1/ccbt/cli/daemon_commands.py +1020 -0
- ccbt-0.0.1/ccbt/cli/diagnostics.py +382 -0
- ccbt-0.0.1/ccbt/cli/downloads.py +638 -0
- ccbt-0.0.1/ccbt/cli/file_commands.py +436 -0
- ccbt-0.0.1/ccbt/cli/filter_commands.py +516 -0
- ccbt-0.0.1/ccbt/cli/interactive.py +2956 -0
- ccbt-0.0.1/ccbt/cli/ipfs_commands.py +401 -0
- ccbt-0.0.1/ccbt/cli/main.py +3536 -0
- ccbt-0.0.1/ccbt/cli/monitoring_commands.py +511 -0
- ccbt-0.0.1/ccbt/cli/monitoring_utils.py +33 -0
- ccbt-0.0.1/ccbt/cli/nat_commands.py +433 -0
- ccbt-0.0.1/ccbt/cli/overrides.py +504 -0
- ccbt-0.0.1/ccbt/cli/progress.py +530 -0
- ccbt-0.0.1/ccbt/cli/proxy_commands.py +370 -0
- ccbt-0.0.1/ccbt/cli/queue_commands.py +451 -0
- ccbt-0.0.1/ccbt/cli/resume.py +96 -0
- ccbt-0.0.1/ccbt/cli/scrape_commands.py +183 -0
- ccbt-0.0.1/ccbt/cli/ssl_commands.py +615 -0
- ccbt-0.0.1/ccbt/cli/status.py +301 -0
- ccbt-0.0.1/ccbt/cli/task_detector.py +228 -0
- ccbt-0.0.1/ccbt/cli/tonic_commands.py +679 -0
- ccbt-0.0.1/ccbt/cli/tonic_generator.py +288 -0
- ccbt-0.0.1/ccbt/cli/torrent_commands.py +695 -0
- ccbt-0.0.1/ccbt/cli/torrent_config_commands.py +567 -0
- ccbt-0.0.1/ccbt/cli/utp_commands.py +315 -0
- ccbt-0.0.1/ccbt/cli/verbosity.py +176 -0
- ccbt-0.0.1/ccbt/cli/xet_commands.py +523 -0
- ccbt-0.0.1/ccbt/config/__init__.py +30 -0
- ccbt-0.0.1/ccbt/config/config.py +1201 -0
- ccbt-0.0.1/ccbt/config/config_backup.py +440 -0
- ccbt-0.0.1/ccbt/config/config_capabilities.py +740 -0
- ccbt-0.0.1/ccbt/config/config_conditional.py +563 -0
- ccbt-0.0.1/ccbt/config/config_diff.py +476 -0
- ccbt-0.0.1/ccbt/config/config_migration.py +372 -0
- ccbt-0.0.1/ccbt/config/config_schema.py +437 -0
- ccbt-0.0.1/ccbt/config/config_templates.py +1347 -0
- ccbt-0.0.1/ccbt/consensus/__init__.py +33 -0
- ccbt-0.0.1/ccbt/consensus/byzantine.py +204 -0
- ccbt-0.0.1/ccbt/consensus/raft.py +411 -0
- ccbt-0.0.1/ccbt/consensus/raft_state.py +199 -0
- ccbt-0.0.1/ccbt/core/__init__.py +38 -0
- ccbt-0.0.1/ccbt/core/bencode.py +230 -0
- ccbt-0.0.1/ccbt/core/magnet.py +765 -0
- ccbt-0.0.1/ccbt/core/tonic.py +589 -0
- ccbt-0.0.1/ccbt/core/tonic_link.py +282 -0
- ccbt-0.0.1/ccbt/core/torrent.py +459 -0
- ccbt-0.0.1/ccbt/core/torrent_attributes.py +310 -0
- ccbt-0.0.1/ccbt/core/torrent_v2.py +1772 -0
- ccbt-0.0.1/ccbt/daemon/__init__.py +17 -0
- ccbt-0.0.1/ccbt/daemon/daemon_manager.py +940 -0
- ccbt-0.0.1/ccbt/daemon/debug_utils.py +181 -0
- ccbt-0.0.1/ccbt/daemon/ipc_client.py +2966 -0
- ccbt-0.0.1/ccbt/daemon/ipc_protocol.py +966 -0
- ccbt-0.0.1/ccbt/daemon/ipc_server.py +5533 -0
- ccbt-0.0.1/ccbt/daemon/main.py +1521 -0
- ccbt-0.0.1/ccbt/daemon/state_manager.py +496 -0
- ccbt-0.0.1/ccbt/daemon/state_models.py +127 -0
- ccbt-0.0.1/ccbt/daemon/utils.py +86 -0
- ccbt-0.0.1/ccbt/discovery/__init__.py +22 -0
- ccbt-0.0.1/ccbt/discovery/bloom_filter.py +326 -0
- ccbt-0.0.1/ccbt/discovery/dht.py +2093 -0
- ccbt-0.0.1/ccbt/discovery/dht_indexing.py +481 -0
- ccbt-0.0.1/ccbt/discovery/dht_ipv6.py +211 -0
- ccbt-0.0.1/ccbt/discovery/dht_multiaddr.py +399 -0
- ccbt-0.0.1/ccbt/discovery/dht_readonly.py +68 -0
- ccbt-0.0.1/ccbt/discovery/dht_storage.py +491 -0
- ccbt-0.0.1/ccbt/discovery/distributed_tracker.py +200 -0
- ccbt-0.0.1/ccbt/discovery/flooding.py +193 -0
- ccbt-0.0.1/ccbt/discovery/gossip.py +271 -0
- ccbt-0.0.1/ccbt/discovery/lpd.py +277 -0
- ccbt-0.0.1/ccbt/discovery/pex.py +483 -0
- ccbt-0.0.1/ccbt/discovery/tracker.py +3323 -0
- ccbt-0.0.1/ccbt/discovery/tracker_server_http.py +118 -0
- ccbt-0.0.1/ccbt/discovery/tracker_server_udp.py +147 -0
- ccbt-0.0.1/ccbt/discovery/tracker_udp_client.py +2802 -0
- ccbt-0.0.1/ccbt/discovery/xet_bloom.py +151 -0
- ccbt-0.0.1/ccbt/discovery/xet_cas.py +910 -0
- ccbt-0.0.1/ccbt/discovery/xet_catalog.py +302 -0
- ccbt-0.0.1/ccbt/discovery/xet_gossip.py +174 -0
- ccbt-0.0.1/ccbt/discovery/xet_multicast.py +296 -0
- ccbt-0.0.1/ccbt/executor/__init__.py +33 -0
- ccbt-0.0.1/ccbt/executor/base.py +95 -0
- ccbt-0.0.1/ccbt/executor/config_executor.py +56 -0
- ccbt-0.0.1/ccbt/executor/executor.py +90 -0
- ccbt-0.0.1/ccbt/executor/file_executor.py +103 -0
- ccbt-0.0.1/ccbt/executor/manager.py +288 -0
- ccbt-0.0.1/ccbt/executor/nat_executor.py +157 -0
- ccbt-0.0.1/ccbt/executor/protocol_executor.py +76 -0
- ccbt-0.0.1/ccbt/executor/queue_executor.py +110 -0
- ccbt-0.0.1/ccbt/executor/registry.py +62 -0
- ccbt-0.0.1/ccbt/executor/scrape_executor.py +75 -0
- ccbt-0.0.1/ccbt/executor/security_executor.py +316 -0
- ccbt-0.0.1/ccbt/executor/session_adapter.py +2670 -0
- ccbt-0.0.1/ccbt/executor/session_executor.py +64 -0
- ccbt-0.0.1/ccbt/executor/torrent_executor.py +770 -0
- ccbt-0.0.1/ccbt/executor/xet_executor.py +654 -0
- ccbt-0.0.1/ccbt/extensions/__init__.py +26 -0
- ccbt-0.0.1/ccbt/extensions/compact.py +271 -0
- ccbt-0.0.1/ccbt/extensions/dht.py +595 -0
- ccbt-0.0.1/ccbt/extensions/fast.py +287 -0
- ccbt-0.0.1/ccbt/extensions/manager.py +746 -0
- ccbt-0.0.1/ccbt/extensions/pex.py +403 -0
- ccbt-0.0.1/ccbt/extensions/protocol.py +379 -0
- ccbt-0.0.1/ccbt/extensions/ssl.py +339 -0
- ccbt-0.0.1/ccbt/extensions/webseed.py +529 -0
- ccbt-0.0.1/ccbt/extensions/xet.py +642 -0
- ccbt-0.0.1/ccbt/extensions/xet_handshake.py +321 -0
- ccbt-0.0.1/ccbt/extensions/xet_metadata.py +317 -0
- ccbt-0.0.1/ccbt/i18n/__init__.py +213 -0
- ccbt-0.0.1/ccbt/i18n/extract.py +127 -0
- ccbt-0.0.1/ccbt/i18n/fill_english.py +39 -0
- ccbt-0.0.1/ccbt/i18n/locales/arc/LC_MESSAGES/ccbt.po +3905 -0
- ccbt-0.0.1/ccbt/i18n/locales/en/LC_MESSAGES/ccbt.po +3789 -0
- ccbt-0.0.1/ccbt/i18n/locales/es/LC_MESSAGES/ccbt.po +3789 -0
- ccbt-0.0.1/ccbt/i18n/locales/eu/LC_MESSAGES/ccbt.po +3789 -0
- ccbt-0.0.1/ccbt/i18n/locales/fa/LC_MESSAGES/ccbt.po +3905 -0
- ccbt-0.0.1/ccbt/i18n/locales/fr/LC_MESSAGES/ccbt.po +3789 -0
- ccbt-0.0.1/ccbt/i18n/locales/ha/LC_MESSAGES/ccbt.po +3789 -0
- ccbt-0.0.1/ccbt/i18n/locales/hi/LC_MESSAGES/ccbt.po +3890 -0
- ccbt-0.0.1/ccbt/i18n/locales/ja/LC_MESSAGES/ccbt.po +3905 -0
- ccbt-0.0.1/ccbt/i18n/locales/ko/LC_MESSAGES/ccbt.po +3807 -0
- ccbt-0.0.1/ccbt/i18n/locales/sw/LC_MESSAGES/ccbt.po +3905 -0
- ccbt-0.0.1/ccbt/i18n/locales/th/LC_MESSAGES/ccbt.po +3807 -0
- ccbt-0.0.1/ccbt/i18n/locales/ur/LC_MESSAGES/ccbt.po +3844 -0
- ccbt-0.0.1/ccbt/i18n/locales/yo/LC_MESSAGES/ccbt.po +3951 -0
- ccbt-0.0.1/ccbt/i18n/locales/zh/LC_MESSAGES/ccbt.po +3954 -0
- ccbt-0.0.1/ccbt/i18n/manager.py +67 -0
- ccbt-0.0.1/ccbt/interface/__init__.py +32 -0
- ccbt-0.0.1/ccbt/interface/commands/__init__.py +7 -0
- ccbt-0.0.1/ccbt/interface/commands/executor.py +327 -0
- ccbt-0.0.1/ccbt/interface/daemon_session_adapter.py +1125 -0
- ccbt-0.0.1/ccbt/interface/data_provider.py +2357 -0
- ccbt-0.0.1/ccbt/interface/metrics/__init__.py +61 -0
- ccbt-0.0.1/ccbt/interface/metrics/graph_series.py +604 -0
- ccbt-0.0.1/ccbt/interface/reactive_updates.py +384 -0
- ccbt-0.0.1/ccbt/interface/screens/__init__.py +31 -0
- ccbt-0.0.1/ccbt/interface/screens/base.py +543 -0
- ccbt-0.0.1/ccbt/interface/screens/config/__init__.py +24 -0
- ccbt-0.0.1/ccbt/interface/screens/config/global_config.py +1559 -0
- ccbt-0.0.1/ccbt/interface/screens/config/proxy.py +423 -0
- ccbt-0.0.1/ccbt/interface/screens/config/ssl.py +596 -0
- ccbt-0.0.1/ccbt/interface/screens/config/torrent_config.py +1505 -0
- ccbt-0.0.1/ccbt/interface/screens/config/utp.py +424 -0
- ccbt-0.0.1/ccbt/interface/screens/config/widget_factory.py +257 -0
- ccbt-0.0.1/ccbt/interface/screens/config/widgets.py +181 -0
- ccbt-0.0.1/ccbt/interface/screens/dialogs.py +1606 -0
- ccbt-0.0.1/ccbt/interface/screens/file_selection_dialog.py +202 -0
- ccbt-0.0.1/ccbt/interface/screens/language_selection_screen.py +188 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/__init__.py +43 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/alerts.py +221 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/dht_metrics.py +268 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/disk_analysis.py +363 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/disk_io.py +295 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/historical.py +208 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/ipfs.py +543 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/metrics_explorer.py +383 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/nat.py +533 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/network.py +355 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/performance.py +282 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/performance_analysis.py +333 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/queue.py +284 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/scrape.py +271 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/security_scan.py +222 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/system_resources.py +155 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/tracker.py +267 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/xet.py +440 -0
- ccbt-0.0.1/ccbt/interface/screens/monitoring/xet_folder_sync.py +803 -0
- ccbt-0.0.1/ccbt/interface/screens/per_peer_tab.py +405 -0
- ccbt-0.0.1/ccbt/interface/screens/per_torrent_files.py +437 -0
- ccbt-0.0.1/ccbt/interface/screens/per_torrent_info.py +459 -0
- ccbt-0.0.1/ccbt/interface/screens/per_torrent_peers.py +211 -0
- ccbt-0.0.1/ccbt/interface/screens/per_torrent_tab.py +634 -0
- ccbt-0.0.1/ccbt/interface/screens/per_torrent_trackers.py +369 -0
- ccbt-0.0.1/ccbt/interface/screens/preferences_tab.py +251 -0
- ccbt-0.0.1/ccbt/interface/screens/tabbed_base.py +128 -0
- ccbt-0.0.1/ccbt/interface/screens/theme_selection_screen.py +207 -0
- ccbt-0.0.1/ccbt/interface/screens/torrents_tab.py +1130 -0
- ccbt-0.0.1/ccbt/interface/screens/utility/__init__.py +8 -0
- ccbt-0.0.1/ccbt/interface/screens/utility/file_selection.py +334 -0
- ccbt-0.0.1/ccbt/interface/screens/utility/help.py +166 -0
- ccbt-0.0.1/ccbt/interface/screens/utility/navigation.py +200 -0
- ccbt-0.0.1/ccbt/interface/splash/README.md +259 -0
- ccbt-0.0.1/ccbt/interface/splash/__init__.py +76 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_adapter.py +233 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_config.py +324 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_demo.py +185 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_executor.py +453 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_helpers.py +5016 -0
- ccbt-0.0.1/ccbt/interface/splash/animation_registry.py +376 -0
- ccbt-0.0.1/ccbt/interface/splash/animations.py +488 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/README.md +65 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/__init__.py +101 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/logo_1.py +54 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/nautical_ship.py +36 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/row_boat.py +23 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art/sailing_ship.py +30 -0
- ccbt-0.0.1/ccbt/interface/splash/ascii_art.py +184 -0
- ccbt-0.0.1/ccbt/interface/splash/backgrounds.py +374 -0
- ccbt-0.0.1/ccbt/interface/splash/character_modifier.py +334 -0
- ccbt-0.0.1/ccbt/interface/splash/color_matching.py +299 -0
- ccbt-0.0.1/ccbt/interface/splash/color_themes.py +79 -0
- ccbt-0.0.1/ccbt/interface/splash/message_overlay.py +264 -0
- ccbt-0.0.1/ccbt/interface/splash/run_demo.py +39 -0
- ccbt-0.0.1/ccbt/interface/splash/run_unified_demo.py +21 -0
- ccbt-0.0.1/ccbt/interface/splash/sequence_generator.py +272 -0
- ccbt-0.0.1/ccbt/interface/splash/splash_demo.py +91 -0
- ccbt-0.0.1/ccbt/interface/splash/splash_manager.py +291 -0
- ccbt-0.0.1/ccbt/interface/splash/splash_screen.py +1092 -0
- ccbt-0.0.1/ccbt/interface/splash/standalone_demo.py +115 -0
- ccbt-0.0.1/ccbt/interface/splash/templates.py +269 -0
- ccbt-0.0.1/ccbt/interface/splash/textual_renderable.py +194 -0
- ccbt-0.0.1/ccbt/interface/splash/transitions.py +313 -0
- ccbt-0.0.1/ccbt/interface/splash/unified_demo.py +412 -0
- ccbt-0.0.1/ccbt/interface/terminal_dashboard.py +4689 -0
- ccbt-0.0.1/ccbt/interface/terminal_dashboard_dev.py +423 -0
- ccbt-0.0.1/ccbt/interface/themes/__init__.py +15 -0
- ccbt-0.0.1/ccbt/interface/themes/rainbow.py +141 -0
- ccbt-0.0.1/ccbt/interface/widgets/__init__.py +75 -0
- ccbt-0.0.1/ccbt/interface/widgets/button_selector.py +122 -0
- ccbt-0.0.1/ccbt/interface/widgets/command_bars.py +118 -0
- ccbt-0.0.1/ccbt/interface/widgets/config_wrapper.py +1139 -0
- ccbt-0.0.1/ccbt/interface/widgets/core_widgets.py +1216 -0
- ccbt-0.0.1/ccbt/interface/widgets/dht_health_widget.py +182 -0
- ccbt-0.0.1/ccbt/interface/widgets/file_browser.py +392 -0
- ccbt-0.0.1/ccbt/interface/widgets/global_kpis_panel.py +282 -0
- ccbt-0.0.1/ccbt/interface/widgets/graph_widget.py +3049 -0
- ccbt-0.0.1/ccbt/interface/widgets/language_selector.py +298 -0
- ccbt-0.0.1/ccbt/interface/widgets/monitoring_wrapper.py +428 -0
- ccbt-0.0.1/ccbt/interface/widgets/peer_quality_distribution_widget.py +312 -0
- ccbt-0.0.1/ccbt/interface/widgets/piece_availability_bar.py +384 -0
- ccbt-0.0.1/ccbt/interface/widgets/piece_selection_widget.py +309 -0
- ccbt-0.0.1/ccbt/interface/widgets/reusable_table.py +130 -0
- ccbt-0.0.1/ccbt/interface/widgets/reusable_widgets.py +145 -0
- ccbt-0.0.1/ccbt/interface/widgets/swarm_timeline_widget.py +301 -0
- ccbt-0.0.1/ccbt/interface/widgets/tabbed_interface.py +570 -0
- ccbt-0.0.1/ccbt/interface/widgets/torrent_controls.py +551 -0
- ccbt-0.0.1/ccbt/interface/widgets/torrent_file_explorer.py +543 -0
- ccbt-0.0.1/ccbt/interface/widgets/torrent_selector.py +280 -0
- ccbt-0.0.1/ccbt/ml/__init__.py +23 -0
- ccbt-0.0.1/ccbt/ml/adaptive_limiter.py +564 -0
- ccbt-0.0.1/ccbt/ml/peer_selector.py +571 -0
- ccbt-0.0.1/ccbt/ml/piece_predictor.py +649 -0
- ccbt-0.0.1/ccbt/models.py +3755 -0
- ccbt-0.0.1/ccbt/monitoring/__init__.py +271 -0
- ccbt-0.0.1/ccbt/monitoring/alert_manager.py +732 -0
- ccbt-0.0.1/ccbt/monitoring/dashboard.py +842 -0
- ccbt-0.0.1/ccbt/monitoring/metrics_collector.py +1580 -0
- ccbt-0.0.1/ccbt/monitoring/tracing.py +507 -0
- ccbt-0.0.1/ccbt/nat/__init__.py +10 -0
- ccbt-0.0.1/ccbt/nat/exceptions.py +13 -0
- ccbt-0.0.1/ccbt/nat/manager.py +1309 -0
- ccbt-0.0.1/ccbt/nat/natpmp.py +456 -0
- ccbt-0.0.1/ccbt/nat/port_mapping.py +325 -0
- ccbt-0.0.1/ccbt/nat/upnp.py +1176 -0
- ccbt-0.0.1/ccbt/observability/__init__.py +17 -0
- ccbt-0.0.1/ccbt/observability/profiler.py +458 -0
- ccbt-0.0.1/ccbt/peer/__init__.py +21 -0
- ccbt-0.0.1/ccbt/peer/async_peer_connection.py +13722 -0
- ccbt-0.0.1/ccbt/peer/connection_pool.py +1660 -0
- ccbt-0.0.1/ccbt/peer/peer.py +1621 -0
- ccbt-0.0.1/ccbt/peer/peer_connection.py +95 -0
- ccbt-0.0.1/ccbt/peer/ssl_peer.py +454 -0
- ccbt-0.0.1/ccbt/peer/tcp_server.py +484 -0
- ccbt-0.0.1/ccbt/peer/utp_peer.py +403 -0
- ccbt-0.0.1/ccbt/peer/webrtc_peer.py +306 -0
- ccbt-0.0.1/ccbt/piece/__init__.py +22 -0
- ccbt-0.0.1/ccbt/piece/async_metadata_exchange.py +1308 -0
- ccbt-0.0.1/ccbt/piece/async_piece_manager.py +8503 -0
- ccbt-0.0.1/ccbt/piece/file_selection.py +519 -0
- ccbt-0.0.1/ccbt/piece/hash_v2.py +755 -0
- ccbt-0.0.1/ccbt/piece/metadata_exchange.py +203 -0
- ccbt-0.0.1/ccbt/piece/piece_manager.py +388 -0
- ccbt-0.0.1/ccbt/plugins/__init__.py +11 -0
- ccbt-0.0.1/ccbt/plugins/base.py +420 -0
- ccbt-0.0.1/ccbt/plugins/logging_plugin.py +120 -0
- ccbt-0.0.1/ccbt/plugins/metrics_plugin.py +261 -0
- ccbt-0.0.1/ccbt/protocols/__init__.py +46 -0
- ccbt-0.0.1/ccbt/protocols/base.py +773 -0
- ccbt-0.0.1/ccbt/protocols/bittorrent.py +542 -0
- ccbt-0.0.1/ccbt/protocols/bittorrent_v2.py +1288 -0
- ccbt-0.0.1/ccbt/protocols/hybrid.py +562 -0
- ccbt-0.0.1/ccbt/protocols/ipfs.py +1991 -0
- ccbt-0.0.1/ccbt/protocols/webtorrent/__init__.py +48 -0
- ccbt-0.0.1/ccbt/protocols/webtorrent/webrtc_manager.py +489 -0
- ccbt-0.0.1/ccbt/protocols/webtorrent.py +1431 -0
- ccbt-0.0.1/ccbt/protocols/xet.py +1090 -0
- ccbt-0.0.1/ccbt/proxy/__init__.py +23 -0
- ccbt-0.0.1/ccbt/proxy/auth.py +271 -0
- ccbt-0.0.1/ccbt/proxy/client.py +632 -0
- ccbt-0.0.1/ccbt/proxy/exceptions.py +23 -0
- ccbt-0.0.1/ccbt/py.typed +0 -0
- ccbt-0.0.1/ccbt/queue/__init__.py +6 -0
- ccbt-0.0.1/ccbt/queue/bandwidth.py +204 -0
- ccbt-0.0.1/ccbt/queue/manager.py +919 -0
- ccbt-0.0.1/ccbt/security/__init__.py +29 -0
- ccbt-0.0.1/ccbt/security/anomaly_detector.py +658 -0
- ccbt-0.0.1/ccbt/security/blacklist_updater.py +289 -0
- ccbt-0.0.1/ccbt/security/ciphers/__init__.py +19 -0
- ccbt-0.0.1/ccbt/security/ciphers/aes.py +103 -0
- ccbt-0.0.1/ccbt/security/ciphers/base.py +47 -0
- ccbt-0.0.1/ccbt/security/ciphers/chacha20.py +101 -0
- ccbt-0.0.1/ccbt/security/ciphers/rc4.py +101 -0
- ccbt-0.0.1/ccbt/security/dh_exchange.py +188 -0
- ccbt-0.0.1/ccbt/security/ed25519_handshake.py +184 -0
- ccbt-0.0.1/ccbt/security/encrypted_stream.py +142 -0
- ccbt-0.0.1/ccbt/security/encryption.py +694 -0
- ccbt-0.0.1/ccbt/security/ip_filter.py +711 -0
- ccbt-0.0.1/ccbt/security/key_manager.py +439 -0
- ccbt-0.0.1/ccbt/security/local_blacklist_source.py +421 -0
- ccbt-0.0.1/ccbt/security/messaging.py +394 -0
- ccbt-0.0.1/ccbt/security/mse_handshake.py +591 -0
- ccbt-0.0.1/ccbt/security/peer_validator.py +450 -0
- ccbt-0.0.1/ccbt/security/rate_limiter.py +594 -0
- ccbt-0.0.1/ccbt/security/security_manager.py +991 -0
- ccbt-0.0.1/ccbt/security/ssl_context.py +494 -0
- ccbt-0.0.1/ccbt/security/tls_certificates.py +268 -0
- ccbt-0.0.1/ccbt/security/xet_allowlist.py +433 -0
- ccbt-0.0.1/ccbt/services/__init__.py +27 -0
- ccbt-0.0.1/ccbt/services/base.py +386 -0
- ccbt-0.0.1/ccbt/services/peer_service.py +320 -0
- ccbt-0.0.1/ccbt/services/storage_service.py +609 -0
- ccbt-0.0.1/ccbt/services/tracker_service.py +415 -0
- ccbt-0.0.1/ccbt/session/__init__.py +49 -0
- ccbt-0.0.1/ccbt/session/adapters.py +157 -0
- ccbt-0.0.1/ccbt/session/announce.py +1172 -0
- ccbt-0.0.1/ccbt/session/async_main.py +214 -0
- ccbt-0.0.1/ccbt/session/checkpoint_operations.py +433 -0
- ccbt-0.0.1/ccbt/session/checkpointing.py +1172 -0
- ccbt-0.0.1/ccbt/session/dht_setup.py +2153 -0
- ccbt-0.0.1/ccbt/session/discovery.py +298 -0
- ccbt-0.0.1/ccbt/session/download_manager.py +849 -0
- ccbt-0.0.1/ccbt/session/download_startup.py +11 -0
- ccbt-0.0.1/ccbt/session/factories.py +120 -0
- ccbt-0.0.1/ccbt/session/fast_resume.py +296 -0
- ccbt-0.0.1/ccbt/session/incoming.py +210 -0
- ccbt-0.0.1/ccbt/session/lifecycle.py +68 -0
- ccbt-0.0.1/ccbt/session/magnet_handling.py +59 -0
- ccbt-0.0.1/ccbt/session/manager_background.py +155 -0
- ccbt-0.0.1/ccbt/session/manager_startup.py +11 -0
- ccbt-0.0.1/ccbt/session/metrics_status.py +288 -0
- ccbt-0.0.1/ccbt/session/models.py +48 -0
- ccbt-0.0.1/ccbt/session/peer_events.py +75 -0
- ccbt-0.0.1/ccbt/session/peers.py +946 -0
- ccbt-0.0.1/ccbt/session/scrape.py +236 -0
- ccbt-0.0.1/ccbt/session/session.py +5186 -0
- ccbt-0.0.1/ccbt/session/status_aggregation.py +148 -0
- ccbt-0.0.1/ccbt/session/tasks.py +68 -0
- ccbt-0.0.1/ccbt/session/torrent_addition.py +708 -0
- ccbt-0.0.1/ccbt/session/torrent_utils.py +344 -0
- ccbt-0.0.1/ccbt/session/types.py +111 -0
- ccbt-0.0.1/ccbt/session/xet_conflict.py +378 -0
- ccbt-0.0.1/ccbt/session/xet_realtime_sync.py +376 -0
- ccbt-0.0.1/ccbt/session/xet_sync_manager.py +1197 -0
- ccbt-0.0.1/ccbt/storage/__init__.py +31 -0
- ccbt-0.0.1/ccbt/storage/buffers.py +468 -0
- ccbt-0.0.1/ccbt/storage/checkpoint.py +1383 -0
- ccbt-0.0.1/ccbt/storage/disk_io.py +2777 -0
- ccbt-0.0.1/ccbt/storage/disk_io_init.py +216 -0
- ccbt-0.0.1/ccbt/storage/file_assembler.py +1611 -0
- ccbt-0.0.1/ccbt/storage/folder_watcher.py +320 -0
- ccbt-0.0.1/ccbt/storage/git_versioning.py +363 -0
- ccbt-0.0.1/ccbt/storage/io_uring_wrapper.py +205 -0
- ccbt-0.0.1/ccbt/storage/resume_data.py +280 -0
- ccbt-0.0.1/ccbt/storage/xet_chunking.py +540 -0
- ccbt-0.0.1/ccbt/storage/xet_data_aggregator.py +220 -0
- ccbt-0.0.1/ccbt/storage/xet_deduplication.py +1008 -0
- ccbt-0.0.1/ccbt/storage/xet_defrag_prevention.py +208 -0
- ccbt-0.0.1/ccbt/storage/xet_file_deduplication.py +258 -0
- ccbt-0.0.1/ccbt/storage/xet_folder_manager.py +317 -0
- ccbt-0.0.1/ccbt/storage/xet_hashing.py +223 -0
- ccbt-0.0.1/ccbt/storage/xet_shard.py +407 -0
- ccbt-0.0.1/ccbt/storage/xet_xorb.py +456 -0
- ccbt-0.0.1/ccbt/transport/__init__.py +7 -0
- ccbt-0.0.1/ccbt/transport/utp.py +1876 -0
- ccbt-0.0.1/ccbt/transport/utp_extensions.py +388 -0
- ccbt-0.0.1/ccbt/transport/utp_socket.py +568 -0
- ccbt-0.0.1/ccbt/utils/__init__.py +41 -0
- ccbt-0.0.1/ccbt/utils/backoff.py +25 -0
- ccbt-0.0.1/ccbt/utils/bitfield.py +28 -0
- ccbt-0.0.1/ccbt/utils/console_utils.py +505 -0
- ccbt-0.0.1/ccbt/utils/dht_utils.py +34 -0
- ccbt-0.0.1/ccbt/utils/di.py +63 -0
- ccbt-0.0.1/ccbt/utils/events.py +970 -0
- ccbt-0.0.1/ccbt/utils/exceptions.py +119 -0
- ccbt-0.0.1/ccbt/utils/logging_config.py +667 -0
- ccbt-0.0.1/ccbt/utils/metadata_utils.py +27 -0
- ccbt-0.0.1/ccbt/utils/metrics.py +841 -0
- ccbt-0.0.1/ccbt/utils/network_optimizer.py +814 -0
- ccbt-0.0.1/ccbt/utils/port_checker.py +188 -0
- ccbt-0.0.1/ccbt/utils/resilience.py +542 -0
- ccbt-0.0.1/ccbt/utils/rich_logging.py +486 -0
- ccbt-0.0.1/ccbt/utils/rtt_measurement.py +218 -0
- ccbt-0.0.1/ccbt/utils/shutdown.py +45 -0
- ccbt-0.0.1/ccbt/utils/tasks.py +40 -0
- ccbt-0.0.1/ccbt/utils/time.py +18 -0
- ccbt-0.0.1/ccbt/utils/timeout_adapter.py +260 -0
- ccbt-0.0.1/ccbt/utils/tracker_utils.py +24 -0
- ccbt-0.0.1/ccbt/utils/version.py +165 -0
- ccbt-0.0.1/ccbt.toml +424 -0
- ccbt-0.0.1/dev/.codecov.yml +215 -0
- ccbt-0.0.1/dev/.readthedocs.yaml +41 -0
- ccbt-0.0.1/dev/CHANGELOG.md +35 -0
- ccbt-0.0.1/dev/COMPATIBILITY_LINTING.md +241 -0
- ccbt-0.0.1/dev/Dockerfile.test +30 -0
- ccbt-0.0.1/dev/README_PyPI.md +96 -0
- ccbt-0.0.1/dev/RELEASE_CHECKLIST.md +113 -0
- ccbt-0.0.1/dev/benchmarks.toml +36 -0
- ccbt-0.0.1/dev/build_docs_patched.py +246 -0
- ccbt-0.0.1/dev/build_docs_patched_clean.py +337 -0
- ccbt-0.0.1/dev/build_docs_with_logs.py +289 -0
- ccbt-0.0.1/dev/compatibility_linter.py +855 -0
- ccbt-0.0.1/dev/docker-compose.test.yml +107 -0
- ccbt-0.0.1/dev/mkdocs.yml +275 -0
- ccbt-0.0.1/dev/pre-commit-config.yaml +153 -0
- ccbt-0.0.1/dev/pypi-setup.md +223 -0
- ccbt-0.0.1/dev/pytest.ini +67 -0
- ccbt-0.0.1/dev/requirements-rtd.txt +35 -0
- ccbt-0.0.1/dev/ruff.toml +199 -0
- ccbt-0.0.1/dev/run_precommit_lints.py +154 -0
- ccbt-0.0.1/dev/run_tests_by_category.ps1 +123 -0
- ccbt-0.0.1/dev/run_tests_by_category.py +220 -0
- ccbt-0.0.1/dev/test_rtd_config.py +123 -0
- ccbt-0.0.1/dev/ty.toml +53 -0
- ccbt-0.0.1/docs/arc/configuration.md +742 -0
- ccbt-0.0.1/docs/arc/examples.md +348 -0
- ccbt-0.0.1/docs/arc/getting-started.md +466 -0
- ccbt-0.0.1/docs/arc/index.md +392 -0
- ccbt-0.0.1/docs/arc/localization-status.md +117 -0
- ccbt-0.0.1/docs/arc/rtl-guidelines.md +145 -0
- ccbt-0.0.1/docs/en/API.md +1881 -0
- ccbt-0.0.1/docs/en/CI_CD.md +466 -0
- ccbt-0.0.1/docs/en/RELEASE_CHECKLIST.md +71 -0
- ccbt-0.0.1/docs/en/architecture/extension-vs-protocol-separation.md +209 -0
- ccbt-0.0.1/docs/en/architecture.md +644 -0
- ccbt-0.0.1/docs/en/bep52.md +564 -0
- ccbt-0.0.1/docs/en/bep_xet.md +660 -0
- ccbt-0.0.1/docs/en/bitonic.md +2183 -0
- ccbt-0.0.1/docs/en/blog/.gitkeep +200 -0
- ccbt-0.0.1/docs/en/blog/2024-01-01-welcome.md +0 -0
- ccbt-0.0.1/docs/en/blog/2024-01-15-release-notes.md +308 -0
- ccbt-0.0.1/docs/en/blog/2024-02-01-feature-highlight.md +157 -0
- ccbt-0.0.1/docs/en/blog/index.md +256 -0
- ccbt-0.0.1/docs/en/btbt-cli.md +652 -0
- ccbt-0.0.1/docs/en/ccBT-RAIL.md +175 -0
- ccbt-0.0.1/docs/en/configuration.md +401 -0
- ccbt-0.0.1/docs/en/contributing.md +538 -0
- ccbt-0.0.1/docs/en/developer/di.md +26 -0
- ccbt-0.0.1/docs/en/examples/bep52/create_hybrid_torrent.py +183 -0
- ccbt-0.0.1/docs/en/examples/bep52/create_v2_torrent.py +125 -0
- ccbt-0.0.1/docs/en/examples/bep52/parse_v2_torrent.py +218 -0
- ccbt-0.0.1/docs/en/examples/bep52/protocol_v2_session.py +306 -0
- ccbt-0.0.1/docs/en/examples/example-config-advanced.toml +34 -0
- ccbt-0.0.1/docs/en/examples/example-config-basic.toml +21 -0
- ccbt-0.0.1/docs/en/examples/example-config-performance.toml +24 -0
- ccbt-0.0.1/docs/en/examples/example-config-security.toml +21 -0
- ccbt-0.0.1/docs/en/examples.md +77 -0
- ccbt-0.0.1/docs/en/funding.md +85 -0
- ccbt-0.0.1/docs/en/getting-started.md +165 -0
- ccbt-0.0.1/docs/en/i18n/translation-guide.md +274 -0
- ccbt-0.0.1/docs/en/includes/mkdocs.md +4 -0
- ccbt-0.0.1/docs/en/index.md +114 -0
- ccbt-0.0.1/docs/en/license.md +563 -0
- ccbt-0.0.1/docs/en/performance/encryption_benchmark_report.md +237 -0
- ccbt-0.0.1/docs/en/performance.md +458 -0
- ccbt-0.0.1/docs/en/reports/bandit/index.md +46 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/index.md +72 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/disk_io-20251112-191716-a9c4027.json +81 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/disk_io-20251112-191742-a9c4027.json +81 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/disk_io-20251112-191743-a9c4027.json +81 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191730-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191745-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191746-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191747-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191748-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191750-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191759-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/encryption-20251112-191800-a9c4027.json +243 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191707-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191741-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191754-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191755-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191756-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191758-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191805-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/hash_verify-20251112-191806-a9c4027.json +42 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191721-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191742-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191749-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191755-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191756-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191757-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191800-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191807-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251112-191808-a9c4027.json +29 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/loopback_throughput-20251113-165017-7cbe3b2.json +53 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191719-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191745-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191751-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191758-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191759-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191800-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191802-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191808-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/runs/piece_assembly-20251112-191809-a9c4027.json +28 -0
- ccbt-0.0.1/docs/en/reports/benchmarks/timeseries/loopback_throughput_timeseries.json +54 -0
- ccbt-0.0.1/docs/en/reports/coverage.md +16 -0
- ccbt-0.0.1/docs/en/reports/junit.xml +1 -0
- ccbt-0.0.1/docs/en/unimplemented-methods.md +38 -0
- ccbt-0.0.1/docs/es/architecture.md +575 -0
- ccbt-0.0.1/docs/es/bep52.md +564 -0
- ccbt-0.0.1/docs/es/bep_xet.md +605 -0
- ccbt-0.0.1/docs/es/bitonic.md +2003 -0
- ccbt-0.0.1/docs/es/btbt-cli.md +1340 -0
- ccbt-0.0.1/docs/es/configuration.md +401 -0
- ccbt-0.0.1/docs/es/examples.md +78 -0
- ccbt-0.0.1/docs/es/getting-started.md +165 -0
- ccbt-0.0.1/docs/es/index.md +114 -0
- ccbt-0.0.1/docs/es/performance.md +458 -0
- ccbt-0.0.1/docs/eu/configuration.md +401 -0
- ccbt-0.0.1/docs/eu/examples.md +78 -0
- ccbt-0.0.1/docs/eu/getting-started.md +165 -0
- ccbt-0.0.1/docs/eu/index.md +114 -0
- ccbt-0.0.1/docs/fa/API.md +111 -0
- ccbt-0.0.1/docs/fa/architecture.md +68 -0
- ccbt-0.0.1/docs/fa/configuration.md +742 -0
- ccbt-0.0.1/docs/fa/examples.md +348 -0
- ccbt-0.0.1/docs/fa/getting-started.md +466 -0
- ccbt-0.0.1/docs/fa/index.md +408 -0
- ccbt-0.0.1/docs/fixes/dht-download-start-loop-fix.md +142 -0
- ccbt-0.0.1/docs/fixes/empty-bitfield-peer-disconnect-fix.md +154 -0
- ccbt-0.0.1/docs/fixes/peer-discovery-piece-selection-fix.md +204 -0
- ccbt-0.0.1/docs/fixes/peer-timeout-no-pieces-fix.md +172 -0
- ccbt-0.0.1/docs/fr/architecture.md +575 -0
- ccbt-0.0.1/docs/fr/bep52.md +564 -0
- ccbt-0.0.1/docs/fr/bep_xet.md +605 -0
- ccbt-0.0.1/docs/fr/bitonic.md +2003 -0
- ccbt-0.0.1/docs/fr/btbt-cli.md +1492 -0
- ccbt-0.0.1/docs/fr/configuration.md +401 -0
- ccbt-0.0.1/docs/fr/examples.md +78 -0
- ccbt-0.0.1/docs/fr/getting-started.md +165 -0
- ccbt-0.0.1/docs/fr/index.md +114 -0
- ccbt-0.0.1/docs/fr/performance.md +458 -0
- ccbt-0.0.1/docs/ha/configuration.md +738 -0
- ccbt-0.0.1/docs/ha/examples.md +344 -0
- ccbt-0.0.1/docs/ha/getting-started.md +466 -0
- ccbt-0.0.1/docs/ha/index.md +392 -0
- ccbt-0.0.1/docs/hi/API.md +111 -0
- ccbt-0.0.1/docs/hi/architecture.md +68 -0
- ccbt-0.0.1/docs/hi/configuration.md +742 -0
- ccbt-0.0.1/docs/hi/examples.md +348 -0
- ccbt-0.0.1/docs/hi/getting-started.md +466 -0
- ccbt-0.0.1/docs/hi/index.md +408 -0
- ccbt-0.0.1/docs/ja/API.md +179 -0
- ccbt-0.0.1/docs/ja/CI_CD.md +91 -0
- ccbt-0.0.1/docs/ja/architecture.md +575 -0
- ccbt-0.0.1/docs/ja/bep52.md +564 -0
- ccbt-0.0.1/docs/ja/bep_xet.md +605 -0
- ccbt-0.0.1/docs/ja/bitonic.md +2003 -0
- ccbt-0.0.1/docs/ja/btbt-cli.md +652 -0
- ccbt-0.0.1/docs/ja/configuration.md +742 -0
- ccbt-0.0.1/docs/ja/contributing.md +146 -0
- ccbt-0.0.1/docs/ja/examples.md +348 -0
- ccbt-0.0.1/docs/ja/getting-started.md +466 -0
- ccbt-0.0.1/docs/ja/index.md +410 -0
- ccbt-0.0.1/docs/ja/performance.md +458 -0
- ccbt-0.0.1/docs/ko/configuration.md +742 -0
- ccbt-0.0.1/docs/ko/examples.md +348 -0
- ccbt-0.0.1/docs/ko/getting-started.md +466 -0
- ccbt-0.0.1/docs/ko/index.md +408 -0
- ccbt-0.0.1/docs/overrides/README.md +80 -0
- ccbt-0.0.1/docs/overrides/README_RTD.md +91 -0
- ccbt-0.0.1/docs/overrides/SETUP.md +111 -0
- ccbt-0.0.1/docs/overrides/partials/languages/README.md +95 -0
- ccbt-0.0.1/docs/overrides/partials/languages/arc.html +84 -0
- ccbt-0.0.1/docs/overrides/partials/languages/ha.html +83 -0
- ccbt-0.0.1/docs/overrides/partials/languages/sw.html +83 -0
- ccbt-0.0.1/docs/overrides/partials/languages/yo.html +83 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/disk_io-20251231-154516-d64e2d8.json +37 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/disk_io-20251231-154538-d64e2d8.json +37 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/disk_io-20251231-155230-93adac3.json +45 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/disk_io-20260102-050947-ea3cad3.json +45 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251209-135213-862dc93.json +571 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003521-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003540-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003543-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003545-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003546-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003548-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-003550-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020522-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020537-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020543-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020544-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020545-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-020549-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-132706-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-132722-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-132729-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-132730-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-132733-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154531-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154548-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154555-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154556-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154557-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154558-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20251231-154603-d64e2d8.json +243 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/encryption-20260102-051353-ea3cad3.json +571 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251209-135218-862dc93.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003507-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003533-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003534-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003550-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003552-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003553-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003554-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003555-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-003557-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020508-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020532-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020533-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020537-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020538-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020545-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020550-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020551-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020552-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020553-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-020556-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132651-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132717-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132723-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132731-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132737-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132738-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132739-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-132741-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154512-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154542-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154543-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154550-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154557-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154604-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154605-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154606-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154607-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-154609-d64e2d8.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-155619-32b1ca9.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20251231-161112-ec4b349.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20260101-212622-a180ff3.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20260101-213324-43a2215.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/hash_verify-20260102-051358-ea3cad3.json +42 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251209-135230-862dc93.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003513-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003536-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003537-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003552-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003553-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003554-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003555-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003556-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003557-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-003559-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020515-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020534-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020539-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020540-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020547-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020552-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020553-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020554-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-020558-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132658-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132719-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132724-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132732-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132739-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132740-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-132743-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154521-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154544-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154545-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154552-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154559-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154606-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154607-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154608-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154609-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-154611-d64e2d8.json +29 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-155632-32b1ca9.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20251231-161125-ec4b349.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20260101-212634-a180ff3.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20260101-213336-43a2215.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/loopback_throughput-20260102-051411-ea3cad3.json +53 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003511-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003543-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003544-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003556-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003557-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003558-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003559-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-003601-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020513-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020538-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020542-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020543-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020550-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020555-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020556-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020557-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-020600-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132656-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132723-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132728-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132736-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132742-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132743-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132744-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-132745-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154519-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154548-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154549-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154555-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154556-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154602-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154609-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154610-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154611-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-154613-d64e2d8.json +28 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-155634-32b1ca9.json +35 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20251231-161127-ec4b349.json +35 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20260101-212636-a180ff3.json +35 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20260101-213338-43a2215.json +35 -0
- ccbt-0.0.1/docs/reports/benchmarks/runs/piece_assembly-20260102-051413-ea3cad3.json +35 -0
- ccbt-0.0.1/docs/reports/benchmarks/timeseries/disk_io_timeseries.json +88 -0
- ccbt-0.0.1/docs/reports/benchmarks/timeseries/encryption_timeseries.json +1140 -0
- ccbt-0.0.1/docs/reports/benchmarks/timeseries/hash_verify_timeseries.json +43 -0
- ccbt-0.0.1/docs/reports/benchmarks/timeseries/loopback_throughput_timeseries.json +54 -0
- ccbt-0.0.1/docs/reports/benchmarks/timeseries/piece_assembly_timeseries.json +36 -0
- ccbt-0.0.1/docs/sw/configuration.md +738 -0
- ccbt-0.0.1/docs/sw/examples.md +344 -0
- ccbt-0.0.1/docs/sw/getting-started.md +462 -0
- ccbt-0.0.1/docs/sw/glossary.md +145 -0
- ccbt-0.0.1/docs/sw/index.md +392 -0
- ccbt-0.0.1/docs/sw/localization-status.md +117 -0
- ccbt-0.0.1/docs/th/configuration.md +742 -0
- ccbt-0.0.1/docs/th/examples.md +348 -0
- ccbt-0.0.1/docs/th/getting-started.md +466 -0
- ccbt-0.0.1/docs/th/index.md +408 -0
- ccbt-0.0.1/docs/ur/configuration.md +742 -0
- ccbt-0.0.1/docs/ur/examples.md +348 -0
- ccbt-0.0.1/docs/ur/getting-started.md +466 -0
- ccbt-0.0.1/docs/ur/index.md +408 -0
- ccbt-0.0.1/docs/yo/configuration.md +738 -0
- ccbt-0.0.1/docs/yo/examples.md +344 -0
- ccbt-0.0.1/docs/yo/getting-started.md +462 -0
- ccbt-0.0.1/docs/yo/glossary.md +147 -0
- ccbt-0.0.1/docs/yo/index.md +392 -0
- ccbt-0.0.1/docs/yo/localization-status.md +117 -0
- ccbt-0.0.1/docs/zh/API.md +314 -0
- ccbt-0.0.1/docs/zh/CI_CD.md +226 -0
- ccbt-0.0.1/docs/zh/architecture.md +575 -0
- ccbt-0.0.1/docs/zh/bep52.md +564 -0
- ccbt-0.0.1/docs/zh/bep_xet.md +605 -0
- ccbt-0.0.1/docs/zh/bitonic.md +2003 -0
- ccbt-0.0.1/docs/zh/btbt-cli.md +652 -0
- ccbt-0.0.1/docs/zh/configuration.md +742 -0
- ccbt-0.0.1/docs/zh/contributing.md +273 -0
- ccbt-0.0.1/docs/zh/examples.md +348 -0
- ccbt-0.0.1/docs/zh/getting-started.md +466 -0
- ccbt-0.0.1/docs/zh/index.md +408 -0
- ccbt-0.0.1/docs/zh/performance.md +458 -0
- ccbt-0.0.1/env.example +410 -0
- ccbt-0.0.1/pyproject.toml +319 -0
- ccbt-0.0.1/tests/__init__.py +1 -0
- ccbt-0.0.1/tests/chaos/__init__.py +5 -0
- ccbt-0.0.1/tests/compatibility/README.md +45 -0
- ccbt-0.0.1/tests/compatibility/__init__.py +17 -0
- ccbt-0.0.1/tests/compatibility/trackers/README.md +35 -0
- ccbt-0.0.1/tests/compatibility/trackers/__init__.py +10 -0
- ccbt-0.0.1/tests/conftest.py +1419 -0
- ccbt-0.0.1/tests/daemon/__init__.py +2 -0
- ccbt-0.0.1/tests/daemon/test_ipc_auth.py +179 -0
- ccbt-0.0.1/tests/daemon/test_ipc_authentication.py +210 -0
- ccbt-0.0.1/tests/daemon/test_ipc_ed25519_auth.py +96 -0
- ccbt-0.0.1/tests/daemon/test_websocket.py +160 -0
- ccbt-0.0.1/tests/data/test.torrent +1 -0
- ccbt-0.0.1/tests/data/test.txt +1 -0
- ccbt-0.0.1/tests/extensions/__init__.py +10 -0
- ccbt-0.0.1/tests/extensions/test_compact_peer_lists.py +355 -0
- ccbt-0.0.1/tests/extensions/test_dht_extension_comprehensive.py +621 -0
- ccbt-0.0.1/tests/extensions/test_dht_integration.py +341 -0
- ccbt-0.0.1/tests/extensions/test_extension_manager_integration.py +346 -0
- ccbt-0.0.1/tests/extensions/test_fast_extension.py +280 -0
- ccbt-0.0.1/tests/integration/__init__.py +5 -0
- ccbt-0.0.1/tests/integration/cli/test_cli_commands_integration.py +311 -0
- ccbt-0.0.1/tests/integration/daemon/test_ipc_tracker_statistics.py +384 -0
- ccbt-0.0.1/tests/integration/i18n/test_cli_translations.py +45 -0
- ccbt-0.0.1/tests/integration/monitoring/test_alert_manager_comprehensive.py +1949 -0
- ccbt-0.0.1/tests/integration/monitoring/test_dashboard.py +117 -0
- ccbt-0.0.1/tests/integration/monitoring/test_dashboard_comprehensive.py +812 -0
- ccbt-0.0.1/tests/integration/monitoring/test_dashboard_expanded.py +760 -0
- ccbt-0.0.1/tests/integration/monitoring/test_metrics_collector_comprehensive.py +803 -0
- ccbt-0.0.1/tests/integration/monitoring/test_metrics_collector_expanded.py +443 -0
- ccbt-0.0.1/tests/integration/monitoring/test_monitoring_cli.py +44 -0
- ccbt-0.0.1/tests/integration/monitoring/test_tracing_expanded.py +738 -0
- ccbt-0.0.1/tests/integration/observability/test_profiler.py +635 -0
- ccbt-0.0.1/tests/integration/test_bep47_attributes.py +417 -0
- ccbt-0.0.1/tests/integration/test_bittorrent_v2_e2e.py +715 -0
- ccbt-0.0.1/tests/integration/test_bittorrent_v2_protocol.py +659 -0
- ccbt-0.0.1/tests/integration/test_connection_pool_integration.py +152 -0
- ccbt-0.0.1/tests/integration/test_dht_enhancements_integration.py +823 -0
- ccbt-0.0.1/tests/integration/test_disk_io_phase2_integration.py +408 -0
- ccbt-0.0.1/tests/integration/test_early_peer_acceptance.py +535 -0
- ccbt-0.0.1/tests/integration/test_ed25519_integration.py +102 -0
- ccbt-0.0.1/tests/integration/test_encryption_chacha20.py +190 -0
- ccbt-0.0.1/tests/integration/test_encryption_integration.py +461 -0
- ccbt-0.0.1/tests/integration/test_end_to_end_enhanced.py +122 -0
- ccbt-0.0.1/tests/integration/test_fast_resume_integration.py +480 -0
- ccbt-0.0.1/tests/integration/test_file_selection_e2e.py +1187 -0
- ccbt-0.0.1/tests/integration/test_ipc_server_config.py +396 -0
- ccbt-0.0.1/tests/integration/test_ipfs_protocol_integration.py +541 -0
- ccbt-0.0.1/tests/integration/test_magnet_bep53.py +387 -0
- ccbt-0.0.1/tests/integration/test_nat_integration.py +214 -0
- ccbt-0.0.1/tests/integration/test_network_optimizations_phase1.py +295 -0
- ccbt-0.0.1/tests/integration/test_per_torrent_config.py +478 -0
- ccbt-0.0.1/tests/integration/test_private_torrents.py +360 -0
- ccbt-0.0.1/tests/integration/test_prometheus_endpoint.py +262 -0
- ccbt-0.0.1/tests/integration/test_proxy_integration.py +332 -0
- ccbt-0.0.1/tests/integration/test_queue_management.py +750 -0
- ccbt-0.0.1/tests/integration/test_refactored_session_lifecycle.py +376 -0
- ccbt-0.0.1/tests/integration/test_resume.py +416 -0
- ccbt-0.0.1/tests/integration/test_resume_integration.py +286 -0
- ccbt-0.0.1/tests/integration/test_scrape_e2e.py +332 -0
- ccbt-0.0.1/tests/integration/test_scrape_integration.py +480 -0
- ccbt-0.0.1/tests/integration/test_session_manager_integration.py +181 -0
- ccbt-0.0.1/tests/integration/test_session_metrics.py +254 -0
- ccbt-0.0.1/tests/integration/test_session_metrics_edge_cases.py +179 -0
- ccbt-0.0.1/tests/integration/test_session_scrape.py +246 -0
- ccbt-0.0.1/tests/integration/test_ssl_extension.py +325 -0
- ccbt-0.0.1/tests/integration/test_status_scrape_integration.py +363 -0
- ccbt-0.0.1/tests/integration/test_storage_disk_io.py +116 -0
- ccbt-0.0.1/tests/integration/test_webtorrent_e2e.py +466 -0
- ccbt-0.0.1/tests/integration/test_xet_integration.py +990 -0
- ccbt-0.0.1/tests/integration/test_xet_sync_workflow.py +239 -0
- ccbt-0.0.1/tests/integration/transport/test_utp_compatibility.py +170 -0
- ccbt-0.0.1/tests/integration/transport/test_utp_full_handshake.py +324 -0
- ccbt-0.0.1/tests/integration/transport/test_utp_performance.py +194 -0
- ccbt-0.0.1/tests/performance/__init__.py +5 -0
- ccbt-0.0.1/tests/performance/bench_disk_io.py +266 -0
- ccbt-0.0.1/tests/performance/bench_encryption.py +1445 -0
- ccbt-0.0.1/tests/performance/bench_hash_verify.py +192 -0
- ccbt-0.0.1/tests/performance/bench_loopback_throughput.py +171 -0
- ccbt-0.0.1/tests/performance/bench_piece_assembly.py +165 -0
- ccbt-0.0.1/tests/performance/bench_utils.py +345 -0
- ccbt-0.0.1/tests/performance/test_benchmarks.py +567 -0
- ccbt-0.0.1/tests/performance/test_encryption_performance.py +363 -0
- ccbt-0.0.1/tests/performance/test_webrtc_performance.py +429 -0
- ccbt-0.0.1/tests/unit/checkpoint/__init__.py +1 -0
- ccbt-0.0.1/tests/unit/cli/__init__.py +1 -0
- ccbt-0.0.1/tests/unit/cli/test_advanced_commands.py +439 -0
- ccbt-0.0.1/tests/unit/cli/test_advanced_commands_expanded_coverage.py +339 -0
- ccbt-0.0.1/tests/unit/cli/test_advanced_commands_phase2_fixes.py +309 -0
- ccbt-0.0.1/tests/unit/cli/test_bep52_cli.py +506 -0
- ccbt-0.0.1/tests/unit/cli/test_checkpoints_phase2_fixes.py +264 -0
- ccbt-0.0.1/tests/unit/cli/test_config_utils.py +287 -0
- ccbt-0.0.1/tests/unit/cli/test_create_torrent.py +229 -0
- ccbt-0.0.1/tests/unit/cli/test_create_torrent_phase2_fixes.py +246 -0
- ccbt-0.0.1/tests/unit/cli/test_downloads.py +193 -0
- ccbt-0.0.1/tests/unit/cli/test_enhanced_options.py +58 -0
- ccbt-0.0.1/tests/unit/cli/test_entry_points.py +74 -0
- ccbt-0.0.1/tests/unit/cli/test_file_commands.py +286 -0
- ccbt-0.0.1/tests/unit/cli/test_file_commands_coverage.py +349 -0
- ccbt-0.0.1/tests/unit/cli/test_filter_commands.py +806 -0
- ccbt-0.0.1/tests/unit/cli/test_filter_commands_coverage.py +124 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive.py +2641 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_basic.py +173 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_commands_comprehensive.py +1755 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_comprehensive.py +1334 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_corrected.py +205 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_coverage.py +205 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_download_file_selection.py +377 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_enhanced.py +77 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_expanded.py +868 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_expanded_coverage.py +419 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_file_selection.py +883 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_final_coverage.py +315 -0
- ccbt-0.0.1/tests/unit/cli/test_interactive_runloop.py +177 -0
- ccbt-0.0.1/tests/unit/cli/test_logging_enhancements.py +335 -0
- ccbt-0.0.1/tests/unit/cli/test_logging_regression.py +226 -0
- ccbt-0.0.1/tests/unit/cli/test_main.py +4398 -0
- ccbt-0.0.1/tests/unit/cli/test_main_checkpoints_resume.py +388 -0
- ccbt-0.0.1/tests/unit/cli/test_main_corrected.py +284 -0
- ccbt-0.0.1/tests/unit/cli/test_main_coverage_gaps.py +304 -0
- ccbt-0.0.1/tests/unit/cli/test_main_deep_paths.py +459 -0
- ccbt-0.0.1/tests/unit/cli/test_main_entry.py +515 -0
- ccbt-0.0.1/tests/unit/cli/test_main_error_paths.py +199 -0
- ccbt-0.0.1/tests/unit/cli/test_main_focus.py +314 -0
- ccbt-0.0.1/tests/unit/cli/test_main_magnet_coverage.py +35 -0
- ccbt-0.0.1/tests/unit/cli/test_main_more.py +157 -0
- ccbt-0.0.1/tests/unit/cli/test_main_more_topup.py +102 -0
- ccbt-0.0.1/tests/unit/cli/test_main_options_matrix.py +238 -0
- ccbt-0.0.1/tests/unit/cli/test_main_overrides.py +914 -0
- ccbt-0.0.1/tests/unit/cli/test_main_phase2_fixes.py +190 -0
- ccbt-0.0.1/tests/unit/cli/test_main_resume_save_verify.py +401 -0
- ccbt-0.0.1/tests/unit/cli/test_main_topup.py +337 -0
- ccbt-0.0.1/tests/unit/cli/test_monitoring_commands.py +734 -0
- ccbt-0.0.1/tests/unit/cli/test_nat_commands.py +736 -0
- ccbt-0.0.1/tests/unit/cli/test_progress.py +358 -0
- ccbt-0.0.1/tests/unit/cli/test_proxy_commands.py +325 -0
- ccbt-0.0.1/tests/unit/cli/test_proxy_commands_comprehensive.py +303 -0
- ccbt-0.0.1/tests/unit/cli/test_queue_commands.py +456 -0
- ccbt-0.0.1/tests/unit/cli/test_queue_commands_comprehensive.py +910 -0
- ccbt-0.0.1/tests/unit/cli/test_resume_commands.py +240 -0
- ccbt-0.0.1/tests/unit/cli/test_scrape_commands.py +459 -0
- ccbt-0.0.1/tests/unit/cli/test_simplification_regression.py +358 -0
- ccbt-0.0.1/tests/unit/cli/test_ssl_commands.py +1037 -0
- ccbt-0.0.1/tests/unit/cli/test_ssl_commands_coverage.py +131 -0
- ccbt-0.0.1/tests/unit/cli/test_status_scrape_display.py +437 -0
- ccbt-0.0.1/tests/unit/cli/test_torrent_config_commands_phase2_fixes.py +342 -0
- ccbt-0.0.1/tests/unit/cli/test_unused_code_regression.py +325 -0
- ccbt-0.0.1/tests/unit/cli/test_utp_commands.py +443 -0
- ccbt-0.0.1/tests/unit/cli/test_utp_config_integration.py +193 -0
- ccbt-0.0.1/tests/unit/cli/test_verbosity.py +255 -0
- ccbt-0.0.1/tests/unit/config/__init__.py +1 -0
- ccbt-0.0.1/tests/unit/config/test_proxy_config_encryption.py +245 -0
- ccbt-0.0.1/tests/unit/consensus/test_byzantine_consensus.py +137 -0
- ccbt-0.0.1/tests/unit/consensus/test_raft_consensus.py +185 -0
- ccbt-0.0.1/tests/unit/core/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/core/test_basic_imports.py +162 -0
- ccbt-0.0.1/tests/unit/core/test_bencode.py +328 -0
- ccbt-0.0.1/tests/unit/core/test_bep47_models.py +159 -0
- ccbt-0.0.1/tests/unit/core/test_magnet.py +55 -0
- ccbt-0.0.1/tests/unit/core/test_magnet_bep53.py +673 -0
- ccbt-0.0.1/tests/unit/core/test_simple_functionality.py +314 -0
- ccbt-0.0.1/tests/unit/core/test_tonic_format.py +249 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_attributes.py +565 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_attributes_coverage.py +160 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_attributes_integration.py +538 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_coverage.py +63 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_edge_cases.py +96 -0
- ccbt-0.0.1/tests/unit/core/test_torrent_v2.py +2615 -0
- ccbt-0.0.1/tests/unit/discovery/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/discovery/test_dht_comprehensive.py +1112 -0
- ccbt-0.0.1/tests/unit/discovery/test_dht_readonly.py +133 -0
- ccbt-0.0.1/tests/unit/discovery/test_pex_comprehensive.py +395 -0
- ccbt-0.0.1/tests/unit/discovery/test_pex_refresh.py +239 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_expanded.py +1147 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_peer_source.py +125 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_peer_source_direct.py +54 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_phase1.py +265 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_phase1_coverage.py +108 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_proxy.py +218 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_scrape_http.py +740 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_scrape_udp.py +362 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_session_statistics.py +322 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_session_stats.py +90 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_ssl.py +474 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_ssl_parsing.py +75 -0
- ccbt-0.0.1/tests/unit/discovery/test_tracker_udp_routing.py +312 -0
- ccbt-0.0.1/tests/unit/discovery/test_xet_cas.py +432 -0
- ccbt-0.0.1/tests/unit/disk/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/executor/test_adapter_error_handling.py +248 -0
- ccbt-0.0.1/tests/unit/executor/test_daemon_session_adapter_methods.py +964 -0
- ccbt-0.0.1/tests/unit/executor/test_session_adapter_config.py +375 -0
- ccbt-0.0.1/tests/unit/executor/test_torrent_executor_config.py +357 -0
- ccbt-0.0.1/tests/unit/extensions/test_fast_coverage.py +67 -0
- ccbt-0.0.1/tests/unit/extensions/test_ssl_capability_tracking.py +146 -0
- ccbt-0.0.1/tests/unit/extensions/test_webseed_coverage.py +94 -0
- ccbt-0.0.1/tests/unit/extensions/test_webseed_proxy.py +153 -0
- ccbt-0.0.1/tests/unit/file/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/i18n/test_i18n.py +86 -0
- ccbt-0.0.1/tests/unit/i18n/test_translations.py +45 -0
- ccbt-0.0.1/tests/unit/interface/splash/test_animation_helpers.py +61 -0
- ccbt-0.0.1/tests/unit/metadata/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/metadata/test_metadata_exchange.py +169 -0
- ccbt-0.0.1/tests/unit/metadata/test_metadata_exchange_complete.py +361 -0
- ccbt-0.0.1/tests/unit/metadata/test_metadata_exchange_expanded.py +498 -0
- ccbt-0.0.1/tests/unit/metadata/test_metadata_exchange_smoke.py +24 -0
- ccbt-0.0.1/tests/unit/metadata/test_parallel_metadata.py +341 -0
- ccbt-0.0.1/tests/unit/ml/test_adaptive_limiter.py +561 -0
- ccbt-0.0.1/tests/unit/ml/test_peer_selector.py +536 -0
- ccbt-0.0.1/tests/unit/ml/test_piece_predictor.py +618 -0
- ccbt-0.0.1/tests/unit/models/test_peer_info_ssl.py +70 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_coverage.py +178 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_http.py +189 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_http_comprehensive.py +211 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_http_coverage.py +151 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_http_errors.py +200 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_collector_http_final_coverage.py +172 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_helpers.py +708 -0
- ccbt-0.0.1/tests/unit/monitoring/test_metrics_helpers_edge_cases.py +223 -0
- ccbt-0.0.1/tests/unit/nat/test_nat_manager.py +759 -0
- ccbt-0.0.1/tests/unit/nat/test_natpmp.py +411 -0
- ccbt-0.0.1/tests/unit/nat/test_port_mapping.py +240 -0
- ccbt-0.0.1/tests/unit/nat/test_port_mapping_renewal.py +745 -0
- ccbt-0.0.1/tests/unit/nat/test_upnp.py +558 -0
- ccbt-0.0.1/tests/unit/network/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool.py +240 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_100_coverage.py +216 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_boost.py +491 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_edge_cases.py +290 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_final_coverage.py +165 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_gaps.py +268 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_phase1.py +477 -0
- ccbt-0.0.1/tests/unit/network/test_connection_pool_phase1_coverage.py +261 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer.py +554 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer_100_coverage.py +301 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer_comprehensive.py +507 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer_phase1.py +220 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer_remaining_coverage.py +123 -0
- ccbt-0.0.1/tests/unit/network/test_network_optimizer_smoke.py +15 -0
- ccbt-0.0.1/tests/unit/peer/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_connection.py +702 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_connection_coverage_gaps.py +1035 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_connection_error_handling.py +624 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_connection_expanded.py +830 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_connection_phase1_integration.py +168 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_pipelining_phase1.py +281 -0
- ccbt-0.0.1/tests/unit/peer/test_async_peer_timeout_phase1.py +120 -0
- ccbt-0.0.1/tests/unit/peer/test_connection_pool_creation.py +469 -0
- ccbt-0.0.1/tests/unit/peer/test_peer.py +722 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_connection.py +1039 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_connection_cleanup.py +509 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_connection_coverage.py +842 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_connection_encryption.py +307 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_connection_error_handling.py +269 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_coverage_gaps.py +1106 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_expanded.py +582 -0
- ccbt-0.0.1/tests/unit/peer/test_peer_source_validation.py +246 -0
- ccbt-0.0.1/tests/unit/peer/test_ssl_extension_protocol.py +1160 -0
- ccbt-0.0.1/tests/unit/peer/test_ssl_peer.py +635 -0
- ccbt-0.0.1/tests/unit/peer/test_utp_peer_connection.py +503 -0
- ccbt-0.0.1/tests/unit/peer/test_utp_peer_stream.py +170 -0
- ccbt-0.0.1/tests/unit/peer/test_webrtc_peer.py +596 -0
- ccbt-0.0.1/tests/unit/piece/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/piece/test_async_metadata_expanded.py +1093 -0
- ccbt-0.0.1/tests/unit/piece/test_async_piece_manager.py +490 -0
- ccbt-0.0.1/tests/unit/piece/test_async_piece_manager_comprehensive.py +939 -0
- ccbt-0.0.1/tests/unit/piece/test_file_selection.py +637 -0
- ccbt-0.0.1/tests/unit/piece/test_file_selection_integration.py +255 -0
- ccbt-0.0.1/tests/unit/piece/test_hash_v2.py +408 -0
- ccbt-0.0.1/tests/unit/piece/test_hash_v2_coverage.py +140 -0
- ccbt-0.0.1/tests/unit/piece/test_piece_manager.py +456 -0
- ccbt-0.0.1/tests/unit/piece/test_piece_manager_comprehensive.py +360 -0
- ccbt-0.0.1/tests/unit/piece/test_rarest_first.py +327 -0
- ccbt-0.0.1/tests/unit/piece/test_sequential.py +423 -0
- ccbt-0.0.1/tests/unit/plugins/test_metrics_plugin.py +233 -0
- ccbt-0.0.1/tests/unit/plugins/test_plugin_base_comprehensive.py +687 -0
- ccbt-0.0.1/tests/unit/plugins/test_plugin_manager_singleton.py +84 -0
- ccbt-0.0.1/tests/unit/property/__init__.py +5 -0
- ccbt-0.0.1/tests/unit/property/test_bencode_properties.py +313 -0
- ccbt-0.0.1/tests/unit/property/test_piece_selection_properties.py +323 -0
- ccbt-0.0.1/tests/unit/protocols/__init__.py +8 -0
- ccbt-0.0.1/tests/unit/protocols/test_bittorrent_disconnect.py +320 -0
- ccbt-0.0.1/tests/unit/protocols/test_bittorrent_integration.py +486 -0
- ccbt-0.0.1/tests/unit/protocols/test_bittorrent_scrape.py +349 -0
- ccbt-0.0.1/tests/unit/protocols/test_bittorrent_v2.py +1319 -0
- ccbt-0.0.1/tests/unit/protocols/test_bittorrent_v2_upgrade.py +542 -0
- ccbt-0.0.1/tests/unit/protocols/test_hybrid_protocol.py +419 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_connection.py +237 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_content_discovery.py +220 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_content_operations.py +260 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_content_retrieval.py +269 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_message_receiving.py +210 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_message_sending.py +241 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_protocol_comprehensive.py +824 -0
- ccbt-0.0.1/tests/unit/protocols/test_ipfs_torrent_conversion.py +229 -0
- ccbt-0.0.1/tests/unit/protocols/test_protocol_base.py +382 -0
- ccbt-0.0.1/tests/unit/protocols/test_protocol_base_comprehensive.py +760 -0
- ccbt-0.0.1/tests/unit/protocols/test_protocols_init.py +57 -0
- ccbt-0.0.1/tests/unit/protocols/test_webrtc_manager.py +527 -0
- ccbt-0.0.1/tests/unit/protocols/test_webrtc_manager_complete.py +332 -0
- ccbt-0.0.1/tests/unit/protocols/test_webrtc_manager_coverage.py +167 -0
- ccbt-0.0.1/tests/unit/protocols/test_webtorrent_protocol.py +586 -0
- ccbt-0.0.1/tests/unit/protocols/test_webtorrent_signaling.py +442 -0
- ccbt-0.0.1/tests/unit/protocols/test_xet_protocol.py +795 -0
- ccbt-0.0.1/tests/unit/proxy/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/proxy/conftest.py +75 -0
- ccbt-0.0.1/tests/unit/proxy/test_auth_comprehensive.py +292 -0
- ccbt-0.0.1/tests/unit/proxy/test_auth_coverage_additional.py +203 -0
- ccbt-0.0.1/tests/unit/proxy/test_client_comprehensive.py +351 -0
- ccbt-0.0.1/tests/unit/proxy/test_client_coverage_additional.py +259 -0
- ccbt-0.0.1/tests/unit/proxy/test_proxy_auth.py +390 -0
- ccbt-0.0.1/tests/unit/proxy/test_proxy_auth_coverage.py +228 -0
- ccbt-0.0.1/tests/unit/proxy/test_proxy_bypass.py +151 -0
- ccbt-0.0.1/tests/unit/proxy/test_proxy_client.py +850 -0
- ccbt-0.0.1/tests/unit/proxy/test_proxy_client_coverage.py +288 -0
- ccbt-0.0.1/tests/unit/queue_mgmt/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/queue_mgmt/test_bandwidth.py +469 -0
- ccbt-0.0.1/tests/unit/queue_mgmt/test_queue_manager.py +945 -0
- ccbt-0.0.1/tests/unit/resilience/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/resilience/test_peer_circuit_breaker.py +205 -0
- ccbt-0.0.1/tests/unit/resilience/test_resilience.py +353 -0
- ccbt-0.0.1/tests/unit/resilience/test_resilience_additional_coverage.py +213 -0
- ccbt-0.0.1/tests/unit/resilience/test_resilience_comprehensive.py +557 -0
- ccbt-0.0.1/tests/unit/resilience/test_resilience_edge_cases_final.py +364 -0
- ccbt-0.0.1/tests/unit/resilience/test_resilience_timeout.py +191 -0
- ccbt-0.0.1/tests/unit/security/__init__.py +9 -0
- ccbt-0.0.1/tests/unit/security/test_anomaly_detector.py +932 -0
- ccbt-0.0.1/tests/unit/security/test_blacklist_persistence.py +247 -0
- ccbt-0.0.1/tests/unit/security/test_blacklist_updater.py +239 -0
- ccbt-0.0.1/tests/unit/security/test_ciphers.py +268 -0
- ccbt-0.0.1/tests/unit/security/test_ciphers_chacha20.py +219 -0
- ccbt-0.0.1/tests/unit/security/test_dh_exchange.py +315 -0
- ccbt-0.0.1/tests/unit/security/test_encrypted_stream.py +404 -0
- ccbt-0.0.1/tests/unit/security/test_encryption.py +735 -0
- ccbt-0.0.1/tests/unit/security/test_encryption_coverage.py +521 -0
- ccbt-0.0.1/tests/unit/security/test_encryption_coverage_gaps.py +380 -0
- ccbt-0.0.1/tests/unit/security/test_encryption_init_coverage.py +32 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_coverage.py +264 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_coverage_final.py +179 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_coverage_gaps.py +113 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_integration.py +164 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_loading.py +171 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_matching.py +119 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_parsing.py +97 -0
- ccbt-0.0.1/tests/unit/security/test_ip_filter_rules.py +145 -0
- ccbt-0.0.1/tests/unit/security/test_key_manager.py +120 -0
- ccbt-0.0.1/tests/unit/security/test_mse_handshake.py +1270 -0
- ccbt-0.0.1/tests/unit/security/test_mse_handshake_coverage.py +770 -0
- ccbt-0.0.1/tests/unit/security/test_mse_handshake_pe.py +212 -0
- ccbt-0.0.1/tests/unit/security/test_peer_validator.py +557 -0
- ccbt-0.0.1/tests/unit/security/test_peer_validator_coverage.py +119 -0
- ccbt-0.0.1/tests/unit/security/test_rate_limiter.py +1205 -0
- ccbt-0.0.1/tests/unit/security/test_rate_limiter_coverage_gaps.py +401 -0
- ccbt-0.0.1/tests/unit/security/test_security_manager.py +321 -0
- ccbt-0.0.1/tests/unit/security/test_security_manager_additional_coverage.py +80 -0
- ccbt-0.0.1/tests/unit/security/test_security_manager_coverage.py +32 -0
- ccbt-0.0.1/tests/unit/security/test_ssl_context.py +870 -0
- ccbt-0.0.1/tests/unit/security/test_xet_allowlist.py +188 -0
- ccbt-0.0.1/tests/unit/services/conftest.py +43 -0
- ccbt-0.0.1/tests/unit/services/test_base_comprehensive.py +574 -0
- ccbt-0.0.1/tests/unit/services/test_peer_service_comprehensive.py +789 -0
- ccbt-0.0.1/tests/unit/services/test_storage_service.py +1130 -0
- ccbt-0.0.1/tests/unit/services/test_storage_service_coverage.py +158 -0
- ccbt-0.0.1/tests/unit/services/test_storage_service_write_implementation.py +454 -0
- ccbt-0.0.1/tests/unit/services/test_tracker_service.py +909 -0
- ccbt-0.0.1/tests/unit/services/test_tracker_service_coverage.py +88 -0
- ccbt-0.0.1/tests/unit/session/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/session/test_announce_controller.py +67 -0
- ccbt-0.0.1/tests/unit/session/test_async_main_coverage.py +156 -0
- ccbt-0.0.1/tests/unit/session/test_async_main_metrics.py +339 -0
- ccbt-0.0.1/tests/unit/session/test_async_main_metrics_coverage.py +178 -0
- ccbt-0.0.1/tests/unit/session/test_async_main_missing_coverage.py +60 -0
- ccbt-0.0.1/tests/unit/session/test_async_tracker_client.py +198 -0
- ccbt-0.0.1/tests/unit/session/test_checkpoint_controller.py +65 -0
- ccbt-0.0.1/tests/unit/session/test_checkpoint_persistence.py +337 -0
- ccbt-0.0.1/tests/unit/session/test_fast_resume.py +867 -0
- ccbt-0.0.1/tests/unit/session/test_lifecycle_controller.py +169 -0
- ccbt-0.0.1/tests/unit/session/test_magnet_download_continuation.py +461 -0
- ccbt-0.0.1/tests/unit/session/test_magnet_handler.py +146 -0
- ccbt-0.0.1/tests/unit/session/test_manager_background_tasks.py +322 -0
- ccbt-0.0.1/tests/unit/session/test_manager_startup.py +82 -0
- ccbt-0.0.1/tests/unit/session/test_peer_events_binder.py +211 -0
- ccbt-0.0.1/tests/unit/session/test_peer_initializer.py +59 -0
- ccbt-0.0.1/tests/unit/session/test_pex_refresh.py +99 -0
- ccbt-0.0.1/tests/unit/session/test_scrape_features.py +1109 -0
- ccbt-0.0.1/tests/unit/session/test_scrape_manager.py +182 -0
- ccbt-0.0.1/tests/unit/session/test_session_admin_ops_extended.py +318 -0
- ccbt-0.0.1/tests/unit/session/test_session_background_loops.py +207 -0
- ccbt-0.0.1/tests/unit/session/test_session_checkpoint_ops.py +178 -0
- ccbt-0.0.1/tests/unit/session/test_session_checkpoint_utilities.py +485 -0
- ccbt-0.0.1/tests/unit/session/test_session_coverage_boost.py +679 -0
- ccbt-0.0.1/tests/unit/session/test_session_edge_cases.py +398 -0
- ccbt-0.0.1/tests/unit/session/test_session_error_paths_coverage.py +979 -0
- ccbt-0.0.1/tests/unit/session/test_session_event_handlers.py +256 -0
- ccbt-0.0.1/tests/unit/session/test_session_import_export.py +101 -0
- ccbt-0.0.1/tests/unit/session/test_session_init.py +73 -0
- ccbt-0.0.1/tests/unit/session/test_session_lifecycle.py +852 -0
- ccbt-0.0.1/tests/unit/session/test_session_manager_coverage.py +377 -0
- ccbt-0.0.1/tests/unit/session/test_session_manager_metrics_and_admin.py +88 -0
- ccbt-0.0.1/tests/unit/session/test_session_missing_coverage.py +336 -0
- ccbt-0.0.1/tests/unit/session/test_session_normalize_coverage.py +114 -0
- ccbt-0.0.1/tests/unit/session/test_session_rehash_and_ops.py +155 -0
- ccbt-0.0.1/tests/unit/session/test_session_remaining_coverage.py +292 -0
- ccbt-0.0.1/tests/unit/session/test_session_resume_checkpoint.py +319 -0
- ccbt-0.0.1/tests/unit/session/test_session_status_and_utils.py +260 -0
- ccbt-0.0.1/tests/unit/session/test_session_sync_methods.py +121 -0
- ccbt-0.0.1/tests/unit/session/test_session_validate_checkpoint.py +291 -0
- ccbt-0.0.1/tests/unit/session/test_status_aggregator.py +123 -0
- ccbt-0.0.1/tests/unit/session/test_task_supervisor.py +24 -0
- ccbt-0.0.1/tests/unit/session/test_torrent_addition_handler.py +90 -0
- ccbt-0.0.1/tests/unit/session/test_tracker_announce.py +267 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_chunking.py +322 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_data_aggregator.py +262 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_deduplication.py +1156 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_defrag_prevention.py +212 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_file_deduplication.py +289 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_hashing.py +288 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_shard.py +518 -0
- ccbt-0.0.1/tests/unit/storage/test_xet_xorb.py +492 -0
- ccbt-0.0.1/tests/unit/test_package_init.py +191 -0
- ccbt-0.0.1/tests/unit/test_utils_bitfield.py +20 -0
- ccbt-0.0.1/tests/unit/test_utils_di.py +21 -0
- ccbt-0.0.1/tests/unit/tracker/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker.py +320 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker_server_http.py +16 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker_server_http_comprehensive.py +332 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker_server_udp.py +266 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker_udp_client.py +729 -0
- ccbt-0.0.1/tests/unit/tracker/test_tracker_udp_client_comprehensive.py +1004 -0
- ccbt-0.0.1/tests/unit/transport/__init__.py +2 -0
- ccbt-0.0.1/tests/unit/transport/test_utp.py +1881 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_100_coverage.py +882 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_additional.py +540 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_additional_coverage.py +1006 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_comprehensive.py +556 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_congestion_control.py +287 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_connection_id_collision.py +155 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_delayed_ack.py +250 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_ecn.py +254 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_edge_cases.py +237 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_extensions.py +301 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_final_coverage.py +1220 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_packet.py +213 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_passive_connections.py +251 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_retransmission.py +287 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_sack.py +348 -0
- ccbt-0.0.1/tests/unit/transport/test_utp_window_scaling.py +133 -0
- ccbt-0.0.1/tests/unit/utils/test_events_comprehensive.py +889 -0
- ccbt-0.0.1/tests/unit/utils/test_exceptions_comprehensive.py +220 -0
- ccbt-0.0.1/tests/unit/utils/test_logging_config_comprehensive.py +755 -0
- ccbt-0.0.1/tests/unit/utils/test_metrics_comprehensive.py +768 -0
- ccbt-0.0.1/tests/utils/__init__.py +3 -0
- ccbt-0.0.1/tests/utils/asyncio_tools.py +27 -0
- ccbt-0.0.1/uv +0 -0
- ccbt-0.0.1/uv.lock +7848 -0
ccbt-0.0.1/.env copy
ADDED
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
# ccBitTorrent Environment Variables Configuration
|
|
2
|
+
# Copy this file to .env and modify values as needed
|
|
3
|
+
# All variables are prefixed with CCBT_ to avoid conflicts
|
|
4
|
+
|
|
5
|
+
# =============================================================================
|
|
6
|
+
# NETWORK CONFIGURATION
|
|
7
|
+
# =============================================================================
|
|
8
|
+
|
|
9
|
+
# Connection limits
|
|
10
|
+
CCBT_MAX_PEERS=200 # Maximum global peers (1-10000)
|
|
11
|
+
CCBT_MAX_PEERS_PER_TORRENT=50 # Maximum peers per torrent (1-1000)
|
|
12
|
+
CCBT_MAX_CONNECTIONS_PER_PEER=1 # Max parallel connections per peer (1-8)
|
|
13
|
+
|
|
14
|
+
# Request pipeline settings
|
|
15
|
+
CCBT_PIPELINE_DEPTH=16 # Request pipeline depth (1-128)
|
|
16
|
+
CCBT_BLOCK_SIZE_KIB=16 # Block size in KiB (1-64)
|
|
17
|
+
CCBT_MIN_BLOCK_SIZE_KIB=4 # Minimum block size in KiB (1-64)
|
|
18
|
+
CCBT_MAX_BLOCK_SIZE_KIB=64 # Maximum block size in KiB (1-1024)
|
|
19
|
+
|
|
20
|
+
# Socket tuning
|
|
21
|
+
CCBT_SOCKET_RCVBUF_KIB=256 # Socket receive buffer size in KiB (1-65536)
|
|
22
|
+
CCBT_SOCKET_SNDBUF_KIB=256 # Socket send buffer size in KiB (1-65536)
|
|
23
|
+
CCBT_TCP_NODELAY=true # Enable TCP_NODELAY (true/false)
|
|
24
|
+
|
|
25
|
+
# Timeouts (seconds)
|
|
26
|
+
CCBT_CONNECTION_TIMEOUT=30.0 # Connection timeout (1.0-300.0)
|
|
27
|
+
CCBT_HANDSHAKE_TIMEOUT=10.0 # Handshake timeout (1.0-60.0)
|
|
28
|
+
CCBT_KEEP_ALIVE_INTERVAL=120.0 # Keep alive interval (30.0-600.0)
|
|
29
|
+
CCBT_PEER_TIMEOUT=60.0 # Peer inactivity timeout (5.0-600.0)
|
|
30
|
+
CCBT_DHT_TIMEOUT=2.0 # DHT request timeout (1.0-60.0)
|
|
31
|
+
|
|
32
|
+
# Listen settings
|
|
33
|
+
CCBT_LISTEN_PORT=6881 # Listen port (1024-65535)
|
|
34
|
+
CCBT_LISTEN_INTERFACE=0.0.0.0 # Listen interface
|
|
35
|
+
CCBT_ENABLE_IPV6=true # Enable IPv6 support (true/false)
|
|
36
|
+
CCBT_XET_PORT= # XET protocol port (uses listen_port_udp if not set) (1024-65535)
|
|
37
|
+
CCBT_XET_MULTICAST_ADDRESS=239.255.255.250 # XET multicast address for local network discovery
|
|
38
|
+
CCBT_XET_MULTICAST_PORT=6882 # XET multicast port (1024-65535)
|
|
39
|
+
|
|
40
|
+
# Transport protocols
|
|
41
|
+
CCBT_ENABLE_TCP=true # Enable TCP transport (true/false)
|
|
42
|
+
CCBT_ENABLE_UTP=false # Enable uTP transport (true/false)
|
|
43
|
+
CCBT_ENABLE_ENCRYPTION=false # Enable protocol encryption (true/false)
|
|
44
|
+
|
|
45
|
+
# uTP (uTorrent Transport Protocol) Configuration (BEP 29)
|
|
46
|
+
CCBT_UTP_PREFER_OVER_TCP=true # Prefer uTP over TCP when both are supported (true/false)
|
|
47
|
+
CCBT_UTP_CONNECTION_TIMEOUT=30.0 # uTP connection timeout in seconds (5.0-300.0)
|
|
48
|
+
CCBT_UTP_MAX_WINDOW_SIZE=65535 # Maximum uTP receive window size in bytes (8192-65535)
|
|
49
|
+
CCBT_UTP_MTU=1200 # uTP MTU size (maximum UDP packet size) (576-65507)
|
|
50
|
+
CCBT_UTP_INITIAL_RATE=1500 # Initial send rate in bytes/second (1024-100000)
|
|
51
|
+
CCBT_UTP_MIN_RATE=512 # Minimum send rate in bytes/second (256-10000)
|
|
52
|
+
CCBT_UTP_MAX_RATE=1000000 # Maximum send rate in bytes/second (10000-10000000)
|
|
53
|
+
CCBT_UTP_ACK_INTERVAL=0.1 # ACK packet send interval in seconds (0.01-1.0)
|
|
54
|
+
CCBT_UTP_RETRANSMIT_TIMEOUT_FACTOR=4.0 # RTT multiplier for retransmit timeout (2.0-10.0)
|
|
55
|
+
CCBT_UTP_MAX_RETRANSMITS=10 # Maximum retransmission attempts before connection failure (3-50)
|
|
56
|
+
|
|
57
|
+
# Choking strategy
|
|
58
|
+
CCBT_MAX_UPLOAD_SLOTS=4 # Maximum upload slots (1-20)
|
|
59
|
+
CCBT_OPTIMISTIC_UNCHOKE_INTERVAL=30.0 # Optimistic unchoke interval (1.0-600.0)
|
|
60
|
+
CCBT_UNCHOKE_INTERVAL=10.0 # Unchoke interval (1.0-600.0)
|
|
61
|
+
|
|
62
|
+
# IMPROVEMENT: Choking optimization weights
|
|
63
|
+
CCBT_CHOKING_UPLOAD_RATE_WEIGHT=0.6 # Weight for upload rate in choking/unchoking decisions (0.0-1.0)
|
|
64
|
+
CCBT_CHOKING_DOWNLOAD_RATE_WEIGHT=0.4 # Weight for download rate in choking/unchoking decisions (0.0-1.0)
|
|
65
|
+
CCBT_CHOKING_PERFORMANCE_SCORE_WEIGHT=0.2 # Weight for performance score in choking/unchoking decisions (0.0-1.0)
|
|
66
|
+
|
|
67
|
+
# IMPROVEMENT: Peer quality ranking weights
|
|
68
|
+
CCBT_PEER_QUALITY_PERFORMANCE_WEIGHT=0.4 # Weight for historical performance in peer quality ranking (0.0-1.0)
|
|
69
|
+
CCBT_PEER_QUALITY_SUCCESS_RATE_WEIGHT=0.2 # Weight for connection success rate in peer quality ranking (0.0-1.0)
|
|
70
|
+
CCBT_PEER_QUALITY_SOURCE_WEIGHT=0.2 # Weight for source quality in peer quality ranking (0.0-1.0)
|
|
71
|
+
CCBT_PEER_QUALITY_PROXIMITY_WEIGHT=0.2 # Weight for geographic proximity in peer quality ranking (0.0-1.0)
|
|
72
|
+
|
|
73
|
+
# Rate limiting (KiB/s, 0 = unlimited)
|
|
74
|
+
CCBT_GLOBAL_DOWN_KIB=0 # Global download limit (0+)
|
|
75
|
+
CCBT_GLOBAL_UP_KIB=0 # Global upload limit (0+)
|
|
76
|
+
CCBT_PER_PEER_DOWN_KIB=0 # Per-peer download limit (0+)
|
|
77
|
+
CCBT_PER_PEER_UP_KIB=0 # Per-peer upload limit (0+)
|
|
78
|
+
|
|
79
|
+
# Tracker settings
|
|
80
|
+
CCBT_TRACKER_TIMEOUT=30.0 # Tracker request timeout (5.0-120.0)
|
|
81
|
+
CCBT_TRACKER_CONNECT_TIMEOUT=10.0 # Tracker connection timeout (1.0-60.0)
|
|
82
|
+
CCBT_TRACKER_CONNECTION_LIMIT=50 # Maximum tracker connections (1-200)
|
|
83
|
+
CCBT_TRACKER_CONNECTIONS_PER_HOST=10 # Max connections per tracker host (1-50)
|
|
84
|
+
CCBT_DNS_CACHE_TTL=300 # DNS cache TTL in seconds (60-3600)
|
|
85
|
+
|
|
86
|
+
# Connection pool settings
|
|
87
|
+
CCBT_CONNECTION_POOL_GRACE_PERIOD=60.0 # Grace period in seconds for new connections before quality checks (allows time for bandwidth establishment) (0.0-600.0)
|
|
88
|
+
|
|
89
|
+
# Connection health and failure management (BitTorrent spec compliant)
|
|
90
|
+
CCBT_MAX_CONCURRENT_CONNECTION_ATTEMPTS=20 # Maximum concurrent connection attempts to prevent OS socket exhaustion (5-100)
|
|
91
|
+
CCBT_CONNECTION_FAILURE_THRESHOLD=3 # Number of consecutive failures before applying backoff to a peer (1-10)
|
|
92
|
+
CCBT_CONNECTION_FAILURE_BACKOFF_BASE=2.0 # Exponential backoff base multiplier for connection failures (1.0-10.0)
|
|
93
|
+
CCBT_CONNECTION_FAILURE_BACKOFF_MAX=300.0 # Maximum backoff delay in seconds for failed connection attempts (60.0-3600.0)
|
|
94
|
+
CCBT_ENABLE_FAIL_FAST_DHT=true # Enable fail-fast DHT trigger when active_peers == 0 for >30s (allows DHT even if <50 peers)
|
|
95
|
+
CCBT_FAIL_FAST_DHT_TIMEOUT=30.0 # Timeout in seconds before triggering fail-fast DHT when active_peers == 0 (10.0-120.0)
|
|
96
|
+
|
|
97
|
+
# BitTorrent Protocol v2 (BEP 52) settings
|
|
98
|
+
CCBT_PROTOCOL_V2_ENABLE=true # Enable BitTorrent Protocol v2 support (BEP 52) (true/false)
|
|
99
|
+
CCBT_PROTOCOL_V2_PREFER=false # Prefer v2 protocol when both v1 and v2 are available (true/false)
|
|
100
|
+
CCBT_PROTOCOL_V2_SUPPORT_HYBRID=true # Support hybrid torrents (both v1 and v2 metadata) (true/false)
|
|
101
|
+
CCBT_PROTOCOL_V2_HANDSHAKE_TIMEOUT=30.0 # v2 handshake timeout in seconds (5.0-300.0)
|
|
102
|
+
|
|
103
|
+
# =============================================================================
|
|
104
|
+
# DISK CONFIGURATION
|
|
105
|
+
# =============================================================================
|
|
106
|
+
|
|
107
|
+
# Preallocation strategy: none, sparse, full, fallocate
|
|
108
|
+
CCBT_PREALLOCATE=full # Preallocation strategy
|
|
109
|
+
CCBT_SPARSE_FILES=false # Use sparse files if supported (true/false)
|
|
110
|
+
|
|
111
|
+
# Write optimization
|
|
112
|
+
CCBT_WRITE_BATCH_KIB=64 # Write batch size in KiB (1-1024)
|
|
113
|
+
CCBT_WRITE_BUFFER_KIB=1024 # Write buffer size in KiB (0-65536)
|
|
114
|
+
CCBT_USE_MMAP=true # Use memory mapping (true/false)
|
|
115
|
+
CCBT_MMAP_CACHE_MB=128 # Memory-mapped cache size in MB (16-2048)
|
|
116
|
+
CCBT_MMAP_CACHE_CLEANUP_INTERVAL=30.0 # MMap cache cleanup interval (1.0-300.0)
|
|
117
|
+
|
|
118
|
+
# Hash verification
|
|
119
|
+
CCBT_HASH_WORKERS=4 # Number of hash verification workers (1-32)
|
|
120
|
+
CCBT_HASH_CHUNK_SIZE=65536 # Chunk size for hash verification (1024-1048576)
|
|
121
|
+
CCBT_HASH_BATCH_SIZE=4 # Number of pieces to verify in parallel batches (1-64)
|
|
122
|
+
CCBT_HASH_QUEUE_SIZE=100 # Hash verification queue size (10-500)
|
|
123
|
+
|
|
124
|
+
# I/O threading
|
|
125
|
+
CCBT_DISK_WORKERS=2 # Number of disk I/O workers (1-16)
|
|
126
|
+
CCBT_DISK_QUEUE_SIZE=200 # Disk I/O queue size (10-1000)
|
|
127
|
+
CCBT_CACHE_SIZE_MB=256 # Cache size in MB (16-4096)
|
|
128
|
+
|
|
129
|
+
# Advanced settings
|
|
130
|
+
CCBT_DIRECT_IO=false # Use direct I/O (true/false)
|
|
131
|
+
CCBT_SYNC_WRITES=false # Synchronize writes (true/false)
|
|
132
|
+
CCBT_READ_AHEAD_KIB=64 # Read ahead size in KiB (0-1024)
|
|
133
|
+
CCBT_ENABLE_IO_URING=false # Enable io_uring on Linux if available (true/false)
|
|
134
|
+
CCBT_DOWNLOAD_PATH= # Default download path
|
|
135
|
+
|
|
136
|
+
# Checkpoint settings
|
|
137
|
+
CCBT_CHECKPOINT_ENABLED=true # Enable download checkpointing (true/false)
|
|
138
|
+
CCBT_CHECKPOINT_FORMAT=both # Checkpoint file format (json/binary/both)
|
|
139
|
+
CCBT_CHECKPOINT_DIR= # Checkpoint directory (defaults to download_dir/.ccbt/checkpoints)
|
|
140
|
+
CCBT_CHECKPOINT_INTERVAL=30.0 # Checkpoint save interval in seconds (1.0-3600.0)
|
|
141
|
+
CCBT_CHECKPOINT_ON_PIECE=true # Save checkpoint after each verified piece (true/false)
|
|
142
|
+
CCBT_AUTO_RESUME=true # Automatically resume from checkpoint on startup (true/false)
|
|
143
|
+
CCBT_CHECKPOINT_COMPRESSION=true # Compress binary checkpoint files (true/false)
|
|
144
|
+
CCBT_AUTO_DELETE_CHECKPOINT_ON_COMPLETE=true # Auto-delete checkpoint when download completes (true/false)
|
|
145
|
+
CCBT_CHECKPOINT_RETENTION_DAYS=30 # Days to retain checkpoints before cleanup (1-365)
|
|
146
|
+
|
|
147
|
+
# Fast Resume settings
|
|
148
|
+
CCBT_FAST_RESUME_ENABLED=true # Enable fast resume support (true/false)
|
|
149
|
+
CCBT_RESUME_SAVE_INTERVAL=30.0 # Interval to save resume data in seconds (1.0-3600.0)
|
|
150
|
+
CCBT_RESUME_VERIFY_ON_LOAD=true # Verify resume data integrity on load (true/false)
|
|
151
|
+
CCBT_RESUME_VERIFY_PIECES=10 # Number of pieces to verify on resume (0-100, 0 = disable)
|
|
152
|
+
CCBT_RESUME_DATA_FORMAT_VERSION=1 # Resume data format version (1-100)
|
|
153
|
+
|
|
154
|
+
# BEP 47: File Attributes Configuration
|
|
155
|
+
CCBT_ATTRIBUTES_PRESERVE_ATTRIBUTES=true # Preserve file attributes (executable, hidden, symlinks) (true/false)
|
|
156
|
+
CCBT_ATTRIBUTES_SKIP_PADDING_FILES=true # Skip downloading padding files (BEP 47) (true/false)
|
|
157
|
+
CCBT_ATTRIBUTES_VERIFY_FILE_SHA1=false # Verify file SHA-1 hashes when provided (BEP 47) (true/false)
|
|
158
|
+
CCBT_ATTRIBUTES_APPLY_SYMLINKS=true # Create symlinks for files with attr='l' (true/false)
|
|
159
|
+
CCBT_ATTRIBUTES_APPLY_EXECUTABLE_BIT=true # Set executable bit for files with attr='x' (true/false)
|
|
160
|
+
CCBT_ATTRIBUTES_APPLY_HIDDEN_ATTR=true # Apply hidden attribute for files with attr='h' (Windows) (true/false)
|
|
161
|
+
|
|
162
|
+
# XET Protocol Configuration
|
|
163
|
+
CCBT_XET_ENABLED=false # Enable Xet protocol for content-defined chunking and deduplication (true/false)
|
|
164
|
+
CCBT_XET_CHUNK_MIN_SIZE=8192 # Minimum Xet chunk size in bytes
|
|
165
|
+
CCBT_XET_CHUNK_MAX_SIZE=131072 # Maximum Xet chunk size in bytes
|
|
166
|
+
CCBT_XET_CHUNK_TARGET_SIZE=16384 # Target Xet chunk size in bytes
|
|
167
|
+
CCBT_XET_DEDUPLICATION_ENABLED=true # Enable chunk-level deduplication (true/false)
|
|
168
|
+
CCBT_XET_CACHE_DB_PATH= # Path to Xet deduplication cache database
|
|
169
|
+
CCBT_XET_CHUNK_STORE_PATH= # Path to Xet chunk storage directory
|
|
170
|
+
CCBT_XET_USE_P2P_CAS=true # Use peer-to-peer Content Addressable Storage (DHT-based) (true/false)
|
|
171
|
+
CCBT_XET_COMPRESSION_ENABLED=false # Enable LZ4 compression for stored chunks (true/false)
|
|
172
|
+
|
|
173
|
+
# =============================================================================
|
|
174
|
+
# STRATEGY CONFIGURATION
|
|
175
|
+
# =============================================================================
|
|
176
|
+
|
|
177
|
+
# Piece selection strategy: round_robin, rarest_first, sequential
|
|
178
|
+
CCBT_PIECE_SELECTION=rarest_first # Piece selection strategy
|
|
179
|
+
CCBT_ENDGAME_DUPLICATES=2 # Endgame duplicate requests (1-10)
|
|
180
|
+
CCBT_ENDGAME_THRESHOLD=0.95 # Endgame mode threshold (0.1-1.0)
|
|
181
|
+
CCBT_STREAMING_MODE=false # Enable streaming mode (true/false)
|
|
182
|
+
|
|
183
|
+
# Advanced strategy settings
|
|
184
|
+
CCBT_RAREST_FIRST_THRESHOLD=0.1 # Rarest first threshold (0.0-1.0)
|
|
185
|
+
CCBT_SEQUENTIAL_WINDOW=10 # Sequential window size (1-100)
|
|
186
|
+
CCBT_SEQUENTIAL_PRIORITY_FILES= # File paths to prioritize in sequential mode (comma-separated, optional)
|
|
187
|
+
CCBT_SEQUENTIAL_FALLBACK_THRESHOLD=0.1 # Fallback to rarest-first if availability < threshold (0.0-1.0)
|
|
188
|
+
CCBT_PIPELINE_CAPACITY=4 # Request pipeline capacity (1-32)
|
|
189
|
+
|
|
190
|
+
# Piece priorities
|
|
191
|
+
CCBT_FIRST_PIECE_PRIORITY=true # Prioritize first piece (true/false)
|
|
192
|
+
CCBT_LAST_PIECE_PRIORITY=false # Prioritize last piece (true/false)
|
|
193
|
+
|
|
194
|
+
# =============================================================================
|
|
195
|
+
# DISCOVERY CONFIGURATION
|
|
196
|
+
# =============================================================================
|
|
197
|
+
|
|
198
|
+
# DHT settings
|
|
199
|
+
CCBT_ENABLE_DHT=true # Enable DHT (true/false)
|
|
200
|
+
CCBT_DHT_PORT=6882 # DHT port (1024-65535)
|
|
201
|
+
# DHT bootstrap nodes (comma-separated)
|
|
202
|
+
CCBT_DHT_BOOTSTRAP_NODES=router.bittorrent.com:6881,dht.transmissionbt.com:6881,router.utorrent.com:6881,dht.libtorrent.org:25401,dht.aelitis.com:6881,router.silotis.us:6881,router.bitcomet.com:6881
|
|
203
|
+
|
|
204
|
+
# BEP 32: IPv6 Extension for DHT
|
|
205
|
+
CCBT_DHT_ENABLE_IPV6=true # Enable IPv6 DHT support (BEP 32) (true/false)
|
|
206
|
+
CCBT_DHT_PREFER_IPV6=true # Prefer IPv6 addresses over IPv4 when available (true/false)
|
|
207
|
+
# IPv6 DHT bootstrap nodes (comma-separated, format: [hostname:port or [IPv6]:port])
|
|
208
|
+
CCBT_DHT_IPV6_BOOTSTRAP_NODES=
|
|
209
|
+
|
|
210
|
+
# BEP 43: Read-only DHT Nodes
|
|
211
|
+
CCBT_DHT_READONLY_MODE=false # Enable read-only DHT mode (BEP 43) (true/false)
|
|
212
|
+
|
|
213
|
+
# BEP 45: Multiple-Address Operation for DHT
|
|
214
|
+
CCBT_DHT_ENABLE_MULTIADDRESS=true # Enable multi-address support (BEP 45) (true/false)
|
|
215
|
+
CCBT_DHT_MAX_ADDRESSES_PER_NODE=4 # Maximum addresses to track per node (BEP 45) (1-16)
|
|
216
|
+
|
|
217
|
+
# BEP 44: Storing Arbitrary Data in the DHT
|
|
218
|
+
CCBT_DHT_ENABLE_STORAGE=false # Enable DHT storage (BEP 44) (true/false)
|
|
219
|
+
CCBT_DHT_STORAGE_TTL=3600 # Storage TTL in seconds (BEP 44) (60-86400)
|
|
220
|
+
CCBT_DHT_MAX_STORAGE_SIZE=1000 # Maximum storage value size in bytes (BEP 44) (100-10000)
|
|
221
|
+
|
|
222
|
+
# BEP 51: DHT Infohash Indexing
|
|
223
|
+
CCBT_DHT_ENABLE_INDEXING=true # Enable infohash indexing (BEP 51) (true/false)
|
|
224
|
+
CCBT_DHT_INDEX_SAMPLES_PER_KEY=8 # Maximum samples per index key (BEP 51) (1-100)
|
|
225
|
+
|
|
226
|
+
# XET chunk discovery settings
|
|
227
|
+
CCBT_XET_CHUNK_QUERY_BATCH_SIZE=50 # Batch size for parallel chunk queries (1-200)
|
|
228
|
+
CCBT_XET_CHUNK_QUERY_MAX_CONCURRENT=50 # Maximum concurrent chunk queries (1-200)
|
|
229
|
+
CCBT_DISCOVERY_CACHE_TTL=60.0 # Discovery result cache TTL in seconds (1.0-3600.0)
|
|
230
|
+
|
|
231
|
+
# PEX settings
|
|
232
|
+
CCBT_ENABLE_PEX=true # Enable Peer Exchange (true/false)
|
|
233
|
+
CCBT_PEX_INTERVAL=30.0 # Peer Exchange announce interval in seconds (5.0-3600.0)
|
|
234
|
+
|
|
235
|
+
# Tracker settings
|
|
236
|
+
CCBT_ENABLE_HTTP_TRACKERS=true # Enable HTTP trackers (true/false)
|
|
237
|
+
CCBT_ENABLE_UDP_TRACKERS=true # Enable UDP trackers (true/false)
|
|
238
|
+
CCBT_TRACKER_ANNOUNCE_INTERVAL=1800.0 # Tracker announce interval in seconds (60.0-86400.0)
|
|
239
|
+
CCBT_TRACKER_SCRAPE_INTERVAL=3600.0 # Tracker scrape interval in seconds (60.0-86400.0)
|
|
240
|
+
CCBT_TRACKER_AUTO_SCRAPE=false # Automatically scrape trackers when adding torrents (true/false)
|
|
241
|
+
# Default trackers for magnet links without tr= parameters (comma-separated)
|
|
242
|
+
CCBT_DEFAULT_TRACKERS=https://tracker.opentrackr.org:443/announce,https://tracker.torrent.eu.org:443/announce,https://tracker.openbittorrent.com:443/announce,http://tracker.opentrackr.org:1337/announce,http://tracker.openbittorrent.com:80/announce,udp://tracker.opentrackr.org:1337/announce,udp://tracker.openbittorrent.com:80/announce
|
|
243
|
+
|
|
244
|
+
# Private torrent settings (BEP 27)
|
|
245
|
+
CCBT_STRICT_PRIVATE_MODE=true # Enforce strict BEP 27 rules for private torrents (true/false)
|
|
246
|
+
|
|
247
|
+
# IMPROVEMENT: Aggressive discovery for popular torrents
|
|
248
|
+
CCBT_AGGRESSIVE_DISCOVERY_POPULAR_THRESHOLD=20 # Minimum peer count to enable aggressive discovery mode (5-100)
|
|
249
|
+
CCBT_AGGRESSIVE_DISCOVERY_ACTIVE_THRESHOLD_KIB=1.0 # Minimum download rate (KB/s) to enable aggressive discovery mode (0.1-100.0)
|
|
250
|
+
CCBT_AGGRESSIVE_DISCOVERY_INTERVAL_POPULAR=10.0 # DHT query interval in seconds for popular torrents (20+ peers) (5.0-60.0)
|
|
251
|
+
CCBT_AGGRESSIVE_DISCOVERY_INTERVAL_ACTIVE=5.0 # DHT query interval in seconds for actively downloading torrents (>1KB/s) (2.0-30.0)
|
|
252
|
+
CCBT_AGGRESSIVE_DISCOVERY_MAX_PEERS_PER_QUERY=100 # Maximum peers to query per DHT query in aggressive mode (50-500)
|
|
253
|
+
|
|
254
|
+
# DHT query parameters (Kademlia algorithm)
|
|
255
|
+
CCBT_DHT_NORMAL_ALPHA=5 # Number of parallel queries for normal DHT lookups (BEP 5 alpha parameter) (3-20)
|
|
256
|
+
CCBT_DHT_NORMAL_K=16 # Bucket size for normal DHT lookups (BEP 5 k parameter) (8-64)
|
|
257
|
+
CCBT_DHT_NORMAL_MAX_DEPTH=12 # Maximum depth for normal DHT iterative lookups (3-30)
|
|
258
|
+
CCBT_DHT_AGGRESSIVE_ALPHA=8 # Number of parallel queries for aggressive DHT lookups (BEP 5 alpha parameter) (5-30)
|
|
259
|
+
CCBT_DHT_AGGRESSIVE_K=32 # Bucket size for aggressive DHT lookups (BEP 5 k parameter) (16-128)
|
|
260
|
+
CCBT_DHT_AGGRESSIVE_MAX_DEPTH=15 # Maximum depth for aggressive DHT iterative lookups (5-50)
|
|
261
|
+
|
|
262
|
+
# =============================================================================
|
|
263
|
+
# OBSERVABILITY CONFIGURATION
|
|
264
|
+
# =============================================================================
|
|
265
|
+
|
|
266
|
+
# Logging
|
|
267
|
+
CCBT_LOG_LEVEL=INFO # Log level (DEBUG/INFO/WARNING/ERROR/CRITICAL)
|
|
268
|
+
CCBT_LOG_FILE= # Log file path (empty = stdout)
|
|
269
|
+
CCBT_LOG_FORMAT=%(asctime)s - %(name)s - %(levelname)s - %(message)s # Log format string
|
|
270
|
+
CCBT_STRUCTURED_LOGGING=true # Use structured logging (true/false)
|
|
271
|
+
CCBT_LOG_CORRELATION_ID=true # Include correlation IDs (true/false)
|
|
272
|
+
|
|
273
|
+
# Metrics
|
|
274
|
+
CCBT_ENABLE_METRICS=true # Enable metrics collection (true/false)
|
|
275
|
+
CCBT_METRICS_PORT=9090 # Metrics port (1024-65535)
|
|
276
|
+
CCBT_METRICS_INTERVAL=5.0 # Metrics collection interval in seconds (0.5-3600.0)
|
|
277
|
+
|
|
278
|
+
# Tracing
|
|
279
|
+
CCBT_ENABLE_PEER_TRACING=false # Enable peer tracing (true/false)
|
|
280
|
+
CCBT_TRACE_FILE= # Path to write traces (empty = disabled)
|
|
281
|
+
CCBT_ALERTS_RULES_PATH=.ccbt/alerts.json # Path to alert rules JSON file
|
|
282
|
+
|
|
283
|
+
# Event bus configuration
|
|
284
|
+
CCBT_EVENT_BUS_MAX_QUEUE_SIZE=10000 # Maximum size of event queue (100-1000000)
|
|
285
|
+
CCBT_EVENT_BUS_BATCH_SIZE=50 # Maximum number of events to process per batch (1-1000)
|
|
286
|
+
CCBT_EVENT_BUS_BATCH_TIMEOUT=0.05 # Timeout in seconds to wait when collecting a batch (0.001-1.0)
|
|
287
|
+
CCBT_EVENT_BUS_EMIT_TIMEOUT=0.01 # Timeout in seconds when trying to emit to a full queue (0.001-1.0)
|
|
288
|
+
CCBT_EVENT_BUS_QUEUE_FULL_THRESHOLD=0.9 # Queue fullness threshold (0.0-1.0) for dropping low-priority events (0.1-1.0)
|
|
289
|
+
CCBT_EVENT_BUS_THROTTLE_DHT_NODE_FOUND=0.1 # Throttle interval for dht_node_found events in seconds (max 10/sec) (0.001-10.0)
|
|
290
|
+
CCBT_EVENT_BUS_THROTTLE_DHT_NODE_ADDED=0.1 # Throttle interval for dht_node_added events in seconds (max 10/sec) (0.001-10.0)
|
|
291
|
+
CCBT_EVENT_BUS_THROTTLE_MONITORING_HEARTBEAT=1.0 # Throttle interval for monitoring_heartbeat events in seconds (max 1/sec) (0.1-60.0)
|
|
292
|
+
CCBT_EVENT_BUS_THROTTLE_GLOBAL_METRICS_UPDATE=0.5 # Throttle interval for global_metrics_update events in seconds (max 2/sec) (0.1-10.0)
|
|
293
|
+
|
|
294
|
+
# =============================================================================
|
|
295
|
+
# LIMITS CONFIGURATION
|
|
296
|
+
# =============================================================================
|
|
297
|
+
|
|
298
|
+
# Global rate limits (KiB/s, 0 = unlimited)
|
|
299
|
+
CCBT_LIMITS_GLOBAL_DOWN_KIB=0 # Global download limit (0+)
|
|
300
|
+
CCBT_LIMITS_GLOBAL_UP_KIB=0 # Global upload limit (0+)
|
|
301
|
+
|
|
302
|
+
# Per-torrent rate limits (KiB/s, 0 = unlimited)
|
|
303
|
+
CCBT_LIMITS_PER_TORRENT_DOWN_KIB=0 # Per-torrent download limit (0+)
|
|
304
|
+
CCBT_LIMITS_PER_TORRENT_UP_KIB=0 # Per-torrent upload limit (0+)
|
|
305
|
+
|
|
306
|
+
# Per-peer rate limits (KiB/s, 0 = unlimited)
|
|
307
|
+
CCBT_LIMITS_PER_PEER_UP_KIB=0 # Per-peer upload limit (0+)
|
|
308
|
+
|
|
309
|
+
# Scheduler settings
|
|
310
|
+
CCBT_SCHEDULER_SLICE_MS=100 # Scheduler time slice in ms (1-1000)
|
|
311
|
+
|
|
312
|
+
# =============================================================================
|
|
313
|
+
# SECURITY CONFIGURATION
|
|
314
|
+
# =============================================================================
|
|
315
|
+
|
|
316
|
+
CCBT_ENABLE_ENCRYPTION=false # Enable protocol encryption (true/false)
|
|
317
|
+
CCBT_ENCRYPTION_MODE=preferred # Encryption mode: disabled/preferred/required
|
|
318
|
+
CCBT_ENCRYPTION_DH_KEY_SIZE=768 # DH key size in bits: 768 or 1024
|
|
319
|
+
CCBT_ENCRYPTION_PREFER_RC4=true # Prefer RC4 cipher for compatibility (true/false)
|
|
320
|
+
CCBT_ENCRYPTION_ALLOWED_CIPHERS=rc4,aes # Allowed ciphers (comma-separated: rc4,aes,chacha20)
|
|
321
|
+
CCBT_ENCRYPTION_ALLOW_PLAIN_FALLBACK=true # Allow fallback to plain connection (true/false)
|
|
322
|
+
CCBT_VALIDATE_PEERS=true # Validate peers before exchanging data (true/false)
|
|
323
|
+
CCBT_RATE_LIMIT_ENABLED=true # Enable security rate limiter (true/false)
|
|
324
|
+
CCBT_MAX_CONNECTIONS_PER_PEER=1 # Maximum parallel connections per peer (1-8)
|
|
325
|
+
|
|
326
|
+
# IP Filter settings
|
|
327
|
+
CCBT_ENABLE_IP_FILTER=false # Enable IP filtering (true/false)
|
|
328
|
+
CCBT_FILTER_MODE=block # Filter mode: block or allow
|
|
329
|
+
CCBT_FILTER_FILES= # Comma-separated filter file paths
|
|
330
|
+
CCBT_FILTER_URLS= # Comma-separated filter list URLs
|
|
331
|
+
CCBT_FILTER_UPDATE_INTERVAL=86400.0 # Update interval in seconds (3600.0-604800.0)
|
|
332
|
+
CCBT_FILTER_CACHE_DIR=~/.ccbt/filters # Filter cache directory
|
|
333
|
+
CCBT_FILTER_LOG_BLOCKED=true # Log blocked connections (true/false)
|
|
334
|
+
|
|
335
|
+
# Blacklist settings
|
|
336
|
+
CCBT_BLACKLIST_ENABLE_PERSISTENCE=true # Persist blacklist to disk (true/false)
|
|
337
|
+
CCBT_BLACKLIST_FILE=~/.ccbt/security/blacklist.json # Path to blacklist file
|
|
338
|
+
CCBT_BLACKLIST_AUTO_UPDATE_ENABLED=false # Enable automatic blacklist updates from external sources (true/false)
|
|
339
|
+
CCBT_BLACKLIST_AUTO_UPDATE_INTERVAL=3600.0 # Auto-update interval in seconds (5m-24h)
|
|
340
|
+
CCBT_BLACKLIST_AUTO_UPDATE_SOURCES= # URLs for automatic blacklist updates (comma-separated)
|
|
341
|
+
CCBT_BLACKLIST_DEFAULT_EXPIRATION_HOURS= # Default expiration time for auto-blacklisted IPs in hours (empty = permanent)
|
|
342
|
+
|
|
343
|
+
# Local metric-based blacklist source
|
|
344
|
+
CCBT_BLACKLIST_LOCAL_SOURCE_ENABLED=true # Enable local metric-based blacklisting (true/false)
|
|
345
|
+
CCBT_BLACKLIST_LOCAL_SOURCE_EVALUATION_INTERVAL=300.0 # Evaluation interval in seconds (1m-1h)
|
|
346
|
+
CCBT_BLACKLIST_LOCAL_SOURCE_METRIC_WINDOW=3600.0 # Metric aggregation window in seconds (5m-24h)
|
|
347
|
+
CCBT_BLACKLIST_LOCAL_SOURCE_EXPIRATION_HOURS=24.0 # Expiration time for auto-blacklisted IPs (hours, empty = permanent)
|
|
348
|
+
CCBT_BLACKLIST_LOCAL_SOURCE_MIN_OBSERVATIONS=3 # Minimum observations before blacklisting
|
|
349
|
+
|
|
350
|
+
# =============================================================================
|
|
351
|
+
# SSL/TLS CONFIGURATION
|
|
352
|
+
# =============================================================================
|
|
353
|
+
|
|
354
|
+
# SSL/TLS settings
|
|
355
|
+
CCBT_ENABLE_SSL_TRACKERS=true # Enable SSL for tracker connections (true/false)
|
|
356
|
+
CCBT_ENABLE_SSL_PEERS=false # Enable SSL for peer connections (true/false)
|
|
357
|
+
CCBT_SSL_VERIFY_CERTIFICATES=true # Verify SSL certificates (true/false)
|
|
358
|
+
CCBT_SSL_CA_CERTIFICATES= # Path to CA certificates file or directory
|
|
359
|
+
CCBT_SSL_CLIENT_CERTIFICATE= # Path to client certificate file (PEM format)
|
|
360
|
+
CCBT_SSL_CLIENT_KEY= # Path to client private key file (PEM format)
|
|
361
|
+
CCBT_SSL_PROTOCOL_VERSION=TLSv1.2 # TLS protocol version (TLSv1.2, TLSv1.3, PROTOCOL_TLS)
|
|
362
|
+
CCBT_SSL_ALLOW_INSECURE_PEERS=true # Allow insecure peers for opportunistic encryption (true/false)
|
|
363
|
+
|
|
364
|
+
# =============================================================================
|
|
365
|
+
# PROXY CONFIGURATION
|
|
366
|
+
# =============================================================================
|
|
367
|
+
|
|
368
|
+
CCBT_PROXY_ENABLE_PROXY=false # Enable proxy support (true/false)
|
|
369
|
+
CCBT_PROXY_TYPE=http # Proxy type: http/socks4/socks5
|
|
370
|
+
CCBT_PROXY_HOST= # Proxy server hostname or IP
|
|
371
|
+
CCBT_PROXY_PORT= # Proxy server port (1-65535)
|
|
372
|
+
CCBT_PROXY_USERNAME= # Proxy username for authentication
|
|
373
|
+
CCBT_PROXY_PASSWORD= # Proxy password (encrypted in storage)
|
|
374
|
+
CCBT_PROXY_FOR_TRACKERS=true # Use proxy for tracker requests (true/false)
|
|
375
|
+
CCBT_PROXY_FOR_PEERS=false # Use proxy for peer connections (true/false)
|
|
376
|
+
CCBT_PROXY_FOR_WEBSEEDS=true # Use proxy for WebSeed requests (true/false)
|
|
377
|
+
CCBT_PROXY_BYPASS_LIST= # Comma-separated list of hosts/IPs to bypass proxy
|
|
378
|
+
|
|
379
|
+
# =============================================================================
|
|
380
|
+
# MACHINE LEARNING CONFIGURATION
|
|
381
|
+
# =============================================================================
|
|
382
|
+
|
|
383
|
+
CCBT_ML_PEER_SELECTION_ENABLED=false # Enable ML-based peer selection (true/false)
|
|
384
|
+
CCBT_ML_PIECE_PREDICTION_ENABLED=false # Enable ML piece prediction (true/false)
|
|
385
|
+
|
|
386
|
+
# =============================================================================
|
|
387
|
+
# NAT CONFIGURATION
|
|
388
|
+
# =============================================================================
|
|
389
|
+
|
|
390
|
+
CCBT_NAT_ENABLE_NAT_PMP=true # Enable NAT-PMP protocol (true/false)
|
|
391
|
+
CCBT_NAT_ENABLE_UPNP=true # Enable UPnP IGD protocol (true/false)
|
|
392
|
+
CCBT_NAT_DISCOVERY_INTERVAL=300.0 # NAT device discovery interval in seconds (0.0-3600.0)
|
|
393
|
+
CCBT_NAT_PORT_MAPPING_LEASE_TIME=3600 # Port mapping lease time in seconds (60-86400)
|
|
394
|
+
CCBT_NAT_AUTO_MAP_PORTS=true # Automatically map ports on startup (true/false)
|
|
395
|
+
CCBT_NAT_MAP_TCP_PORT=true # Map TCP listen port (true/false)
|
|
396
|
+
CCBT_NAT_MAP_UDP_PORT=true # Map UDP listen port (true/false)
|
|
397
|
+
CCBT_NAT_MAP_DHT_PORT=true # Map DHT UDP port (true/false)
|
|
398
|
+
CCBT_NAT_MAP_XET_PORT=true # Map XET protocol UDP port (true/false)
|
|
399
|
+
CCBT_NAT_MAP_XET_MULTICAST_PORT=false # Map XET multicast UDP port (usually not needed for multicast) (true/false)
|
|
400
|
+
|
|
401
|
+
# =============================================================================
|
|
402
|
+
# UI/INTERNATIONALIZATION CONFIGURATION
|
|
403
|
+
# =============================================================================
|
|
404
|
+
|
|
405
|
+
CCBT_LOCALE=en # Language/locale code (e.g., 'en', 'es', 'fr', 'hi', 'ur', 'fa', 'ja', 'ko', 'zh', 'th', 'sw', 'ha', 'yo', 'eu', 'arc')
|
|
406
|
+
CCBT_UI_LOCALE= # UI-specific locale override (takes precedence over CCBT_LOCALE if set)
|
|
407
|
+
|
|
408
|
+
# Locale precedence order (highest to lowest):
|
|
409
|
+
# 1. CCBT_UI_LOCALE environment variable
|
|
410
|
+
# 2. CCBT_LOCALE environment variable
|
|
411
|
+
# 3. LANG environment variable
|
|
412
|
+
# 4. Config file [ui] section (ccbt.toml)
|
|
413
|
+
# 5. System locale
|
|
414
|
+
# 6. Default locale ('en')
|
|
415
|
+
|
|
416
|
+
# Available locales: en, es, fr, hi, ur, fa, arc, ja, ko, zh, th, sw, ha, yo, eu
|
|
417
|
+
# If an invalid locale is specified, the system will fall back to 'en'
|
|
418
|
+
|
|
419
|
+
# =============================================================================
|
|
420
|
+
# CLI-SPECIFIC OVERRIDES
|
|
421
|
+
# =============================================================================
|
|
422
|
+
# These can be used to override any configuration value via environment variables
|
|
423
|
+
# Format: CCBT_<SECTION>_<OPTION>=<value>
|
|
424
|
+
# Example: CCBT_NETWORK_LISTEN_PORT=8080
|
|
425
|
+
|
|
426
|
+
# =============================================================================
|
|
427
|
+
# DEVELOPMENT AND DEBUGGING
|
|
428
|
+
# =============================================================================
|
|
429
|
+
|
|
430
|
+
# Debug mode
|
|
431
|
+
CCBT_DEBUG=false # Enable debug mode (true/false)
|
|
432
|
+
CCBT_VERBOSE=false # Enable verbose output (true/false)
|
|
433
|
+
|
|
434
|
+
# Performance profiling
|
|
435
|
+
CCBT_ENABLE_PROFILING=false # Enable performance profiling (true/false)
|
|
436
|
+
CCBT_PROFILE_OUTPUT= # Profile output file path
|
|
437
|
+
|
|
438
|
+
# Testing
|
|
439
|
+
CCBT_TEST_MODE=false # Enable test mode (true/false)
|
|
440
|
+
CCBT_MOCK_NETWORK=false # Use mock network for testing (true/false)
|
|
441
|
+
|
|
442
|
+
# =============================================================================
|
|
443
|
+
# NOTES
|
|
444
|
+
# =============================================================================
|
|
445
|
+
# 1. All boolean values can be set as: true/false, 1/0, yes/no, on/off
|
|
446
|
+
# 2. Numeric values must be within the specified ranges
|
|
447
|
+
# 3. Enum values must match exactly (case-sensitive)
|
|
448
|
+
# 4. Empty values will use defaults
|
|
449
|
+
# 5. Environment variables take precedence over config file values
|
|
450
|
+
# 6. CLI arguments take precedence over environment variables
|
|
451
|
+
# 7. Use quotes for values containing spaces or special characters
|
|
452
|
+
|
|
453
|
+
CCBT_ENABLE_PROFILING=false # Enable performance profiling (true/false)
|
|
454
|
+
CCBT_PROFILE_OUTPUT= # Profile output file path
|
|
455
|
+
|
|
456
|
+
# Testing
|
|
457
|
+
CCBT_TEST_MODE=false # Enable test mode (true/false)
|
|
458
|
+
CCBT_MOCK_NETWORK=false # Use mock network for testing (true/false)
|
|
459
|
+
|
|
460
|
+
# =============================================================================
|
|
461
|
+
# NOTES
|
|
462
|
+
# =============================================================================
|
|
463
|
+
# 1. All boolean values can be set as: true/false, 1/0, yes/no, on/off
|
|
464
|
+
# 2. Numeric values must be within the specified ranges
|
|
465
|
+
# 3. Enum values must match exactly (case-sensitive)
|
|
466
|
+
# 4. Empty values will use defaults
|
|
467
|
+
# 5. Environment variables take precedence over config file values
|
|
468
|
+
# 6. CLI arguments take precedence over environment variables
|
|
469
|
+
# 7. Use quotes for values containing spaces or special characters
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: '[BUG] '
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Bug Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of what the bug is.
|
|
12
|
+
|
|
13
|
+
## Steps to Reproduce
|
|
14
|
+
|
|
15
|
+
1. Go to '...'
|
|
16
|
+
2. Run command '...'
|
|
17
|
+
3. See error
|
|
18
|
+
|
|
19
|
+
## Expected Behavior
|
|
20
|
+
|
|
21
|
+
A clear and concise description of what you expected to happen.
|
|
22
|
+
|
|
23
|
+
## Actual Behavior
|
|
24
|
+
|
|
25
|
+
A clear and concise description of what actually happened.
|
|
26
|
+
|
|
27
|
+
## Environment
|
|
28
|
+
|
|
29
|
+
- **OS**: [e.g., Ubuntu 22.04, Windows 11, macOS 13.0]
|
|
30
|
+
- **Python Version**: [e.g., 3.11.0]
|
|
31
|
+
- **ccBitTorrent Version**: [e.g., 0.1.0]
|
|
32
|
+
- **Installation Method**: [e.g., PyPI, source, UV]
|
|
33
|
+
|
|
34
|
+
## Configuration
|
|
35
|
+
|
|
36
|
+
If applicable, paste relevant parts of your `ccbt.toml` configuration:
|
|
37
|
+
|
|
38
|
+
```toml
|
|
39
|
+
# Paste relevant config here
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Logs
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Paste relevant logs here. Use code blocks with triple backticks.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Additional Context
|
|
49
|
+
|
|
50
|
+
Add any other context about the problem here.
|
|
51
|
+
|
|
52
|
+
## Checklist
|
|
53
|
+
|
|
54
|
+
- [ ] I have searched existing issues to ensure this is not a duplicate
|
|
55
|
+
- [ ] I have included all relevant information
|
|
56
|
+
- [ ] I have tested with the latest version
|
|
57
|
+
- [ ] I have checked the documentation
|
|
58
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Compatibility Issue
|
|
3
|
+
about: Report compatibility problems with specific environments
|
|
4
|
+
title: '[COMPAT] '
|
|
5
|
+
labels: compatibility
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Environment Details
|
|
10
|
+
|
|
11
|
+
- **OS**: [e.g., Ubuntu 22.04, Windows 11, macOS 13.0]
|
|
12
|
+
- **OS Version**: [e.g., 22.04.2 LTS]
|
|
13
|
+
- **Python Version**: [e.g., 3.11.0]
|
|
14
|
+
- **Python Distribution**: [e.g., CPython, PyPy, Anaconda]
|
|
15
|
+
- **Architecture**: [e.g., x86_64, arm64, aarch64]
|
|
16
|
+
- **ccBitTorrent Version**: [e.g., 0.1.0]
|
|
17
|
+
- **Installation Method**: [e.g., PyPI, source, UV]
|
|
18
|
+
|
|
19
|
+
## Compatibility Problem
|
|
20
|
+
|
|
21
|
+
Describe the compatibility issue you're experiencing.
|
|
22
|
+
|
|
23
|
+
## Error Messages
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Paste error messages or stack traces here.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Steps to Reproduce
|
|
30
|
+
|
|
31
|
+
1. Environment setup: '...'
|
|
32
|
+
2. Installation method: '...'
|
|
33
|
+
3. Command run: '...'
|
|
34
|
+
4. Error occurs: '...'
|
|
35
|
+
|
|
36
|
+
## Expected Behavior
|
|
37
|
+
|
|
38
|
+
What should happen in a compatible environment?
|
|
39
|
+
|
|
40
|
+
## Actual Behavior
|
|
41
|
+
|
|
42
|
+
What actually happens in your environment?
|
|
43
|
+
|
|
44
|
+
## System Information
|
|
45
|
+
|
|
46
|
+
If applicable, provide additional system information:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Paste output of relevant system commands
|
|
50
|
+
python --version
|
|
51
|
+
pip --version
|
|
52
|
+
uname -a # or equivalent for your OS
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Dependencies
|
|
56
|
+
|
|
57
|
+
List any relevant system dependencies or libraries:
|
|
58
|
+
|
|
59
|
+
- [e.g., libtorrent, specific Python packages]
|
|
60
|
+
|
|
61
|
+
## Workarounds
|
|
62
|
+
|
|
63
|
+
Have you found any workarounds? If so, describe them.
|
|
64
|
+
|
|
65
|
+
## Additional Context
|
|
66
|
+
|
|
67
|
+
Add any other context about the compatibility issue here.
|
|
68
|
+
|
|
69
|
+
## Checklist
|
|
70
|
+
|
|
71
|
+
- [ ] I have searched existing issues to ensure this is not a duplicate
|
|
72
|
+
- [ ] I have included all relevant environment details
|
|
73
|
+
- [ ] I have tested with the latest version
|
|
74
|
+
- [ ] I have checked the documentation for known compatibility issues
|
|
75
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: 💬 Discussions
|
|
4
|
+
url: https://github.com/ccBittorrent/ccbt/discussions
|
|
5
|
+
about: Ask questions and discuss ideas with the community
|
|
6
|
+
- name: 📚 Documentation
|
|
7
|
+
url: https://ccbittorrent.readthedocs.io/
|
|
8
|
+
about: Check the documentation for guides and API reference
|
|
9
|
+
- name: 🐛 Bug Reports
|
|
10
|
+
url: https://github.com/ccBittorrent/ccbt/issues/new?template=bug_report.md
|
|
11
|
+
about: Report a bug or unexpected behavior
|
|
12
|
+
- name: ✨ Feature Requests
|
|
13
|
+
url: https://github.com/ccBittorrent/ccbt/issues/new?template=feature_request.md
|
|
14
|
+
about: Suggest a new feature or enhancement
|
|
15
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: '[FEATURE] '
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of the feature you'd like to see.
|
|
12
|
+
|
|
13
|
+
## Use Case
|
|
14
|
+
|
|
15
|
+
Describe the problem this feature would solve or the use case it would enable.
|
|
16
|
+
|
|
17
|
+
## Proposed Solution
|
|
18
|
+
|
|
19
|
+
A clear and concise description of what you want to happen.
|
|
20
|
+
|
|
21
|
+
## Alternative Solutions
|
|
22
|
+
|
|
23
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
24
|
+
|
|
25
|
+
## Implementation Ideas
|
|
26
|
+
|
|
27
|
+
If you have ideas about how this could be implemented, please share them here.
|
|
28
|
+
|
|
29
|
+
## Related Issues
|
|
30
|
+
|
|
31
|
+
Link to any related issues or discussions.
|
|
32
|
+
|
|
33
|
+
## Additional Context
|
|
34
|
+
|
|
35
|
+
Add any other context, mockups, or examples about the feature request here.
|
|
36
|
+
|
|
37
|
+
## Checklist
|
|
38
|
+
|
|
39
|
+
- [ ] I have searched existing issues to ensure this is not a duplicate
|
|
40
|
+
- [ ] I have checked the documentation
|
|
41
|
+
- [ ] This feature aligns with the project's goals
|
|
42
|
+
|