Open jsorocil opened 1 year ago
I'm not using FreeBSD, so I can't really support there.
But using dbus-java-jnr-unixsocket should be straight forward, you just need to delete the dbus-java-transport-native-unixsocket-4.2.1.jar
file in the lib
folder and replace it with the jnr jar file of the same version.
An alternative would be to use the JSON-RPC daemon mode with --socket
, --tcp
or --http
.
Something like should work?
rm $DIR/lib/dbus-java-transport-native-unixsocket*.jar
cd dbus-java/
git checkout -b v4.2.1 dbus-java-parent-4.2.1
cd dbus-java-transport-jnr-unixsocket
mvn compile package
cp target/dbus-java-transport-jnr-unixsocket*.jar $DIR/lib/
ls -lh $DIR/lib/dbus*
-rw-r--r-- 1 user user 299K Jan 27 12:36 $DIR/lib/dbus-java-core-4.2.1.jar
-rw-r--r-- 1 user user 12K Jan 28 10:20 $DIR/lib/dbus-java-transport-jnr-unixsocket-4.2.1.jar
export CLASSPATH=$CLASSPATH:$DIR/lib/
But in my case it doesn't find dbus-java-transport-jnr-unixsocket jar file:
export $(dbus-launch) ; $DIR/bin/signal-cli daemon
INFO DaemonCommand - Starting daemon in multi-account mode
java.lang.ExceptionInInitializerError
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.validateTransportAddress(DBusConnectionBuilder.java:129)
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.forSessionBus(DBusConnectionBuilder.java:43)
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.forType(DBusConnectionBuilder.java:89)
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.forType(DBusConnectionBuilder.java:76)
at org.asamk.signal.commands.DaemonCommand.runDbus(DaemonCommand.java:385)
at org.asamk.signal.commands.DaemonCommand.runDbusMultiAccount(DaemonCommand.java:338)
at org.asamk.signal.commands.DaemonCommand.handleCommand(DaemonCommand.java:240)
at org.asamk.signal.App.handleMultiLocalCommand(App.java:317)
at org.asamk.signal.App.init(App.java:198)
at org.asamk.signal.Main.main(Main.java:60)
Caused by: org.freedesktop.dbus.exceptions.TransportRegistrationException: No dbus-java-transport found in classpath, please add a transport module
at org.freedesktop.dbus.connections.transports.TransportBuilder.getTransportProvider(TransportBuilder.java:63)
at org.freedesktop.dbus.connections.transports.TransportBuilder.<clinit>(TransportBuilder.java:35)
... 10 more
Trying that experiment but with dbus-java-transport-native-unixsocket:
cd ../dbus-java-transport-native-unixsocket
mvn compile package
cp target/dbus-java-transport-native-unixsocket-4.2.1.jar $DIR/lib/
export $(dbus-launch) ; $DIR/bin/signal-cli daemon
INFO DaemonCommand - Starting daemon in multi-account mode
INFO TransportBuilder - Using transport dbus-java-transport-native-unixsocket to connect to unix:path=/tmp/dbus-DTVeaPtnFC,guid=96911134315124498b9f3b7f63d4f3e9
Dbus command failed: Failed to connect to bus: Failed to authenticate
It does find dbus-java-transport-native-unixsocket installed into the same place (even it doesn't work which is expected).
ah, you need to adapt the bin/signal-cli
file, the CLASSPATH
variable is set in there.
Or if you're compiling signal-cli yourself, you can just edit the dependency in the build.gradle.kts
file
After changing build.gradle.kts to:
implementation("com.github.hypfvieh", "dbus-java-transport-jnr-unixsocket", "4.2.1")
and rebuilding everything:
export $(dbus-launch) ; $DIR/bin/signal-cli daemon
INFO DaemonCommand - Starting daemon in multi-account mode
INFO TransportBuilder - Using transport dbus-java-transport-jnr-unixsocket to connect to unix:path=/tmp/dbus-KmhY9JsHea,guid=8b526cc280569f121b35e32e63d58493
Dbus command failed: Failed to connect to bus: Failed to authenticate
export $(dbus-launch) ; $DIR/bin/signal-cli --verbose daemon
2023-01-28T21:25:00.712+0100 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_RUNTIME_DIR not set, falling back to temp dir
2023-01-28T21:25:00.800+0100 [main] INFO LibSignal - [libsignal]: rust/bridge/jni/src/logging.rs:156: Initializing libsignal version:0.21.1
2023-01-28T21:25:00.800+0100 [main] DEBUG org.asamk.signal.util.IOUtils - XDG_DATA_HOME not set, falling back to home dir
2023-01-28T21:25:01.047+0100 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
2023-01-28T21:25:01.154+0100 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection org.sqlite.jdbc4.JDBC4Connection@5829e4f4
2023-01-28T21:25:01.156+0100 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
2023-01-28T21:25:02.944+0100 [main] INFO LibSignal - [libsignal]: rust/protocol/src/session_cipher.rs:59: Building PreKeyWhisperMessage for: 5a71a5c7-1043-4eb6-a36f-ab3d32b63ee9.1 with preKeyId: 8761196
2023-01-28T21:25:02.963+0100 [main] INFO LibSignal - [libsignal]: rust/protocol/src/session_cipher.rs:59: Building PreKeyWhisperMessage for: 5a71a5c7-1043-4eb6-a36f-ab3d32b63ee9.3 with preKeyId: 9
2023-01-28T21:25:02.970+0100 [main] INFO LibSignal - [libsignal]: rust/protocol/src/session_cipher.rs:59: Building PreKeyWhisperMessage for: 5a71a5c7-1043-4eb6-a36f-ab3d32b63ee9.4 with preKeyId: 10
2023-01-28T21:25:03.002+0100 [main] INFO LibSignal - [SignalServiceMessageSender]: [sendMessage][1674937502931] Pipe unavailable, falling back... (WebSocketUnavailableException: WebSocket not currently available.)
2023-01-28T21:25:03.552+0100 [main] INFO o.a.signal.commands.DaemonCommand - Starting daemon in multi-account mode
2023-01-28T21:25:03.575+0100 [receive-0] DEBUG o.asamk.signal.manager.ManagerImpl - Starting receiving messages
2023-01-28T21:25:03.580+0100 [receive-0] INFO LibSignal - [WebSocketConnection]: [normal:180088580] connect()
2023-01-28T21:25:03.594+0100 [receive-0] INFO LibSignal - [WebSocketConnection]: [unidentified:313094353] connect()
2023-01-28T21:25:03.597+0100 [main] DEBUG o.f.d.c.transports.TransportBuilder - Found provider 'JnrUnixSocketTransportProvider' named 'dbus-java-transport-jnr-unixsocket' providing bustype 'UNIX'
2023-01-28T21:25:03.603+0100 [receive-0] DEBUG o.a.s.manager.helper.ReceiveHelper - Handling message actions
2023-01-28T21:25:03.604+0100 [receive-0] DEBUG o.a.s.manager.helper.ReceiveHelper - Checking for new message from server
2023-01-28T21:25:03.622+0100 [main] INFO o.f.d.c.transports.TransportBuilder - Using transport dbus-java-transport-jnr-unixsocket to connect to unix:path=/tmp/dbus-B1FlRJS7M7,guid=f0d99b27bbd63e19050955b463d5849b
2023-01-28T21:25:03.879+0100 [main] DEBUG o.f.d.c.impl.DBusConnection - Error creating transport
org.freedesktop.dbus.exceptions.AuthenticationException: Failed to authenticate
at org.freedesktop.dbus.connections.transports.AbstractTransport.authenticate(AbstractTransport.java:160)
at org.freedesktop.dbus.connections.transports.AbstractTransport.connect(AbstractTransport.java:133)
at org.freedesktop.dbus.connections.transports.TransportBuilder.build(TransportBuilder.java:335)
at org.freedesktop.dbus.connections.AbstractConnection.<init>(AbstractConnection.java:150)
at org.freedesktop.dbus.connections.impl.DBusConnection.<init>(DBusConnection.java:231)
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.build(DBusConnectionBuilder.java:195)
at org.asamk.signal.commands.DaemonCommand.runDbus(DaemonCommand.java:385)
at org.asamk.signal.commands.DaemonCommand.runDbusMultiAccount(DaemonCommand.java:338)
at org.asamk.signal.commands.DaemonCommand.handleCommand(DaemonCommand.java:240)
at org.asamk.signal.App.handleMultiLocalCommand(App.java:317)
at org.asamk.signal.App.init(App.java:198)
at org.asamk.signal.Main.main(Main.java:60)
2023-01-28T21:25:03.881+0100 [main] DEBUG o.f.d.c.impl.DBusConnection - Ignoring disconnect, already disconnected
2023-01-28T21:25:03.881+0100 [main] DEBUG o.asamk.signal.manager.ManagerImpl - Receive stop requested, interrupting read from server.
2023-01-28T21:25:03.882+0100 [receive-0] DEBUG o.a.s.manager.helper.ReceiveHelper - Handling message actions
2023-01-28T21:25:03.883+0100 [receive-0] INFO LibSignal - [WebSocketConnection]: [normal:180088580] disconnect()
2023-01-28T21:25:03.884+0100 [receive-0] INFO LibSignal - [WebSocketConnection]: [unidentified:313094353] disconnect()
2023-01-28T21:25:03.885+0100 [receive-0] DEBUG o.asamk.signal.manager.ManagerImpl - Finished receiving messages
2023-01-28T21:25:03.885+0100 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
2023-01-28T21:25:03.888+0100 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
Dbus command failed: Failed to connect to bus: Failed to authenticate
org.freedesktop.dbus.exceptions.DBusException: Failed to connect to bus: Failed to authenticate
at org.freedesktop.dbus.connections.AbstractConnection.<init>(AbstractConnection.java:156)
at org.freedesktop.dbus.connections.impl.DBusConnection.<init>(DBusConnection.java:231)
at org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.build(DBusConnectionBuilder.java:195)
at org.asamk.signal.commands.DaemonCommand.runDbus(DaemonCommand.java:385)
at org.asamk.signal.commands.DaemonCommand.runDbusMultiAccount(DaemonCommand.java:338)
at org.asamk.signal.commands.DaemonCommand.handleCommand(DaemonCommand.java:240)
at org.asamk.signal.App.handleMultiLocalCommand(App.java:317)
at org.asamk.signal.App.init(App.java:198)
at org.asamk.signal.Main.main(Main.java:60)
Caused by: org.freedesktop.dbus.exceptions.AuthenticationException: Failed to authenticate
at org.freedesktop.dbus.connections.transports.AbstractTransport.authenticate(AbstractTransport.java:160)
at org.freedesktop.dbus.connections.transports.AbstractTransport.connect(AbstractTransport.java:133)
at org.freedesktop.dbus.connections.transports.TransportBuilder.build(TransportBuilder.java:335)
at org.freedesktop.dbus.connections.AbstractConnection.<init>(AbstractConnection.java:150)
... 8 more
Don't know if it's any help, but there are other issues under the dbus-java issue
label. (This issue should probably be labeled as well @AsamK)
As you probably know, there is a signal-cli's FreeBSD port maintained by @0mp, but the latest version there is 0.9.0
, with the comment:
It would be great to update this port to the newest version available upstream. Unfortunately, I couldn't get the newer versions to work reliably on FreeBSD.
I am trying to use signal-cli v0.11.6 on FreeBSD
These are the steps which I tried:
prepare
build signal-cli
find libsignal version
build libsignal
run it
Result is:
Verbose run:
Does signal-cli newer than 0.9.0 works on FreeBSD? I am suspecting that issue is somewhere in dbus-java-transport-native-unixsocket but don't know how to debug it. Print "Failed to authenticate" is from: dbus-java-core/src/main/java/org/freedesktop/dbus/connections/transports/AbstractTransport.java
This looks suspicious (but I don't know nor Java nor dbus): https://github.com/hypfvieh/dbus-java/blob/5077aa170fdaecfd984c6aacff89a97653f4717f/dbus-java-core/src/main/java/org/freedesktop/dbus/connections/SASL.java#L591
Is it possible to use signal-cli with dbus-java-jnr-unixsocket (instead of dbus-java-transport-native-unixsocket)?