lsp_plugin: remove redundant config option

We don't need to separately enable lsp and lsps2 services. If lsps2 is
not enabled what can we do with just the messaging layer?

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
This commit is contained in:
Peter Neuroth
2025-10-07 12:41:54 +02:00
committed by Rusty Russell
parent 1126bc312b
commit ce0be9dc87

View File

@@ -1,4 +1,4 @@
use anyhow::anyhow;
use anyhow::{anyhow, bail};
use async_trait::async_trait;
use cln_lsps::jsonrpc::server::JsonRpcResponseWriter;
use cln_lsps::jsonrpc::TransportError;
@@ -11,8 +11,7 @@ use cln_lsps::lsps2::handler::{ClnApiRpc, HtlcAcceptedHookHandler};
use cln_lsps::lsps2::model::{Lsps2BuyRequest, Lsps2GetInfoRequest};
use cln_lsps::util::wrap_payload_with_peer_id;
use cln_lsps::{lsps0, lsps2, util, LSP_FEATURE_BIT};
use cln_plugin::options::ConfigOption;
use cln_plugin::{options, Plugin};
use cln_plugin::Plugin;
use cln_rpc::notifications::CustomMsgNotification;
use cln_rpc::primitives::PublicKey;
use log::debug;
@@ -20,12 +19,6 @@ use std::path::{Path, PathBuf};
use std::str::FromStr;
use std::sync::Arc;
/// An option to enable this service.
const OPTION_ENABLED: options::FlagConfigOption = ConfigOption::new_flag(
"dev-lsps-service-enabled",
"Enables an LSPS service on the node.",
);
#[derive(Clone)]
struct State {
lsps_service: JsonRpcServer,
@@ -35,7 +28,6 @@ struct State {
#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
if let Some(plugin) = cln_plugin::Builder::new(tokio::io::stdin(), tokio::io::stdout())
.option(OPTION_ENABLED)
.option(lsps2::OPTION_ENABLED)
.option(lsps2::OPTION_PROMISE_SECRET)
.featurebits(
@@ -54,23 +46,9 @@ async fn main() -> Result<(), anyhow::Error> {
let rpc_path =
Path::new(&plugin.configuration().lightning_dir).join(&plugin.configuration().rpc_file);
if !plugin.option(&OPTION_ENABLED)? {
return plugin
.disable(&format!("`{}` not enabled", OPTION_ENABLED.name))
.await;
}
let mut lsps_builder = JsonRpcServer::builder().with_handler(
Lsps0listProtocolsRequest::METHOD.to_string(),
Arc::new(Lsps0ListProtocolsHandler {
lsps2_enabled: plugin.option(&lsps2::OPTION_ENABLED)?,
}),
);
let lsps2_enabled = if plugin.option(&lsps2::OPTION_ENABLED)? {
log::debug!("lsps2 enabled");
let secret_hex = plugin.option(&lsps2::OPTION_PROMISE_SECRET)?;
if let Some(secret_hex) = secret_hex {
if plugin.option(&lsps2::OPTION_ENABLED)? {
log::debug!("lsps2-service enabled");
if let Some(secret_hex) = plugin.option(&lsps2::OPTION_PROMISE_SECRET)? {
let secret_hex = secret_hex.trim().to_lowercase();
let decoded_bytes = match hex::decode(&secret_hex) {
@@ -97,6 +75,13 @@ async fn main() -> Result<(), anyhow::Error> {
}
};
let mut lsps_builder = JsonRpcServer::builder().with_handler(
Lsps0listProtocolsRequest::METHOD.to_string(),
Arc::new(Lsps0ListProtocolsHandler {
lsps2_enabled: plugin.option(&lsps2::OPTION_ENABLED)?,
}),
);
let cln_api_rpc = lsps2::handler::ClnApiRpc::new(rpc_path);
let getinfo_handler =
lsps2::handler::Lsps2GetInfoHandler::new(cln_api_rpc.clone(), secret);
@@ -107,20 +92,23 @@ async fn main() -> Result<(), anyhow::Error> {
Arc::new(getinfo_handler),
)
.with_handler(Lsps2BuyRequest::METHOD.to_string(), Arc::new(buy_handler));
let lsps_service = lsps_builder.build();
let state = State {
lsps_service,
lsps2_enabled: true,
};
let plugin = plugin.start(state).await?;
plugin.join().await
} else {
bail!("lsps2 enabled but no promise-secret set.");
}
true
} else {
false
};
let lsps_service = lsps_builder.build();
let state = State {
lsps_service,
lsps2_enabled,
};
let plugin = plugin.start(state).await?;
plugin.join().await
return plugin
.disable(&format!("`{}` not enabled", &lsps2::OPTION_ENABLED.name))
.await;
}
} else {
Ok(())
}