use RpcSettings and RpcSettingsOpt

This commit is contained in:
darkfi
2025-02-18 22:35:41 +01:00
committed by skoupidi
parent a220243e56
commit 2bbe39e0ee
76 changed files with 585 additions and 255 deletions

View File

@@ -31,6 +31,7 @@ use darkfi::{
rpc::{
jsonrpc::JsonSubscriber,
server::{listen_and_serve, RequestHandler},
settings::RpcSettingsOpt,
},
system::{sleep, StoppableTask, StoppableTaskPtr},
util::path::expand_path,
@@ -72,10 +73,6 @@ struct Args {
/// RPC server listen address
daemon_listen: Vec<Url>,
#[structopt(long, default_value = "tcp://127.0.0.1:26690")]
/// JSON-RPC server listen address
json_rpc_listen: Url,
#[structopt(short, long, default_value = "~/.local/share/darkfi/evgrd_db")]
/// Datastore (DB) path
datastore: String,
@@ -103,6 +100,10 @@ struct Args {
/// P2P network settings
#[structopt(flatten)]
net: NetSettingsOpt,
/// JSON-RPC settings
#[structopt(flatten)]
rpc: RpcSettingsOpt,
}
pub struct Daemon {
@@ -368,7 +369,7 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
let daemon_ = daemon.clone();
let rpc_task = StoppableTask::new();
rpc_task.clone().start(
listen_and_serve(args.json_rpc_listen, daemon.clone(), None, ex.clone()),
listen_and_serve(args.rpc.into(), daemon.clone(), None, ex.clone()),
|res| async move {
match res {
Ok(()) | Err(Error::RpcServerStopped) => daemon_.stop_connections().await,

View File

@@ -43,7 +43,6 @@ impl RequestHandler<()> for Daemon {
"ping" => self.pong(req.id, req.params).await,
"dnet.switch" => self.dnet_switch(req.id, req.params).await,
"dnet.subscribe_events" => self.dnet_subscribe_events(req.id, req.params).await,
// TODO: Make this optional
"p2p.get_info" => self.p2p_get_info(req.id, req.params).await,
"deg.switch" => self.deg_switch(req.id, req.params).await,

View File

@@ -2,3 +2,6 @@
datastore = "~/.local/share/darkfi/evgrd"
hostlist = "~/.local/share/darkfi/evgrd/p2p_hostlist.tsv"
[rpc]
rpc_listen = "tcp://127.0.0.1:26690"
rpc_disabled_methods = ["p2p.get_info"]

View File

@@ -6,9 +6,6 @@
## The default values are left commented. They can be overridden either by
## uncommenting, or by using the command-line.
# JSON-RPC listen URL
#rpc_listen = "tcp://127.0.0.1:9540"
# P2P accept addresses
#p2p_accept = ["tls://127.0.0.1:9541"]
@@ -23,3 +20,11 @@
# Peers to connect to
#peer = []
## JSON-RPC settings
[rpc]
# JSON-RPC listen URL
rpc_listen = "tcp://127.0.0.1:9540"
# Disabled RPC methods
#rpc_disabled_methods = []

View File

@@ -37,6 +37,7 @@ use darkfi::{
JsonError, JsonRequest, JsonResponse, JsonResult,
},
server::{listen_and_serve, RequestHandler},
settings::RpcSettingsOpt
},
util::{
cli::{get_log_config, get_log_level, spawn_config},
@@ -60,9 +61,9 @@ struct Args {
/// Configuration file to use
config: Option<String>,
#[structopt(long, default_value = "tcp://127.0.0.1:9540")]
/// JSON-RPC listen URL
rpc_listen: Url,
/// JSON-RPC settings
#[structopt(flatten)]
rpc: RpcSettingsOpt,
#[structopt(long)]
/// P2P accept addresses (repeatable flag)
@@ -300,7 +301,7 @@ async fn realmain(args: Args, ex: Arc<Executor<'_>>) -> Result<()> {
// JSON-RPC server
info!("Starting JSON-RPC server");
let _ex = ex.clone();
ex.spawn(listen_and_serve(args.rpc_listen, dhtd.clone(), _ex)).detach();
ex.spawn(listen_and_serve(args.rpc.into(), dhtd.clone(), _ex)).detach();
info!("Starting sync P2P network");
p2p.clone().start(ex.clone()).await?;