Просмотр исходного кода

script/research/rlnd: fix clap panic due to duplicate rpc-listen field in private and public RpcSettingsOpt

oars 1 год назад
Родитель
Сommit
783ac96ca6
2 измененных файлов с 29 добавлено и 14 удалено
  1. 4 6
      script/research/rlnd/rlnd/rlnd_config.toml
  2. 25 8
      script/research/rlnd/rlnd/src/main.rs

+ 4 - 6
script/research/rlnd/rlnd/rlnd_config.toml

@@ -10,20 +10,18 @@
 database = "~/.local/share/darkfi/rlnd"
 
 # Private JSON-RPC settings
-[rpc]
 # JSON-RPC listen URL
-rpc_listen = "tcp://127.0.0.1:25637"
+private_rpc_listen = "tcp://127.0.0.1:25637"
 
 # Disabled RPC methods
-#rpc_disabled_methods = []
+#private_rpc_disabled_methods = []
 
 # Publicly exposed JSON-RPC settings
-[public_rpc]
 # JSON-RPC listen URL
-rpc_listen = "tcp://127.0.0.1:25638"
+public_rpc_listen = "tcp://127.0.0.1:25638"
 
 # Disabled RPC methods
-#rpc_disabled_methods = []
+#public_rpc_disabled_methods = []
 
 # darkirc JSON-RPC endpoint
 endpoint = "tcp://127.0.0.1:26660"

+ 25 - 8
script/research/rlnd/rlnd/src/main.rs

@@ -23,7 +23,7 @@ use log::info;
 use structopt_toml::{serde::Deserialize, structopt::StructOpt, StructOptToml};
 use url::Url;
 
-use darkfi::{async_daemonize, cli_desc, rpc::settings::RpcSettingsOpt, Result};
+use darkfi::{async_daemonize, cli_desc, rpc::settings::RpcSettingsOpt, Error, Result};
 
 use rlnd::Rlnd;
 
@@ -42,13 +42,21 @@ struct Args {
     /// Path to the database directory
     database: String,
 
-    #[structopt(flatten)]
-    /// Private JSON-RPC settings
-    private_rpc: RpcSettingsOpt,
+    /// Private RPC server listen address
+    #[structopt(long, default_value = "tcp://127.0.0.1:22222")]
+    pub private_rpc_listen: Url,
 
-    #[structopt(flatten)]
-    /// Publicly exposed JSON-RPC settings
-    public_rpc: RpcSettingsOpt,
+    /// Private RPC Disabled JSON-RPC methods
+    #[structopt(long, use_delimiter = true)]
+    pub private_rpc_disabled_methods: Option<Vec<String>>,
+
+    /// Public RPC server listen address
+    #[structopt(long, default_value = "tcp://127.0.0.1:22223")]
+    pub public_rpc_listen: Url,
+
+    /// Public RPC Disabled JSON-RPC methods
+    #[structopt(long, use_delimiter = true)]
+    pub public_rpc_disabled_methods: Option<Vec<String>>,
 
     #[structopt(short, long, default_value = "tcp://127.0.0.1:26660")]
     /// darkirc JSON-RPC endpoint
@@ -70,8 +78,17 @@ async fn realmain(args: Args, ex: Arc<smol::Executor<'static>>) -> Result<()> {
     // Generate the daemon
     let daemon = Rlnd::init(&args.database, &args.endpoint, &ex).await?;
 
+    let private_rpc = RpcSettingsOpt {
+        rpc_listen: args.private_rpc_listen.clone(),
+        rpc_disabled_methods: args.private_rpc_disabled_methods.clone(),
+    };
+    let public_rpc = RpcSettingsOpt {
+        rpc_listen: args.public_rpc_listen.clone(),
+        rpc_disabled_methods: args.public_rpc_disabled_methods.clone(),
+    };
+
     // Start the daemon
-    daemon.start(&ex, &args.private_rpc.into(), &args.public_rpc.into()).await?;
+    daemon.start(&ex, &private_rpc.into(), &public_rpc.into()).await?;
 
     // Signal handling for graceful termination.
     let (signals_handler, signals_task) = SignalHandler::new(ex)?;