X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/2044a7d7a58ada7ca1e67a80012e3ffdaf86c88c..32818a8608f5bddc46ad5c7dc442f509c939791c:/src/main/java/org/asamk/signal/App.java diff --git a/src/main/java/org/asamk/signal/App.java b/src/main/java/org/asamk/signal/App.java index 4aa510d6..720a5849 100644 --- a/src/main/java/org/asamk/signal/App.java +++ b/src/main/java/org/asamk/signal/App.java @@ -8,8 +8,6 @@ import net.sourceforge.argparse4j.inf.Namespace; import org.asamk.Signal; import org.asamk.signal.commands.Command; import org.asamk.signal.commands.Commands; -import org.asamk.signal.commands.DbusCommand; -import org.asamk.signal.commands.ExtendedDbusCommand; import org.asamk.signal.commands.LocalCommand; import org.asamk.signal.commands.MultiLocalCommand; import org.asamk.signal.commands.ProvisioningCommand; @@ -19,6 +17,7 @@ import org.asamk.signal.commands.exceptions.CommandException; import org.asamk.signal.commands.exceptions.IOErrorException; import org.asamk.signal.commands.exceptions.UnexpectedErrorException; import org.asamk.signal.commands.exceptions.UserErrorException; +import org.asamk.signal.dbus.DbusManagerImpl; import org.asamk.signal.manager.Manager; import org.asamk.signal.manager.NotRegisteredException; import org.asamk.signal.manager.ProvisioningManager; @@ -29,9 +28,9 @@ import org.asamk.signal.manager.storage.identities.TrustNewIdentity; import org.asamk.signal.util.IOUtils; import org.freedesktop.dbus.connections.impl.DBusConnection; import org.freedesktop.dbus.exceptions.DBusException; +import org.freedesktop.dbus.exceptions.DBusExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.whispersystems.signalservice.api.util.PhoneNumberFormatter; import java.io.File; import java.io.IOException; @@ -116,8 +115,8 @@ public class App { var username = ns.getString("username"); - final var useDbus = ns.getBoolean("dbus"); - final var useDbusSystem = ns.getBoolean("dbus-system"); + final var useDbus = Boolean.TRUE.equals(ns.getBoolean("dbus")); + final var useDbusSystem = Boolean.TRUE.equals(ns.getBoolean("dbus-system")); if (useDbus || useDbusSystem) { // If username is null, it will connect to the default object path initDbusClient(command, username, useDbusSystem, outputWriter); @@ -132,7 +131,7 @@ public class App { dataPath = getDefaultDataPath(); } - if (!ServiceConfig.getCapabilities().isGv2()) { + if (!ServiceConfig.isZkgroupAvailable()) { logger.warn("WARNING: Support for new group V2 is disabled," + " because the required native library dependency is missing: libzkgroup"); } @@ -151,20 +150,20 @@ public class App { ? TrustNewIdentity.ON_FIRST_USE : trustNewIdentityCli == TrustNewIdentityCli.ALWAYS ? TrustNewIdentity.ALWAYS : TrustNewIdentity.NEVER; - if (command instanceof ProvisioningCommand) { + if (command instanceof ProvisioningCommand provisioningCommand) { if (username != null) { throw new UserErrorException("You cannot specify a username (phone number) when linking"); } - handleProvisioningCommand((ProvisioningCommand) command, dataPath, serviceEnvironment, outputWriter); + handleProvisioningCommand(provisioningCommand, dataPath, serviceEnvironment, outputWriter); return; } if (username == null) { - var usernames = Manager.getAllLocalUsernames(dataPath); + var usernames = Manager.getAllLocalNumbers(dataPath); - if (command instanceof MultiLocalCommand) { - handleMultiLocalCommand((MultiLocalCommand) command, + if (command instanceof MultiLocalCommand multiLocalCommand) { + handleMultiLocalCommand(multiLocalCommand, dataPath, serviceEnvironment, usernames, @@ -181,12 +180,12 @@ public class App { } username = usernames.get(0); - } else if (!PhoneNumberFormatter.isValidNumber(username, null)) { + } else if (!Manager.isValidNumber(username, null)) { throw new UserErrorException("Invalid username (phone number), make sure you include the country code."); } - if (command instanceof RegistrationCommand) { - handleRegistrationCommand((RegistrationCommand) command, username, dataPath, serviceEnvironment); + if (command instanceof RegistrationCommand registrationCommand) { + handleRegistrationCommand(registrationCommand, username, dataPath, serviceEnvironment); return; } @@ -344,10 +343,14 @@ public class App { private void handleCommand( Command command, Signal ts, DBusConnection dBusConn, OutputWriter outputWriter ) throws CommandException { - if (command instanceof ExtendedDbusCommand) { - ((ExtendedDbusCommand) command).handleCommand(ns, ts, dBusConn, outputWriter); - } else if (command instanceof DbusCommand) { - ((DbusCommand) command).handleCommand(ns, ts, outputWriter); + if (command instanceof LocalCommand localCommand) { + try { + localCommand.handleCommand(ns, new DbusManagerImpl(ts, dBusConn), outputWriter); + } catch (UnsupportedOperationException e) { + throw new UserErrorException("Command is not yet implemented via dbus", e); + } catch (DBusExecutionException e) { + throw new UnexpectedErrorException(e.getMessage(), e); + } } else { throw new UserErrorException("Command is not yet implemented via dbus"); }