mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-01 20:10:39 +00:00
Configure dbus name via commandline parameter
This commit is contained in:
parent
24714454dd
commit
a9e4b8ba98
3 changed files with 36 additions and 8 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue