|
@@ -76,46 +76,50 @@ class P2P:
|
|
|
async def create(
|
|
|
cls,
|
|
|
initial_peers: Optional[Sequence[Union[Multiaddr, str]]] = None,
|
|
|
- use_ipfs: bool = False,
|
|
|
- host_maddrs: Optional[Sequence[Union[Multiaddr, str]]] = ("/ip4/127.0.0.1/tcp/0",),
|
|
|
+ *,
|
|
|
announce_maddrs: Optional[Sequence[Union[Multiaddr, str]]] = None,
|
|
|
- quic: bool = False,
|
|
|
- tls: bool = True,
|
|
|
+ auto_nat: bool = True,
|
|
|
conn_manager: bool = True,
|
|
|
dht_mode: str = "dht_server",
|
|
|
force_reachability: Optional[str] = None,
|
|
|
+ host_maddrs: Optional[Sequence[Union[Multiaddr, str]]] = ("/ip4/127.0.0.1/tcp/0",),
|
|
|
+ identity_path: Optional[str] = None,
|
|
|
+ idle_timeout: float = 30,
|
|
|
nat_port_map: bool = True,
|
|
|
- auto_nat: bool = True,
|
|
|
+ quic: bool = False,
|
|
|
+ relay_hop_limit: int = 0,
|
|
|
+ startup_timeout: float = 15,
|
|
|
+ tls: bool = True,
|
|
|
+ use_auto_relay: bool = False,
|
|
|
+ use_ipfs: bool = False,
|
|
|
use_relay: bool = True,
|
|
|
use_relay_hop: bool = False,
|
|
|
use_relay_discovery: bool = False,
|
|
|
- use_auto_relay: bool = False,
|
|
|
- relay_hop_limit: int = 0,
|
|
|
- startup_timeout: float = 15,
|
|
|
- idle_timeout: float = 30,
|
|
|
) -> "P2P":
|
|
|
"""
|
|
|
Start a new p2pd process and connect to it.
|
|
|
:param initial_peers: List of bootstrap peers
|
|
|
- :param use_ipfs: Bootstrap to IPFS (incompatible with initial_peers)
|
|
|
- :param host_maddrs: Multiaddrs to listen for external connections from other p2p instances
|
|
|
+ :param auto_nat: Enables the AutoNAT service
|
|
|
:param announce_maddrs: Visible multiaddrs that the peer will announce
|
|
|
- for external connections from other p2p instances
|
|
|
- :param quic: Enables the QUIC transport
|
|
|
- :param tls: Enables TLS1.3 channel security protocol
|
|
|
+ for external connections from other p2p instances
|
|
|
:param conn_manager: Enables the Connection Manager
|
|
|
:param dht_mode: DHT mode (dht_client/dht_server/dht)
|
|
|
:param force_reachability: Force reachability mode (public/private)
|
|
|
+ :param host_maddrs: Multiaddrs to listen for external connections from other p2p instances
|
|
|
+ :param identity_path: Path to a pre-generated private key file. If defined, makes the peer ID deterministic.
|
|
|
+ May be generated using ``./p2p-keygen`` from ``go-libp2p-daemon``.
|
|
|
+ :param idle_timeout: kill daemon if client has been idle for a given number of
|
|
|
+ seconds before opening persistent streams
|
|
|
:param nat_port_map: Enables NAT port mapping
|
|
|
- :param auto_nat: Enables the AutoNAT service
|
|
|
+ :param quic: Enables the QUIC transport
|
|
|
+ :param relay_hop_limit: sets the hop limit for hop relays
|
|
|
+ :param startup_timeout: raise a P2PDaemonError if the daemon does not start in ``startup_timeout`` seconds
|
|
|
+ :param tls: Enables TLS1.3 channel security protocol
|
|
|
+ :param use_auto_relay: enables autorelay
|
|
|
+ :param use_ipfs: Bootstrap to IPFS (incompatible with initial_peers)
|
|
|
:param use_relay: enables circuit relay
|
|
|
:param use_relay_hop: enables hop for relay
|
|
|
:param use_relay_discovery: enables passive discovery for relay
|
|
|
- :param use_auto_relay: enables autorelay
|
|
|
- :param relay_hop_limit: sets the hop limit for hop relays
|
|
|
- :param startup_timeout: raise a P2PDaemonError if the daemon does not start in ``startup_timeout`` seconds
|
|
|
- :param idle_timeout: kill daemon if client has been idle for a given number of
|
|
|
- seconds before opening persistent streams
|
|
|
:return: a wrapper for the p2p daemon
|
|
|
"""
|
|
|
|
|
@@ -141,22 +145,24 @@ class P2P:
|
|
|
]:
|
|
|
if value:
|
|
|
process_kwargs[param] = self._maddrs_to_str(value)
|
|
|
+ if identity_path is not None:
|
|
|
+ process_kwargs["id"] = identity_path
|
|
|
|
|
|
proc_args = self._make_process_args(
|
|
|
str(p2pd_path),
|
|
|
- listen=self._daemon_listen_maddr,
|
|
|
- quic=quic,
|
|
|
- tls=tls,
|
|
|
+ autoRelay=use_auto_relay,
|
|
|
+ autonat=auto_nat,
|
|
|
+ b=need_bootstrap,
|
|
|
connManager=conn_manager,
|
|
|
+ idleTimeout=f"{idle_timeout}s",
|
|
|
+ listen=self._daemon_listen_maddr,
|
|
|
natPortMap=nat_port_map,
|
|
|
- autonat=auto_nat,
|
|
|
+ quic=quic,
|
|
|
relay=use_relay,
|
|
|
- relayHop=use_relay_hop,
|
|
|
relayDiscovery=use_relay_discovery,
|
|
|
- autoRelay=use_auto_relay,
|
|
|
+ relayHop=use_relay_hop,
|
|
|
relayHopLimit=relay_hop_limit,
|
|
|
- idleTimeout=f"{idle_timeout}s",
|
|
|
- b=need_bootstrap,
|
|
|
+ tls=tls,
|
|
|
**process_kwargs,
|
|
|
)
|
|
|
|