]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/DaemonCommand.java
Fix getUserStatus command with only username parameter
[signal-cli] / src / main / java / org / asamk / signal / commands / DaemonCommand.java
index 561ee8c32873156c6c932626c4b889434b28750d..e4a14f4ac975445694a5f67f236277d155b33daf 100644 (file)
@@ -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