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

script/research/rlnd/rlnd: updated to new rpc impl

skoupidi 1 год назад
Родитель
Сommit
d5b523a38f

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

@@ -9,11 +9,21 @@
 # Path to the database directory
 # Path to the database directory
 database = "~/.local/share/darkfi/rlnd"
 database = "~/.local/share/darkfi/rlnd"
 
 
-# Private JSON-RPC listen URL
-private_rpc_listen = "tcp://127.0.0.1:25637"
+# Private JSON-RPC settings
+[rpc]
+# JSON-RPC listen URL
+rpc_listen = "tcp://127.0.0.1:25637"
 
 
-# Publicly exposed JSON-RPC listen URL
-public_rpc_listen = "tcp://127.0.0.1:25638"
+# Disabled RPC methods
+#rpc_disabled_methods = []
+
+# Publicly exposed JSON-RPC settings
+[public_rpc]
+# JSON-RPC listen URL
+rpc_listen = "tcp://127.0.0.1:25638"
+
+# Disabled RPC methods
+#rpc_disabled_methods = []
 
 
 # darkirc JSON-RPC endpoint
 # darkirc JSON-RPC endpoint
 endpoint = "tcp://127.0.0.1:26660"
 endpoint = "tcp://127.0.0.1:26660"

+ 9 - 6
script/research/rlnd/rlnd/src/lib.rs

@@ -23,7 +23,10 @@ use smol::lock::Mutex;
 use url::Url;
 use url::Url;
 
 
 use darkfi::{
 use darkfi::{
-    rpc::server::{listen_and_serve, RequestHandler},
+    rpc::{
+        server::{listen_and_serve, RequestHandler},
+        settings::RpcSettings,
+    },
     system::{ExecutorPtr, StoppableTask, StoppableTaskPtr},
     system::{ExecutorPtr, StoppableTask, StoppableTaskPtr},
     Error, Result,
     Error, Result,
 };
 };
@@ -108,12 +111,12 @@ impl Rlnd {
     }
     }
 
 
     /// Start the DarkFi RLN state management daemon in the given executor, using the provided
     /// Start the DarkFi RLN state management daemon in the given executor, using the provided
-    /// JSON-RPC listen urls.
+    /// JSON-RPC configurations.
     pub async fn start(
     pub async fn start(
         &self,
         &self,
         executor: &ExecutorPtr,
         executor: &ExecutorPtr,
-        private_rpc_listen: &Url,
-        public_rpc_listen: &Url,
+        private_rpc_settings: &RpcSettings,
+        public_rpc_settings: &RpcSettings,
     ) -> Result<()> {
     ) -> Result<()> {
         info!(target: "rlnd::Rlnd::start", "Starting Darkfi RLN state management daemon...");
         info!(target: "rlnd::Rlnd::start", "Starting Darkfi RLN state management daemon...");
 
 
@@ -127,7 +130,7 @@ impl Rlnd {
         info!(target: "rlnd::Rlnd::start", "Starting private JSON-RPC server");
         info!(target: "rlnd::Rlnd::start", "Starting private JSON-RPC server");
         let node_ = self.node.clone();
         let node_ = self.node.clone();
         self.private_rpc_task.clone().start(
         self.private_rpc_task.clone().start(
-            listen_and_serve::<PrivateRpcHandler>(private_rpc_listen.clone(), self.node.clone(), None, executor.clone()),
+            listen_and_serve::<PrivateRpcHandler>(private_rpc_settings.clone(), self.node.clone(), None, executor.clone()),
             |res| async move {
             |res| async move {
                 match res {
                 match res {
                     Ok(()) | Err(Error::RpcServerStopped) => <RlnNode as RequestHandler<PrivateRpcHandler>>::stop_connections(&node_).await,
                     Ok(()) | Err(Error::RpcServerStopped) => <RlnNode as RequestHandler<PrivateRpcHandler>>::stop_connections(&node_).await,
@@ -142,7 +145,7 @@ impl Rlnd {
         info!(target: "rlnd::Rlnd::start", "Starting publicly exposed JSON-RPC server");
         info!(target: "rlnd::Rlnd::start", "Starting publicly exposed JSON-RPC server");
         let node_ = self.node.clone();
         let node_ = self.node.clone();
         self.public_rpc_task.clone().start(
         self.public_rpc_task.clone().start(
-            listen_and_serve::<PublicRpcHandler>(public_rpc_listen.clone(), self.node.clone(), None, executor.clone()),
+            listen_and_serve::<PublicRpcHandler>(public_rpc_settings.clone(), self.node.clone(), None, executor.clone()),
             |res| async move {
             |res| async move {
                 match res {
                 match res {
                     Ok(()) | Err(Error::RpcServerStopped) => <RlnNode as RequestHandler<PublicRpcHandler>>::stop_connections(&node_).await,
                     Ok(()) | Err(Error::RpcServerStopped) => <RlnNode as RequestHandler<PublicRpcHandler>>::stop_connections(&node_).await,

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

@@ -23,7 +23,7 @@ use log::info;
 use structopt_toml::{serde::Deserialize, structopt::StructOpt, StructOptToml};
 use structopt_toml::{serde::Deserialize, structopt::StructOpt, StructOptToml};
 use url::Url;
 use url::Url;
 
 
-use darkfi::{async_daemonize, cli_desc, Result};
+use darkfi::{async_daemonize, cli_desc, rpc::settings::RpcSettingsOpt, Result};
 
 
 use rlnd::Rlnd;
 use rlnd::Rlnd;
 
 
@@ -42,13 +42,13 @@ struct Args {
     /// Path to the database directory
     /// Path to the database directory
     database: String,
     database: String,
 
 
-    #[structopt(short, long, default_value = "tcp://127.0.0.1:25637")]
-    /// Private JSON-RPC listen URL
-    private_rpc_listen: Url,
+    #[structopt(flatten)]
+    /// Private JSON-RPC settings
+    private_rpc: RpcSettingsOpt,
 
 
-    #[structopt(short, long, default_value = "tcp://127.0.0.1:25638")]
-    /// Publicly exposed JSON-RPC listen URL
-    public_rpc_listen: Url,
+    #[structopt(flatten)]
+    /// Publicly exposed JSON-RPC settings
+    public_rpc: RpcSettingsOpt,
 
 
     #[structopt(short, long, default_value = "tcp://127.0.0.1:26660")]
     #[structopt(short, long, default_value = "tcp://127.0.0.1:26660")]
     /// darkirc JSON-RPC endpoint
     /// darkirc JSON-RPC endpoint
@@ -71,7 +71,7 @@ async fn realmain(args: Args, ex: Arc<smol::Executor<'static>>) -> Result<()> {
     let daemon = Rlnd::init(&args.database, &args.endpoint, &ex).await?;
     let daemon = Rlnd::init(&args.database, &args.endpoint, &ex).await?;
 
 
     // Start the daemon
     // Start the daemon
-    daemon.start(&ex, &args.private_rpc_listen, &args.public_rpc_listen).await?;
+    daemon.start(&ex, &args.private_rpc.into(), &args.public_rpc.into()).await?;
 
 
     // Signal handling for graceful termination.
     // Signal handling for graceful termination.
     let (signals_handler, signals_task) = SignalHandler::new(ex)?;
     let (signals_handler, signals_task) = SignalHandler::new(ex)?;