Skip to content

Commit 72a1cc6

Browse files
committed
Allow the use of a fixed private key
1 parent d3704cc commit 72a1cc6

File tree

5 files changed

+33
-6
lines changed

5 files changed

+33
-6
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ edition = "2021"
66
[dependencies]
77
clap = "4.5.4"
88
futures = "0.3.30"
9+
hex = "0.4.3"
910
httparse = "1.8.0"
1011
litep2p = "0.5.0"
1112
# Do not upgrade multiaddr, see: https://github.com/paritytech/litep2p/pull/91

src/lib.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::collections::HashMap;
22
use std::net::SocketAddr;
33
use std::time::Duration;
44

5+
use litep2p::crypto::ed25519::SecretKey;
56
use litep2p::protocol::request_response::DialOptions;
67
use litep2p::protocol::request_response::RequestResponseEvent;
78
use litep2p::types::RequestId;
@@ -62,14 +63,18 @@ pub struct PProxyHandle {
6263
}
6364

6465
impl PProxy {
65-
pub fn new(server_addr: SocketAddr, proxy_addr: Option<SocketAddr>) -> (Self, PProxyHandle) {
66+
pub fn new(
67+
secret_key: SecretKey,
68+
server_addr: SocketAddr,
69+
proxy_addr: Option<SocketAddr>,
70+
) -> (Self, PProxyHandle) {
6671
let (command_tx, command_rx) = mpsc::channel(DEFAULT_CHANNEL_SIZE);
6772

6873
(
6974
Self {
7075
command_rx,
7176
tunnel_notifier: HashMap::new(),
72-
p2p_server: P2pServer::new(server_addr),
77+
p2p_server: P2pServer::new(secret_key, server_addr),
7378
proxy_addr,
7479
},
7580
PProxyHandle { command_tx },

src/main.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use clap::ArgAction;
33
use clap::Command;
44
use dephy_pproxy::command::PProxyCommander;
55
use dephy_pproxy::PProxy;
6+
use litep2p::crypto::ed25519::SecretKey;
67
use tonic::transport::Server;
78

89
fn parse_args() -> Command {
@@ -11,6 +12,13 @@ fn parse_args() -> Command {
1112
.version("0.1.0");
1213

1314
app = app
15+
.arg(
16+
Arg::new("KEY")
17+
.long("key")
18+
.num_args(1)
19+
.action(ArgAction::Set)
20+
.help("Ed25519 key. If not set, a random key will be generated"),
21+
)
1422
.arg(
1523
Arg::new("SERVER_ADDR")
1624
.long("server-addr")
@@ -45,6 +53,16 @@ async fn main() {
4553
.try_init();
4654

4755
let args = parse_args().get_matches();
56+
let key = args
57+
.get_one::<String>("KEY")
58+
.map(|key| {
59+
SecretKey::from_bytes(hex::decode(key).expect("Invalid key")).expect("Invalid key")
60+
})
61+
.unwrap_or_else(|| {
62+
let key = SecretKey::generate();
63+
println!("Generated key: {}", hex::encode(&key));
64+
key
65+
});
4866
let server_addr = args
4967
.get_one::<String>("SERVER_ADDR")
5068
.unwrap()
@@ -59,10 +77,10 @@ async fn main() {
5977
.get_one::<String>("PROXY_ADDR")
6078
.map(|addr| addr.parse().expect("Invalid proxy address"));
6179

62-
println!("server_addr: {:?}", server_addr);
63-
println!("commander_server_addr: {:?}", commander_server_addr);
80+
println!("server_addr: {}", server_addr);
81+
println!("commander_server_addr: {}", commander_server_addr);
6482

65-
let (pproxy, pproxy_handle) = PProxy::new(server_addr, proxy_addr);
83+
let (pproxy, pproxy_handle) = PProxy::new(key, server_addr, proxy_addr);
6684

6785
let commander = PProxyCommander::new(pproxy_handle);
6886
let commander_server = Server::builder()

src/server.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::net::SocketAddr;
33

44
use futures::StreamExt;
55
use litep2p::config::ConfigBuilder;
6+
use litep2p::crypto::ed25519::SecretKey;
67
use litep2p::protocol::request_response::Config as RequestResponseConfig;
78
use litep2p::protocol::request_response::ConfigBuilder as RequestResponseConfigBuilder;
89
use litep2p::protocol::request_response::RequestResponseEvent;
@@ -26,7 +27,7 @@ pub struct P2pServer {
2627
}
2728

2829
impl P2pServer {
29-
pub fn new(server_addr: SocketAddr) -> Self {
30+
pub fn new(secret_key: SecretKey, server_addr: SocketAddr) -> Self {
3031
let (control_config, control_handle) = Self::init_control();
3132
let (tunnel_config, tunnel_handle) = Self::init_tunnel();
3233

@@ -36,6 +37,7 @@ impl P2pServer {
3637
};
3738

3839
let litep2p_config = ConfigBuilder::new()
40+
.with_keypair(secret_key.into())
3941
.with_quic(QuicConfig {
4042
listen_addresses: vec![format!("/{ip_type}/{ip}/udp/{port}/quic-v1")
4143
.parse()

0 commit comments

Comments
 (0)