]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/commands/DaemonCommand.java
Add register parameter to force reregistration
[signal-cli] / src / main / java / org / asamk / signal / commands / DaemonCommand.java
index f4d701b1e731d1783bdcf1820fb0b44bcaeadcac..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 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;
@@ -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("--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)
@@ -177,20 +181,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
-        )) {
+        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.");
             logger.warn(
                     "Running daemon command without explicit mode is deprecated. Use --dbus to use the dbus interface.");
-            daemonHandler.runDbus(false);
+            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 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 +276,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 +301,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