diff --git a/src/main/java/org/asamk/signal/DbusConfig.java b/src/main/java/org/asamk/signal/DbusConfig.java index c0d23175..e136f83b 100644 --- a/src/main/java/org/asamk/signal/DbusConfig.java +++ b/src/main/java/org/asamk/signal/DbusConfig.java @@ -2,6 +2,25 @@ package org.asamk.signal; public class DbusConfig { - public static final String SIGNAL_BUSNAME = "org.asamk.Signal"; - public static final String SIGNAL_OBJECTPATH = "/org/asamk/Signal"; + public DbusConfig() { + } + + public String signalBusName = "org.asamk.Signal"; + public String signalObjectPath = "/org/asamk/Signal"; + + public void setName(String busName) { + DbusConfig.this.signalBusName = busName; + } + + public String getName() { + return DbusConfig.this.signalBusName; + } + + public void setObjectPath(String objectPath) { + DbusConfig.this.signalObjectPath = objectPath; + } + + public String getObjectPath() { + return DbusConfig.this.signalObjectPath; + } } diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index e1343fbf..65290b82 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -20,6 +20,7 @@ import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.impl.Arguments; import net.sourceforge.argparse4j.inf.*; import org.asamk.Signal; +import org.asamk.signal.DbusConfig; import org.asamk.signal.commands.*; import org.asamk.signal.manager.BaseConfig; import org.asamk.signal.manager.Manager; @@ -57,6 +58,9 @@ public class Main { Manager m; Signal ts; DBusConnection dBusConn = null; + DbusConfig dbc = new DbusConfig(); + if (!isEmpty(ns.getString("busname"))) + dbc.setName(ns.getString("busname")); try { if (ns.getBoolean("dbus") || ns.getBoolean("dbus_system")) { try { @@ -69,7 +73,7 @@ public class Main { } dBusConn = DBusConnection.getConnection(busType); ts = dBusConn.getRemoteObject( - DbusConfig.SIGNAL_BUSNAME, DbusConfig.SIGNAL_OBJECTPATH, + dbc.getName(), dbc.getObjectPath(), Signal.class); } catch (UnsatisfiedLinkError e) { System.err.println("Missing native library dependency for dbus service: " + e.getMessage()); @@ -168,6 +172,8 @@ public class Main { .action(Arguments.version()); parser.addArgument("--config") .help("Set the path, where to store the config (Default: $XDG_DATA_HOME/signal-cli , $HOME/.local/share/signal-cli)."); + parser.addArgument("--busname") + .help("Specify the dbus name, that will be used for communication (Default: org.asamk.Signal)."); MutuallyExclusiveGroup mut = parser.addMutuallyExclusiveGroup(); mut.addArgument("-u", "--username") diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 9b6c0d63..ef430505 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -3,6 +3,7 @@ package org.asamk.signal.commands; 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.DbusReceiveMessageHandler; import org.asamk.signal.JsonDbusReceiveMessageHandler; import org.asamk.signal.manager.Manager; @@ -12,9 +13,8 @@ import org.freedesktop.dbus.exceptions.DBusException; import java.io.IOException; import java.util.concurrent.TimeUnit; -import static org.asamk.signal.DbusConfig.SIGNAL_BUSNAME; -import static org.asamk.signal.DbusConfig.SIGNAL_OBJECTPATH; import static org.asamk.signal.util.ErrorUtils.handleAssertionError; +import static org.whispersystems.signalservice.internal.util.Util.isEmpty; public class DaemonCommand implements LocalCommand { @@ -37,6 +37,9 @@ public class DaemonCommand implements LocalCommand { System.err.println("User is not registered."); return 1; } + DbusConfig dbc = new DbusConfig(); + if (!isEmpty(ns.getString("busname"))) + dbc.setName(ns.getString("busname")); DBusConnection conn = null; try { try { @@ -47,8 +50,8 @@ public class DaemonCommand implements LocalCommand { busType = DBusConnection.SESSION; } conn = DBusConnection.getConnection(busType); - conn.exportObject(SIGNAL_OBJECTPATH, m); - conn.requestBusName(SIGNAL_BUSNAME); + conn.exportObject(dbc.getObjectPath(), m); + conn.requestBusName(dbc.getName()); } catch (UnsatisfiedLinkError e) { System.err.println("Missing native library dependency for dbus service: " + e.getMessage()); return 1; @@ -58,7 +61,7 @@ public class DaemonCommand implements LocalCommand { } boolean ignoreAttachments = ns.getBoolean("ignore_attachments"); try { - m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, ns.getBoolean("json") ? new JsonDbusReceiveMessageHandler(m, conn, SIGNAL_OBJECTPATH) : new DbusReceiveMessageHandler(m, conn, SIGNAL_OBJECTPATH)); + m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, ns.getBoolean("json") ? new JsonDbusReceiveMessageHandler(m, conn, dbc.getObjectPath()) : new DbusReceiveMessageHandler(m, conn, dbc.getObjectPath())); return 0; } catch (IOException e) { System.err.println("Error while receiving messages: " + e.getMessage());