Configure dbus name via commandline parameter

This commit is contained in:
groupnet 2019-06-04 14:50:48 +02:00
parent 24714454dd
commit a9e4b8ba98
3 changed files with 36 additions and 8 deletions

View file

@ -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;
}
}

View file

@ -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")

View file

@ -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());