]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/DaemonCommand.java
Update gradle
[signal-cli] / src / main / java / org / asamk / signal / commands / DaemonCommand.java
index 561ee8c32873156c6c932626c4b889434b28750d..6790c65d5da5e1a8b8434869e927f4c4cf7f37a7 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 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;
 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.");
     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("--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)
         subparser.addArgument("--socket")
                 .nargs("?")
                 .type(File.class)
@@ -90,10 +92,12 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
     @Override
     public void handleCommand(
 
     @Override
     public void handleCommand(
-            final Namespace ns, final Manager m, final OutputWriter outputWriter
+            final Namespace ns,
+            final Manager m,
+            final OutputWriter outputWriter
     ) throws CommandException {
         Shutdown.installHandler();
     ) throws CommandException {
         Shutdown.installHandler();
-        logger.info("Starting daemon in single-account mode for " + m.getSelfNumber());
+        logger.info("Starting daemon in single-account mode for {}", m.getSelfNumber());
         final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
         final var receiveMode = ns.<ReceiveMode>get("receive-mode");
         final var receiveConfig = getReceiveConfig(ns);
         final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
         final var receiveMode = ns.<ReceiveMode>get("receive-mode");
         final var receiveConfig = getReceiveConfig(ns);
@@ -115,7 +119,9 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
     @Override
     public void handleCommand(
 
     @Override
     public void handleCommand(
-            final Namespace ns, final MultiAccountManager c, final OutputWriter outputWriter
+            final Namespace ns,
+            final MultiAccountManager c,
+            final OutputWriter outputWriter
     ) throws CommandException {
         Shutdown.installHandler();
         logger.info("Starting daemon in multi-account mode");
     ) throws CommandException {
         Shutdown.installHandler();
         logger.info("Starting daemon in multi-account mode");
@@ -179,18 +185,25 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
         final var isDbusSystem = Boolean.TRUE.equals(ns.getBoolean("dbus-system"));
         if (isDbusSystem) {
 
         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"));
         }
 
         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 'daemon --dbus' to use the dbus interface.");
+            daemonHandler.runDbus(false, DbusConfig.getBusname());
         }
     }
 
         }
     }
 
@@ -214,7 +227,7 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
 
         public abstract void runSocket(ServerSocketChannel serverChannel) throws CommandException;
 
 
         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;
 
 
         public abstract void runHttp(InetSocketAddress address) throws CommandException;
 
@@ -267,8 +280,8 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
         }
 
         @Override
         }
 
         @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
         }
 
         @Override
@@ -292,8 +305,8 @@ public class DaemonCommand implements MultiLocalCommand, LocalCommand {
         }
 
         @Override
         }
 
         @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
         }
 
         @Override