mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-11 23:51:07 +00:00
Update examples to use wildcard addresses for network binding and improve connection timeout comments
This commit is contained in:
@ -36,12 +36,14 @@ Create a file named ``relay_node.py`` with the following content:
|
|||||||
from libp2p.relay.circuit_v2.transport import CircuitV2Transport
|
from libp2p.relay.circuit_v2.transport import CircuitV2Transport
|
||||||
from libp2p.relay.circuit_v2.config import RelayConfig
|
from libp2p.relay.circuit_v2.config import RelayConfig
|
||||||
from libp2p.tools.async_service import background_trio_service
|
from libp2p.tools.async_service import background_trio_service
|
||||||
|
from libp2p.utils import get_wildcard_address
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
logger = logging.getLogger("relay_node")
|
logger = logging.getLogger("relay_node")
|
||||||
|
|
||||||
async def run_relay():
|
async def run_relay():
|
||||||
listen_addr = multiaddr.Multiaddr("/ip4/127.0.0.1/tcp/9000")
|
# Use wildcard address to listen on all interfaces
|
||||||
|
listen_addr = get_wildcard_address(9000)
|
||||||
host = new_host()
|
host = new_host()
|
||||||
|
|
||||||
config = RelayConfig(
|
config = RelayConfig(
|
||||||
@ -107,6 +109,7 @@ Create a file named ``destination_node.py`` with the following content:
|
|||||||
from libp2p.relay.circuit_v2.config import RelayConfig
|
from libp2p.relay.circuit_v2.config import RelayConfig
|
||||||
from libp2p.peer.peerinfo import info_from_p2p_addr
|
from libp2p.peer.peerinfo import info_from_p2p_addr
|
||||||
from libp2p.tools.async_service import background_trio_service
|
from libp2p.tools.async_service import background_trio_service
|
||||||
|
from libp2p.utils import get_wildcard_address
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
logger = logging.getLogger("destination_node")
|
logger = logging.getLogger("destination_node")
|
||||||
@ -139,7 +142,8 @@ Create a file named ``destination_node.py`` with the following content:
|
|||||||
Run a simple destination node that accepts connections.
|
Run a simple destination node that accepts connections.
|
||||||
This is a simplified version that doesn't use the relay functionality.
|
This is a simplified version that doesn't use the relay functionality.
|
||||||
"""
|
"""
|
||||||
listen_addr = multiaddr.Multiaddr(f"/ip4/127.0.0.1/tcp/9001")
|
# Create a libp2p host - use wildcard address to listen on all interfaces
|
||||||
|
listen_addr = get_wildcard_address(9001)
|
||||||
host = new_host()
|
host = new_host()
|
||||||
|
|
||||||
# Configure as a relay receiver (stop)
|
# Configure as a relay receiver (stop)
|
||||||
@ -252,14 +256,15 @@ Create a file named ``source_node.py`` with the following content:
|
|||||||
from libp2p.peer.peerinfo import info_from_p2p_addr
|
from libp2p.peer.peerinfo import info_from_p2p_addr
|
||||||
from libp2p.tools.async_service import background_trio_service
|
from libp2p.tools.async_service import background_trio_service
|
||||||
from libp2p.relay.circuit_v2.discovery import RelayInfo
|
from libp2p.relay.circuit_v2.discovery import RelayInfo
|
||||||
|
from libp2p.utils import get_wildcard_address
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logging.basicConfig(level=logging.DEBUG)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
logger = logging.getLogger("source_node")
|
logger = logging.getLogger("source_node")
|
||||||
|
|
||||||
async def run_source(relay_peer_id=None, destination_peer_id=None):
|
async def run_source(relay_peer_id=None, destination_peer_id=None):
|
||||||
# Create a libp2p host
|
# Create a libp2p host - use wildcard address to listen on all interfaces
|
||||||
listen_addr = multiaddr.Multiaddr("/ip4/127.0.0.1/tcp/9002")
|
listen_addr = get_wildcard_address(9002)
|
||||||
host = new_host()
|
host = new_host()
|
||||||
|
|
||||||
# Configure as a relay client
|
# Configure as a relay client
|
||||||
|
|||||||
@ -156,7 +156,7 @@ async def example_production_ready_config() -> None:
|
|||||||
# Production-ready connection configuration
|
# Production-ready connection configuration
|
||||||
connection_config = ConnectionConfig(
|
connection_config = ConnectionConfig(
|
||||||
max_connections_per_peer=3, # Balance between performance and resource usage
|
max_connections_per_peer=3, # Balance between performance and resource usage
|
||||||
connection_timeout=30.0, # Reasonable timeouta
|
connection_timeout=30.0, # Reasonable timeout
|
||||||
load_balancing_strategy="round_robin", # Simple, predictable strategy
|
load_balancing_strategy="round_robin", # Simple, predictable strategy
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -104,7 +104,9 @@ async def run(port: int, destination: str, use_varint_format: bool = True) -> No
|
|||||||
|
|
||||||
# Use optimal address for the client command
|
# Use optimal address for the client command
|
||||||
optimal_addr = get_optimal_binding_address(port)
|
optimal_addr = get_optimal_binding_address(port)
|
||||||
optimal_addr_with_peer = f"{optimal_addr}/p2p/{host_a.get_id().to_string()}"
|
optimal_addr_with_peer = (
|
||||||
|
f"{optimal_addr}/p2p/{host_a.get_id().to_string()}"
|
||||||
|
)
|
||||||
print(
|
print(
|
||||||
f"\nRun this from the same folder in another console:\n\n"
|
f"\nRun this from the same folder in another console:\n\n"
|
||||||
f"identify-demo -d {optimal_addr_with_peer}\n"
|
f"identify-demo -d {optimal_addr_with_peer}\n"
|
||||||
@ -119,7 +121,9 @@ async def run(port: int, destination: str, use_varint_format: bool = True) -> No
|
|||||||
|
|
||||||
# Use optimal address for the client command
|
# Use optimal address for the client command
|
||||||
optimal_addr = get_optimal_binding_address(port)
|
optimal_addr = get_optimal_binding_address(port)
|
||||||
optimal_addr_with_peer = f"{optimal_addr}/p2p/{host_a.get_id().to_string()}"
|
optimal_addr_with_peer = (
|
||||||
|
f"{optimal_addr}/p2p/{host_a.get_id().to_string()}"
|
||||||
|
)
|
||||||
print(
|
print(
|
||||||
f"\nRun this from the same folder in another console:\n\n"
|
f"\nRun this from the same folder in another console:\n\n"
|
||||||
f"identify-demo -d {optimal_addr_with_peer}\n"
|
f"identify-demo -d {optimal_addr_with_peer}\n"
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
Enhanced security by defaulting to loopback address (127.0.0.1) instead of wildcard binding.
|
Updated all example scripts and core modules to use secure loopback addresses instead of wildcard addresses for network binding.
|
||||||
All examples and core modules now use secure default addresses to prevent unintended public exposure.
|
The `get_wildcard_address` function and related logic now utilize all available interfaces safely, improving security and consistency across the codebase.
|
||||||
@ -65,7 +65,7 @@ async def test_prune_backoff():
|
|||||||
@pytest.mark.trio
|
@pytest.mark.trio
|
||||||
async def test_unsubscribe_backoff():
|
async def test_unsubscribe_backoff():
|
||||||
async with PubsubFactory.create_batch_with_gossipsub(
|
async with PubsubFactory.create_batch_with_gossipsub(
|
||||||
2, heartbeat_interval=1, prune_back_off=1, unsubscribe_back_off=2
|
2, heartbeat_interval=0.5, prune_back_off=2, unsubscribe_back_off=4
|
||||||
) as pubsubs:
|
) as pubsubs:
|
||||||
gsub0 = pubsubs[0].router
|
gsub0 = pubsubs[0].router
|
||||||
gsub1 = pubsubs[1].router
|
gsub1 = pubsubs[1].router
|
||||||
|
|||||||
Reference in New Issue
Block a user