X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/2ab5b2817e865ca474a8fde1add7304ec2c356bb..485c4fd46764e6be45e2da974b85e8a719d198a3:/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 f4d701b1..59c2245e 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; @@ -50,6 +51,9 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand { 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) @@ -177,20 +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 - )) { + 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); + "Running daemon command without explicit mode is deprecated. Use 'daemon --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