X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/7e9940be4ac1d3b7e19bcbd1e92b8db436415195..d356d92b5eb24f7340055f766455b943c274bc50:/src/main/java/org/asamk/signal/commands/DaemonCommand.java diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 561ee8c3..e4a14f4a 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -4,6 +4,7 @@ import net.sourceforge.argparse4j.impl.Arguments; import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Subparser; +import org.asamk.signal.DbusConfig; import org.asamk.signal.OutputType; import org.asamk.signal.ReceiveMessageHandler; import org.asamk.signal.Shutdown; @@ -46,12 +47,13 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { public void attachToSubparser(final Subparser subparser) { final var defaultSocketPath = new File(new File(IOUtils.getRuntimeDir(), "signal-cli"), "socket"); subparser.help("Run in daemon mode and provide a JSON-RPC or an experimental dbus interface."); - subparser.addArgument("--dbus") - .action(Arguments.storeTrue()) - .help("Expose a DBus interface on the user bus (the default, if no other options are given)."); + subparser.addArgument("--dbus").action(Arguments.storeTrue()).help("Expose a DBus interface on the user bus."); subparser.addArgument("--dbus-system", "--system") .action(Arguments.storeTrue()) .help("Expose a DBus interface on the system bus."); + subparser.addArgument("--bus-name") + .setDefault(DbusConfig.getBusname()) + .help("Specify the D-Bus bus name to connect to."); subparser.addArgument("--socket") .nargs("?") .type(File.class) @@ -179,18 +181,25 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { final var isDbusSystem = Boolean.TRUE.equals(ns.getBoolean("dbus-system")); if (isDbusSystem) { - daemonHandler.runDbus(true); + final var busName = ns.getString("bus-name"); + daemonHandler.runDbus(true, busName); } final var isDbusSession = Boolean.TRUE.equals(ns.getBoolean("dbus")); - if (isDbusSession || ( - !isDbusSystem - && socketFile == null - && tcpAddress == null - && httpAddress == null - && inheritedChannel == null - )) { - daemonHandler.runDbus(false); + if (isDbusSession) { + final var busName = ns.getString("bus-name"); + daemonHandler.runDbus(false, busName); + } + + if (!isDbusSystem + && !isDbusSession + && socketFile == null + && tcpAddress == null + && httpAddress == null + && inheritedChannel == null) { + logger.warn( + "Running daemon command without explicit mode is deprecated. Use --dbus to use the dbus interface."); + daemonHandler.runDbus(false, DbusConfig.getBusname()); } } @@ -214,7 +223,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { public abstract void runSocket(ServerSocketChannel serverChannel) throws CommandException; - public abstract void runDbus(boolean isDbusSystem) throws CommandException; + public abstract void runDbus(boolean isDbusSystem, final String busname) throws CommandException; public abstract void runHttp(InetSocketAddress address) throws CommandException; @@ -267,8 +276,8 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { } @Override - public void runDbus(final boolean isDbusSystem) throws CommandException { - runDbus(new DbusHandler(isDbusSystem, m, receiveMode != ReceiveMode.ON_START)); + public void runDbus(final boolean isDbusSystem, final String busname) throws CommandException { + runDbus(new DbusHandler(isDbusSystem, busname, m, receiveMode != ReceiveMode.ON_START)); } @Override @@ -292,8 +301,8 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { } @Override - public void runDbus(final boolean isDbusSystem) throws CommandException { - runDbus(new DbusHandler(isDbusSystem, c, receiveMode != ReceiveMode.ON_START)); + public void runDbus(final boolean isDbusSystem, final String busname) throws CommandException { + runDbus(new DbusHandler(isDbusSystem, busname, c, receiveMode != ReceiveMode.ON_START)); } @Override