@@ -29,7 +29,7 @@ pub mod transport {
2929
3030 use arti_client:: { config:: onion_service:: OnionServiceConfigBuilder , TorClient } ;
3131 use libp2p:: { core:: transport:: { OptionalTransport , OrTransport } , dns, identity, tcp, Transport } ;
32- use libp2p_community_tor:: AddressConversion ;
32+ use libp2p_community_tor:: { AddressConversion , tor_interface } ;
3333 use tor_rtcompat:: tokio:: TokioRustlsRuntime ;
3434 use crate :: common:: tor:: existing_tor_config;
3535
@@ -65,31 +65,34 @@ pub mod transport {
6565 num_intro_points : u8 ,
6666 ) -> Result < OnionTransportWithAddresses > {
6767 let ( yesmaybe, maybe_tor_transport, onion_addresses) = if let Some ( ( reuse_config, bindaddr) ) = existing_tor_config ( ) {
68- let client = libp2p_community_tor_interface :: tor_interface:: legacy_tor_client:: LegacyTorClient :: new ( reuse_config) ?;
69- let mut tor_transport = libp2p_community_tor_interface :: TorInterfaceTransport :: from_provider (
70- libp2p_community_tor_interface :: AddressConversion :: DnsOnly , Arc :: new ( Mutex :: new ( client) ) , None ) ?;
68+ let client = tor_interface:: legacy_tor_client:: LegacyTorClient :: new ( reuse_config) ?;
69+ let mut tor_transport = libp2p_community_tor :: TorInterfaceTransport :: from_provider (
70+ AddressConversion :: DnsOnly , Arc :: new ( Mutex :: new ( client) ) , None ) ?;
7171
7272 let pk_path = config_data_dir. join ( ASB_ONION_SERVICE_NICKNAME ) . with_extension ( "pk" ) ;
73- let loaded_pk = fs:: read_to_string ( & pk_path) . ok ( )
74- . and_then ( |pk| libp2p_community_tor_interface:: tor_interface:: tor_crypto:: Ed25519PrivateKey :: from_key_blob ( pk. lines ( ) . next ( ) ?) . ok ( ) ) ;
73+ let pk = match fs:: read_to_string ( & pk_path) . ok ( )
74+ . and_then ( |pk| tor_interface:: tor_crypto:: Ed25519PrivateKey :: from_key_blob ( pk. lines ( ) . next ( ) ?) . ok ( ) ) {
75+ Some ( pk) => pk,
76+ None => {
77+ let pk = tor_interface:: tor_crypto:: Ed25519PrivateKey :: generate ( ) ;
78+ let _ = mode600 ( fs:: OpenOptions :: new ( )
79+ . create ( true )
80+ . truncate ( true )
81+ . write ( true ) )
82+ . open ( & pk_path)
83+ . and_then ( |mut f| f. write_all ( pk. to_key_blob ( ) . as_bytes ( ) ) . and_then ( |_| f. write_all ( b"\n " ) ) ) ;
84+ pk
85+ }
86+ } ;
7587
7688 let addresses = if register_hidden_service {
77- match tor_transport. add_customised_onion_service ( loaded_pk . as_ref ( ) , ASB_ONION_SERVICE_PORT , None , bindaddr)
89+ match tor_transport. add_onion_service ( & pk , ASB_ONION_SERVICE_PORT , None , Some ( bindaddr) )
7890 {
79- Ok ( ( addr, pk ) ) => {
91+ Ok ( addr) => {
8092 tracing:: debug!(
8193 %addr,
8294 "Setting up onion service for libp2p to listen on"
8395 ) ;
84- if loaded_pk. is_none ( ) {
85- let writeback = pk. to_key_blob ( ) ;
86- let _ = mode600 ( fs:: OpenOptions :: new ( )
87- . create ( true )
88- . truncate ( true )
89- . write ( true ) )
90- . open ( & pk_path)
91- . and_then ( |mut f| f. write_all ( writeback. as_bytes ( ) ) . and_then ( |_| f. write_all ( b"\n " ) ) ) ;
92- }
9396 vec ! [ addr]
9497 }
9598 Err ( err) => {
0 commit comments