@@ -29,7 +29,7 @@ pub mod transport {
29
29
30
30
use arti_client:: { config:: onion_service:: OnionServiceConfigBuilder , TorClient } ;
31
31
use libp2p:: { core:: transport:: { OptionalTransport , OrTransport } , dns, identity, tcp, Transport } ;
32
- use libp2p_community_tor:: AddressConversion ;
32
+ use libp2p_community_tor:: { AddressConversion , tor_interface } ;
33
33
use tor_rtcompat:: tokio:: TokioRustlsRuntime ;
34
34
use crate :: common:: tor:: existing_tor_config;
35
35
@@ -65,31 +65,34 @@ pub mod transport {
65
65
num_intro_points : u8 ,
66
66
) -> Result < OnionTransportWithAddresses > {
67
67
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 ) ?;
71
71
72
72
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
+ } ;
75
87
76
88
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) )
78
90
{
79
- Ok ( ( addr, pk ) ) => {
91
+ Ok ( addr) => {
80
92
tracing:: debug!(
81
93
%addr,
82
94
"Setting up onion service for libp2p to listen on"
83
95
) ;
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
- }
93
96
vec ! [ addr]
94
97
}
95
98
Err ( err) => {
0 commit comments