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("-u", "--username").help("Specify your phone number, that will be used for verification.");
+ parser.addArgument("-u", "--username").help("Specify your phone number, that will be your identifier.");
var mut = parser.addMutuallyExclusiveGroup();
mut.addArgument("--dbus").help("Make request via user dbus.").action(Arguments.storeTrue());
.type(Arguments.enumStringType(OutputType.class))
.setDefault(OutputType.PLAIN_TEXT);
+ parser.addArgument("--service-environment")
+ .help("Choose the server environment to use, SANDBOX or LIVE.")
+ .type(Arguments.enumStringType(ServiceEnvironmentCli.class))
+ .setDefault(ServiceEnvironmentCli.LIVE);
+
var subparsers = parser.addSubparsers().title("subcommands").dest("command");
final var commands = Commands.getCommands();
throw new UserErrorException("Command not implemented!");
}
- OutputType outputType = ns.get("output");
+ var outputType = ns.<OutputType>get("output");
if (!command.getSupportedOutputTypes().contains(outputType)) {
throw new UserErrorException("Command doesn't support output type " + outputType.toString());
}
var username = ns.getString("username");
- final boolean useDbus = ns.getBoolean("dbus");
- final boolean useDbusSystem = ns.getBoolean("dbus_system");
+ final var useDbus = ns.getBoolean("dbus");
+ final var useDbusSystem = ns.getBoolean("dbus_system");
if (useDbus || useDbusSystem) {
// If username is null, it will connect to the default object path
initDbusClient(command, username, useDbusSystem);
dataPath = getDefaultDataPath();
}
- final var serviceEnvironment = ServiceEnvironment.LIVE;
+ final var serviceEnvironmentCli = ns.<ServiceEnvironmentCli>get("service_environment");
+ final var serviceEnvironment = serviceEnvironmentCli == ServiceEnvironmentCli.LIVE
+ ? ServiceEnvironment.LIVE
+ : ServiceEnvironment.SANDBOX;
if (!ServiceConfig.getCapabilities().isGv2()) {
logger.warn("WARNING: Support for new group V2 is disabled,"
if (username == null) {
var usernames = Manager.getAllLocalUsernames(dataPath);
- if (usernames.size() == 0) {
- throw new UserErrorException("No local users found, you first need to register or link an account");
- }
if (command instanceof MultiLocalCommand) {
handleMultiLocalCommand((MultiLocalCommand) command, dataPath, serviceEnvironment, usernames);
return;
}
- if (usernames.size() > 1) {
+ if (usernames.size() == 0) {
+ throw new UserErrorException("No local users found, you first need to register or link an account");
+ } else if (usernames.size() > 1) {
throw new UserErrorException(
"Multiple users found, you need to specify a username (phone number) with -u");
}
) throws CommandException {
final var managers = new ArrayList<Manager>();
for (String u : usernames) {
- managers.add(loadManager(u, dataPath, serviceEnvironment));
+ try {
+ managers.add(loadManager(u, dataPath, serviceEnvironment));
+ } catch (CommandException e) {
+ logger.warn("Ignoring {}: {}", u, e.getMessage());
+ }
}
command.handleCommand(ns, managers);
} catch (NotRegisteredException e) {
throw new UserErrorException("User " + username + " is not registered.");
} catch (Throwable e) {
+ logger.debug("Loading state file failed", e);
throw new UnexpectedErrorException("Error loading state file for user "
+ username
+ ": "
var legacySettingsPath = new File(configPath, "signal");
if (legacySettingsPath.exists()) {
+ logger.warn("Using legacy data path \"{}\", please move it to \"{}\".", legacySettingsPath, dataPath);
return legacySettingsPath;
}
legacySettingsPath = new File(configPath, "textsecure");
if (legacySettingsPath.exists()) {
+ logger.warn("Using legacy data path \"{}\", please move it to \"{}\".", legacySettingsPath, dataPath);
return legacySettingsPath;
}