opendj-ldap-toolkit/src/main/assembly/bat/base64.bat
New file @@ -0,0 +1,21 @@ @echo off rem The contents of this file are subject to the terms of the Common Development and rem Distribution License (the License). You may not use this file except in compliance with the rem License. rem rem You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the rem specific language governing permission and limitations under the License. rem rem When distributing Covered Software, include this CDDL Header Notice in each file and include rem the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL rem Header, with the fields enclosed by brackets [] replaced by your own identifying rem information: "Portions Copyright [year] [name of copyright owner]". rem rem Copyright 2016 ForgeRock AS. setlocal set OPENDJ_INVOKE_CLASS="com.forgerock.opendj.ldap.tools.Base64" set SCRIPT_NAME=base64 call "%~dp0\..\lib\_client-script.bat" %* opendj-ldap-toolkit/src/main/assembly/bin/base64
New file @@ -0,0 +1,25 @@ #!/bin/sh # # The contents of this file are subject to the terms of the Common Development and # Distribution License (the License). You may not use this file except in compliance with the # License. # # You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the # specific language governing permission and limitations under the License. # # When distributing Covered Software, include this CDDL Header Notice in each file and include # the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL # Header, with the fields enclosed by brackets [] replaced by your own identifying # information: "Portions Copyright [year] [name of copyright owner]". # # Copyright 2016 ForgeRock AS. OPENDJ_INVOKE_CLASS="com.forgerock.opendj.ldap.tools.Base64" export OPENDJ_INVOKE_CLASS SCRIPT_NAME="base64" export SCRIPT_NAME SCRIPT_DIR=`dirname "${0}"` "${SCRIPT_DIR}/../lib/_client-script.sh" "${@}" opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
New file @@ -0,0 +1,326 @@ /* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2014-2016 ForgeRock AS. */ package com.forgerock.opendj.ldap.tools; import static com.forgerock.opendj.cli.CliMessages.ERR_FILEARG_NO_SUCH_FILE; import static com.forgerock.opendj.cli.CommonArguments.showUsageArgument; import static com.forgerock.opendj.cli.ToolVersionHandler.newSdkVersionHandler; import static com.forgerock.opendj.cli.Utils.filterExitCode; import static com.forgerock.opendj.cli.Utils.throwIfArgumentsConflict; import static com.forgerock.opendj.ldap.CoreMessages.ERR_BASE64_DECODE_INVALID_LENGTH; import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolException; import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolExceptionAlreadyPrinted; import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolParamException; import static com.forgerock.opendj.ldap.tools.ToolsMessages.*; import static com.forgerock.opendj.ldap.tools.Utils.parseArguments; import static com.forgerock.opendj.util.StaticUtils.getExceptionMessage; import static org.forgerock.util.Utils.closeSilently; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.BooleanArgument; import com.forgerock.opendj.cli.ConsoleApplication; import com.forgerock.opendj.cli.StringArgument; import com.forgerock.opendj.cli.SubCommand; import com.forgerock.opendj.cli.SubCommandArgumentParser; import org.forgerock.opendj.ldap.ResultCode; /** * Tool that can be used for performing base64 encoding and decoding. * <p> * Base64 is a mechanism for encoding binary data in ASCII form by converting * sets of three bytes with eight significant bits each to sets of four bytes * with six significant bits each. */ public final class Base64 extends ConsoleApplication { /** * The main method for base64 tool. * * @param args * The command-line arguments provided to this program. */ public static void main(final String[] args) { System.exit(filterExitCode(run(System.out, System.err, args))); } /** * Run {@link Base64} tool with the provided arguments. * Output and errors will be write on the provided streams. * This method can be use to run the tool programmatically. * * @param out * {@link PrintStream} which will be use by the tool to write results and information messages. * @param err * {@link PrintStream} which will be use by the tool to write errors. * @param args * Arguments set to pass to the tool. * @return * An integer which represents the result code of the tool. */ public static int run(final PrintStream out, final PrintStream err, final String... args) { final Base64 base64 = new Base64(out, err); try { return base64.run(args); } catch (final LDAPToolException e) { e.printErrorMessage(base64); return e.getResultCode(); } } private Base64(final PrintStream out, final PrintStream err) { super(out, err); } @Override public boolean isInteractive() { return false; } private int run(final String[] args) throws LDAPToolException { final SubCommandArgumentParser argParser = new SubCommandArgumentParser(Base64.class.getName(), INFO_BASE64_TOOL_DESCRIPTION.get(), false); argParser.setShortToolDescription(REF_SHORT_DESC_BASE64.get()); argParser.setVersionHandler(newSdkVersionHandler()); final BooleanArgument showUsage; final SubCommand decodeSubCommand; final StringArgument encodedData; final StringArgument encodedFile; final StringArgument toRawFile; final SubCommand encodeSubCommand; final StringArgument rawData; final StringArgument rawFile; final StringArgument toEncodedFile; try { decodeSubCommand = new SubCommand(argParser, "decode", INFO_BASE64_DECODE_DESCRIPTION.get()); encodeSubCommand = new SubCommand(argParser, "encode", INFO_BASE64_ENCODE_DESCRIPTION.get()); encodedData = StringArgument.builder("encodedData") .shortIdentifier('d') .description(INFO_BASE64_ENCODED_DATA_DESCRIPTION.get()) .valuePlaceholder(INFO_DATA_PLACEHOLDER.get()) .buildAndAddToSubCommand(decodeSubCommand); encodedFile = StringArgument.builder("encodedDataFile") .shortIdentifier('f') .description(INFO_BASE64_ENCODED_FILE_DESCRIPTION.get()) .valuePlaceholder(INFO_PATH_PLACEHOLDER.get()) .buildAndAddToSubCommand(decodeSubCommand); toRawFile = StringArgument.builder("toRawFile") .shortIdentifier('o') .description(INFO_BASE64_TO_RAW_FILE_DESCRIPTION.get()) .valuePlaceholder(INFO_PATH_PLACEHOLDER.get()) .buildAndAddToSubCommand(decodeSubCommand); rawData = StringArgument.builder("rawData") .shortIdentifier('d') .description(INFO_BASE64_RAW_DATA_DESCRIPTION.get()) .valuePlaceholder(INFO_DATA_PLACEHOLDER.get()) .buildAndAddToSubCommand(encodeSubCommand); rawFile = StringArgument.builder("rawDataFile") .shortIdentifier('f') .description(INFO_BASE64_RAW_FILE_DESCRIPTION.get()) .valuePlaceholder(INFO_PATH_PLACEHOLDER.get()) .buildAndAddToSubCommand(encodeSubCommand); toEncodedFile = StringArgument.builder("toEncodedFile") .shortIdentifier('o') .description(INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION.get()) .valuePlaceholder(INFO_PATH_PLACEHOLDER.get()) .buildAndAddToSubCommand(encodeSubCommand); final List<SubCommand> subCommandList = new ArrayList<>(2); subCommandList.add(decodeSubCommand); subCommandList.add(encodeSubCommand); showUsage = showUsageArgument(); argParser.addGlobalArgument(showUsage); argParser.setUsageGroupArgument(showUsage, subCommandList); argParser.setUsageArgument(showUsage, getOutputStream()); } catch (final ArgumentException ae) { throw newToolParamException(ae, ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage())); } parseArguments(argParser, getErrStream(), args); if (argParser.usageOrVersionDisplayed()) { return ResultCode.SUCCESS.intValue(); } try { throwIfArgumentsConflict(encodedData, encodedFile); throwIfArgumentsConflict(rawData, rawFile); } catch (final ArgumentException e) { argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(e.getMessage())); throw newToolParamException(e, e.getMessageObject()); } final SubCommand subCommand = argParser.getSubCommand(); if (subCommand == null) { argParser.displayMessageAndUsageReference(getErrStream(), ERR_BASE64_NO_SUBCOMMAND_SPECIFIED.get()); throw newToolExceptionAlreadyPrinted(null, ResultCode.CLIENT_SIDE_PARAM_ERROR); } if (subCommand.getName().equals(encodeSubCommand.getName())) { return encode(rawData, rawFile, toEncodedFile); } else if (subCommand.getName().equals(decodeSubCommand.getName())) { return decode(encodedData, encodedFile, toRawFile); } else { argParser.displayMessageAndUsageReference( getErrStream(), ERR_BASE64_UNKNOWN_SUBCOMMAND.get(subCommand.getName())); throw newToolExceptionAlreadyPrinted(null, ResultCode.CLIENT_SIDE_PARAM_ERROR); } } private int encode(final StringArgument rawDataArg, final StringArgument rawDataFilePathArg, final StringArgument toEncodeFilePathArg) throws LDAPToolException { byte[] dataToEncode; if (rawDataArg.isPresent()) { try { dataToEncode = rawDataArg.getValue().getBytes("UTF-8"); } catch (final UnsupportedEncodingException e) { throw newToolException(e, ResultCode.OPERATIONS_ERROR, ERR_BASE64_ERROR_DECODING_RAW_DATA.get(e.getMessage())); } } else { final boolean readFromFile = rawDataFilePathArg.isPresent(); InputStream inputStream = null; final String rawDataFilePath = rawDataFilePathArg.getValue(); try { inputStream = readFromFile ? new FileInputStream(rawDataFilePath) : getInputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) >= 0) { baos.write(buffer, 0, bytesRead); } dataToEncode = baos.toByteArray(); } catch (final FileNotFoundException e) { throw newToolParamException( e, ERR_FILEARG_NO_SUCH_FILE.get(rawDataFilePath, rawDataFilePathArg.getLongIdentifier())); } catch (final Exception e) { throw newToolException(e, ResultCode.OPERATIONS_ERROR, ERR_BASE64_CANNOT_READ_RAW_DATA.get(getExceptionMessage(e))); } finally { if (readFromFile) { closeSilently(inputStream); } } } final String base64Data = org.forgerock.util.encode.Base64.encode(dataToEncode); if (toEncodeFilePathArg.isPresent()) { try (final BufferedWriter writer = new BufferedWriter(new FileWriter(toEncodeFilePathArg.getValue()))) { writer.write(base64Data); writer.newLine(); } catch (final Exception e) { throw newToolException(e, ResultCode.OPERATIONS_ERROR, ERR_BASE64_CANNOT_WRITE_ENCODED_DATA.get(getExceptionMessage(e))); } } else { getOutputStream().println(base64Data); } return ResultCode.SUCCESS.intValue(); } private int decode(final StringArgument encodedDataArg, final StringArgument encodedDataFilePathArg, final StringArgument toRawFilePathArg) throws LDAPToolException { String dataToDecode = null; if (encodedDataArg.isPresent()) { dataToDecode = encodedDataArg.getValue(); } else { final boolean readFromFile = encodedDataFilePathArg.isPresent(); BufferedReader reader = null; final String encodedDataFilePath = encodedDataFilePathArg.getValue(); try { reader = new BufferedReader(readFromFile ? new FileReader(encodedDataFilePath) : new InputStreamReader(System.in)); final StringBuilder buffer = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { final StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { buffer.append(tokenizer.nextToken()); } } dataToDecode = buffer.toString(); } catch (final FileNotFoundException e) { throw newToolParamException( e, ERR_FILEARG_NO_SUCH_FILE.get(encodedDataFilePath, encodedDataFilePathArg.getLongIdentifier())); } catch (final Exception e) { throw newToolException(e, ResultCode.OPERATIONS_ERROR, ERR_BASE64_CANNOT_READ_ENCODED_DATA.get(getExceptionMessage(e))); } finally { if (readFromFile) { closeSilently(reader); } } } if (dataToDecode.length() % 4 != 0) { throw newToolParamException(ERR_BASE64_DECODE_INVALID_LENGTH.get(dataToDecode)); } final byte[] decodedData = org.forgerock.util.encode.Base64.decode(dataToDecode); if (decodedData == null) { throw newToolParamException(ERR_BASE64_ERROR_DECODING_RAW_DATA.get(dataToDecode)); } try { if (toRawFilePathArg.isPresent()) { try (final FileOutputStream outputStream = new FileOutputStream(toRawFilePathArg.getValue())) { outputStream.write(decodedData); } } else { final PrintStream outputPrintStream = getOutputStream(); outputPrintStream.write(decodedData); outputPrintStream.println(); outputPrintStream.flush(); } } catch (final Exception e) { throw newToolException(e, ResultCode.OPERATIONS_ERROR, ERR_BASE64_CANNOT_WRITE_RAW_DATA.get(getExceptionMessage(e))); } return ResultCode.SUCCESS.intValue(); } } opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
@@ -365,6 +365,30 @@ ERR_ADDRATE_SIZE_THRESHOLD_LOWER_THAN_ITERATIONS=The size threshold must be lower than \ the maximum number of add operations INFO_ADDRATE_DESCRIPTION_NOPURGE=Disable the purge phase when the tool stops. # # Base64 Tool # INFO_BASE64_TOOL_DESCRIPTION=This utility can be used to encode and decode information using base64 INFO_BASE64_DECODE_DESCRIPTION=Decode base64-encoded information into \ raw data. When no options are specified, this subcommand reads from standard input and writes to standard output INFO_BASE64_ENCODE_DESCRIPTION=Encode raw data using base64. \ When no options are specified, this subcommand reads from standard input and writes to standard output INFO_BASE64_ENCODED_DATA_DESCRIPTION=The base64-encoded data to be decoded INFO_BASE64_ENCODED_FILE_DESCRIPTION=The path to a file containing the base64-encoded data to be decoded INFO_BASE64_RAW_DATA_DESCRIPTION=The raw data to be base64 encoded INFO_BASE64_RAW_FILE_DESCRIPTION=The path to a file containing the raw data to be base64 encoded INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=The path to a file to which the base64-encoded data should be written INFO_BASE64_TO_RAW_FILE_DESCRIPTION=The path to a file to which the raw base64-decoded data should be written ERR_BASE64_CANNOT_READ_RAW_DATA=An error occurred while attempting to read the raw data to encode: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=An error occurred while attempting to write the encoded data: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=An error occurred while attempting to read the base64-encoded data: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=An error occurred while attempting to write the decoded data: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=Unknown subcommand %s INFO_DATA_PLACEHOLDER={data} REF_SHORT_DESC_BASE64=encode and decode base64 strings ERR_BASE64_NO_SUBCOMMAND_SPECIFIED=A subcommand must be specified with this tool.\n\ Please use either 'base64 encode' or 'base64 decode'. ERR_BASE64_ERROR_DECODING_RAW_DATA=Unable to decode provided data: %s # Strings for generated reference documentation. REF_SHORT_DESC_ADDRATE=measure add and delete throughput and response time opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties
@@ -58,3 +58,12 @@ INFO_LDAPSEARCH_MATCHING_ENTRY_COUNT=# N\u00famero total de les entrades que coincideixen: %d ERR_TOOL_RESULT_CODE=Codi de resultat: %d (%s) ERR_TOOL_MATCHED_DN=DN coincident: %s INFO_BASE64_TOOL_DESCRIPTION=Aquesta utilitat pot ser utilitzada per codificar i descodificar informaci\u00f3 mitjan\u00e7ant base64 INFO_BASE64_DECODE_DESCRIPTION=Descodificar informaci\u00f3 codificada en base64 a dades en cru INFO_BASE64_ENCODE_DESCRIPTION=Codificar dades en cru utilitzant base64 INFO_BASE64_ENCODED_DATA_DESCRIPTION=Les dades codificades en base64 a ser descodificades INFO_BASE64_ENCODED_FILE_DESCRIPTION=La ruta al fitxer que cont\u00e9 les dades codificades en base64 a ser descodificades INFO_BASE64_RAW_DATA_DESCRIPTION=Les dades en cru a ser codificades en base64 INFO_BASE64_RAW_FILE_DESCRIPTION=La ruta al fitxer que cont\u00e9 les dades en cru a ser codificades en base64 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=La ruta al fitxer on la qual les dades en base64 hauran de ser escrites INFO_BASE64_TO_RAW_FILE_DESCRIPTION=La ruta al fitxer on la qual les dades en cru descodificades de la base64 hauran de ser escrites opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties
@@ -109,3 +109,17 @@ ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=Die in der Steuerung geteffectiverights enthaltene Authorisierungs-ID "%s" ist ung\u00fcltig, da sie nicht mit "dn:" beginnt, um einen Benutzer-DN anzuzeigen ERR_LDAPCOMPARE_ERROR_READING_FILE=Fehler beim Lesen von Datei '%s'. Stellen Sie sicher, dass die Datei vorhanden ist und Sie die Lesezugriffsrechte hierf\u00fcr besitzen Details: %s ERR_LDAPCOMPARE_FILENAME_AND_DNS=Beide Eintrags-DNs und ein Dateiname wurden f\u00fcr den Vergleichsvorgang angegeben. Diese Argumente sind nicht kompatibel INFO_BASE64_TOOL_DESCRIPTION=Dieses Dienstprogramm dient zum Verschl\u00fcsseln und Entschl\u00fcsseln von Informationen mit Base64 INFO_BASE64_DECODE_DESCRIPTION=Base64-enkodierte Informationen als Rohdaten entschl\u00fcsseln INFO_BASE64_ENCODE_DESCRIPTION=Rohdaten mit Base64 verschl\u00fcsseln INFO_BASE64_ENCODED_DATA_DESCRIPTION=Die Base64-enkodierten Daten, die entschl\u00fcsselt werden sollen INFO_BASE64_ENCODED_FILE_DESCRIPTION=Der Pfad zu der Datei, die die Base64-enkodierten Daten enth\u00e4lt, die entschl\u00fcsselt werden sollen INFO_BASE64_RAW_DATA_DESCRIPTION=Die Rohdaten, die mit Base64 verschl\u00fcsselt werden sollen INFO_BASE64_RAW_FILE_DESCRIPTION=Der Pfad zu der Datei, die die Rohdaten enth\u00e4lt, die mit Base64 verschl\u00fcsselt werden sollen INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Der Pfad zu der Datei, in die die Base64-enkodierten Daten geschrieben werden sollen INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Der Pfad zu der Datei, in die die Base64-dekodierten Rohdaten geschreiben werden sollen ERR_BASE64_CANNOT_READ_RAW_DATA=Fehler beim Versuch, die Rohdaten zum Entschl\u00fcsseln zu lesen: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Fehler beim Versuch, die verschl\u00fcsselten Daten zu schreiben: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=Fehler beim Versuch, mit Base64 verschl\u00fcsselten Daten zu lesen: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=Fehler beim Versuch, die entschl\u00fcsselten Daten zu schreiben: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=Unbekannter Unterbefehl %s opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties
@@ -111,3 +111,17 @@ ERR_LDAPCOMPARE_FILENAME_AND_DNS=Se han proporcionado ambos ND de entrada y un nombre de archivo para la operaci\u00f3n de comparaci\u00f3n Estos argumentos no son compatibles INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT=Utilice los resultados de comparaci\u00f3n de LDAP como un c\u00f3digo de salida para se\\u00F1alar diferencias entre los dos archivos LDIF INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT=Utilice los resultados de comparaci\u00f3n de LDAP como un c\u00f3digo de salida para las comparaci\u00f3nes LDAP INFO_BASE64_TOOL_DESCRIPTION=Esta utilidad se puede utilizar para codificar y descodificar informaci\u00f3n mediante base64 INFO_BASE64_DECODE_DESCRIPTION=Descodificar informaci\u00f3n codificada en base64 en datos no procesados INFO_BASE64_ENCODE_DESCRIPTION=Codificar datos no procesados mediante base64 INFO_BASE64_ENCODED_DATA_DESCRIPTION=Datos codificados en base64 que se van a descodificar INFO_BASE64_ENCODED_FILE_DESCRIPTION=La ruta del archivo que contiene los datos codificados en base64 que se van a descodificar INFO_BASE64_RAW_DATA_DESCRIPTION=Los datos no procesados que se van a codificar en base64 INFO_BASE64_RAW_FILE_DESCRIPTION=La ruta de un archivo que contiene los datos no procesados que se van a codificar en base64 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=La ruta de un archivo en el que se deben escribir los datos codificados en base64 INFO_BASE64_TO_RAW_FILE_DESCRIPTION=La ruta de un archivo en el que se deben escribir los datos descodificados en base64 no procesados ERR_BASE64_CANNOT_READ_RAW_DATA=Se ha producido un error al tratar de leer los datos no procesados que codificar: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Se ha producido un error al tratar de escribir los datos codificados: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=Se ha producido un error al tratar de leer los datos codificados en base64: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=Se ha producido un error al tratar de escribir los datos descodificados: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=Subcomando desconocido %s opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties
@@ -111,3 +111,18 @@ ERR_LDAPCOMPARE_FILENAME_AND_DNS=Vous avez fourni \u00e0 la fois des DN d'entr\u00e9e et un nom de fichier pour l'op\u00e9ration de comparaison. Ces arguments ne sont pas compatibles INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT=Utiliser le r\u00e9sultat de comparaison LDAP en tant que code de sortie pour signaler les diff\u00e9rences entre deux fichiers LDIF INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT=Utiliser le r\u00e9sultat de comparaison LDAP en tant que code de sortie pour les comparaisons LDAP INFO_BASE64_TOOL_DESCRIPTION=Cet utilitaire permet de coder et d\u00e9coder des informations en utilisant la base64 INFO_BASE64_DECODE_DESCRIPTION=D\u00e9coder des informations cod\u00e9es en base64 en donn\u00e9es brutes INFO_BASE64_ENCODE_DESCRIPTION=Coder des donn\u00e9es brutes au moyen de la base64 INFO_BASE64_ENCODED_DATA_DESCRIPTION=Les donn\u00e9es cod\u00e9es en base64 \u00e0 d\u00e9coder INFO_BASE64_ENCODED_FILE_DESCRIPTION=Le chemin vers le fichier contenant les donn\u00e9es cod\u00e9es en base64 \u00e0 d\u00e9coder INFO_BASE64_RAW_DATA_DESCRIPTION=Les donn\u00e9es brutes \u00e0 coder en base64 INFO_BASE64_RAW_FILE_DESCRIPTION=Le chemin vers le fichier contenant les donn\u00e9es brutes \u00e0 coder en base64 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Le chemin vers un fichier dans lequel les donn\u00e9es cod\u00e9es en base64 doivent \u00eatre \u00e9crites INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Le chemin vers le fichier dans lequel les donn\u00e9es brutes d\u00e9cod\u00e9es de la base64 doivent \u00eatre \u00e9crites ERR_BASE64_CANNOT_READ_RAW_DATA=Une erreur s'est produite lors de la tentative de lecture des donn\u00e9es brutes \u00e0 coder\u00a0: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Une erreur s'est produite lors de la tentative d'\u00e9criture des donn\u00e9es cod\u00e9es\u00a0: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=Une erreur s'est produite lors de la tentative de lecture des donn\u00e9es cod\u00e9es base64\u00a0: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=Une erreur s'est produite lors de la tentative d'\u00e9criture des donn\u00e9es d\u00e9cod\u00e9es\u00a0: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=Sous-commande inconnue %s INFO_DATA_PLACEHOLDER={donn\u00e9es} opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties
@@ -109,3 +109,17 @@ ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u5236\u5fa1\u306b\u542b\u307e\u308c\u308b\u8a8d\u53ef ID "%s" \u304c\u7121\u52b9\u3067\u3059\u3002\u5148\u982d\u306b\u30e6\u30fc\u30b6\u30fc DN \u3092\u793a\u3059 "dn:" \u304c\u3042\u308a\u307e\u305b\u3093 ERR_LDAPCOMPARE_ERROR_READING_FILE=\u30d5\u30a1\u30a4\u30eb '%s' \u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3001\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u6a29\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8a73\u7d30: %s ERR_LDAPCOMPARE_FILENAME_AND_DNS=\u30a8\u30f3\u30c8\u30ea DN \u3068\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4e21\u65b9\u304c\u6bd4\u8f03\u64cd\u4f5c\u306b\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u5f15\u6570\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093 INFO_BASE64_TOOL_DESCRIPTION=\u3053\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u60c5\u5831\u3092 Base64 \u3067\u7b26\u53f7\u5316\u304a\u3088\u3073\u5fa9\u53f7\u5316\u3067\u304d\u307e\u3059 INFO_BASE64_DECODE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u60c5\u5831\u3092 raw \u30c7\u30fc\u30bf\u306b\u5fa9\u53f7\u5316\u3057\u307e\u3059 INFO_BASE64_ENCODE_DESCRIPTION=Base64 \u3092\u4f7f\u3063\u3066 raw \u30c7\u30fc\u30bf\u3092\u7b26\u53f7\u5316\u3057\u307e\u3059 INFO_BASE64_ENCODED_DATA_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u5316\u3057\u307e\u3059 INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u5fa9\u53f7\u5316\u5bfe\u8c61\u306e Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 INFO_BASE64_RAW_DATA_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf INFO_BASE64_RAW_FILE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u5148\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Base64 \u3067\u5fa9\u53f7\u5316\u3055\u308c\u305f raw \u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u5148\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 ERR_BASE64_CANNOT_READ_RAW_DATA=\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5fa9\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=\u4e0d\u660e\u306a\u30b5\u30d6\u30b3\u30de\u30f3\u30c9 %s opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties
@@ -106,3 +106,17 @@ INFO_LDAPSEARCH_VLV_CONTENT_COUNT=# VLV \ucee8\ud150\ud2b8 \uc218: %d WARN_LDAPSEARCH_VLV_ERROR=# \uac00\uc0c1 \ubaa9\ub85d \ubcf4\uae30 \ucc98\ub9ac \uc2e4\ud328: %s ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=\uc0ac\uc6a9\uc790 DN\uc744 \ub098\ud0c0\ub0b4\ub294 "dn:"\uc73c\ub85c \uc2dc\uc791\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 geteffectiverights \uc81c\uc5b4\uc5d0 \ud3ec\ud568\ub41c \uc778\uc99d \uc544\uc774\ub514 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. INFO_BASE64_TOOL_DESCRIPTION=\uc774 \uc720\ud2f8\ub9ac\ud2f0\ub97c \uc0ac\uc6a9\ud558\uc5ec base64\ub85c \uc815\ubcf4\ub97c \uc778\ucf54\ub529 \ubc0f \ud574\ub3c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. INFO_BASE64_DECODE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ub41c \uc815\ubcf4\ub97c \uc6d0\uc2dc \ub370\uc774\ud130\ub85c \ud574\ub3c5\ud569\ub2c8\ub2e4. INFO_BASE64_ENCODE_DESCRIPTION=base64\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \uc778\ucf54\ub529\ud569\ub2c8\ub2e4. INFO_BASE64_ENCODED_DATA_DESCRIPTION=\ud574\ub3c5\ud560 base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130 INFO_BASE64_ENCODED_FILE_DESCRIPTION=\ud574\ub3c5\ud560 base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \ud3ec\ud568\ud558\ub294 \ud30c\uc77c \uacbd\ub85c INFO_BASE64_RAW_DATA_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130 INFO_BASE64_RAW_FILE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \ud3ec\ud568\ud558\ub294 \ud30c\uc77c \uacbd\ub85c INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uae30\ub85d\ud560 \ud30c\uc77c \uacbd\ub85c INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\uc6d0\uc2dc base64\ub85c \ud574\ub3c5\ud560 \ub370\uc774\ud130\ub97c \uae30\ub85d\ud560 \ud30c\uc77c \uacbd\ub85c ERR_BASE64_CANNOT_READ_RAW_DATA=\uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uc4f0\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=\ud574\ub3c5\ub41c \ub370\uc774\ud130\ub97c \uc4f0\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=\uc54c \uc218 \uc5c6\ub294 \ud558\uc704 \uba85\ub839 %s\uc785\ub2c8\ub2e4. opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties
@@ -59,3 +59,12 @@ ERR_CANNOT_INITIALIZE_ARGS=Nieoczekiwany b\u0142\u0105d wyst\u0105pi\u0142 podczas pr\u00f3by inicjalizacji argument\u00f3w wiersza polece\u0144: %s INFO_LDAPSEARCH_MATCHING_ENTRY_COUNT=# Ca\u0142kowita ilo\u015b\u0107 pasuj\u0105cych wpis\u00f3w: %d INFO_LDAPPWMOD_TOOL_DESCRIPTION=To narz\u0119dzie mo\u017ce by\u0107 u\u017cyte do przeprowadzenia operacji modyfikacji has\u0142a LDAP na Directory Server INFO_BASE64_DECODE_DESCRIPTION=Zdekoduj informacj\u0119 zakodowan\u0105 base64 do danych INFO_BASE64_TOOL_DESCRIPTION=To narz\u0119dzie mo\u017ce by\u0107 u\u017cyte do kodowania i dekodowania informacji u\u017cywaj\u0105c base64 INFO_BASE64_RAW_FILE_DESCRIPTION=\u015acie\u017cka do pliku zawieraj\u0105cego dane, kt\u00f3re maj\u0105 by\u0107 zakodowane base64 INFO_BASE64_RAW_DATA_DESCRIPTION=Dane kt\u00f3re maj\u0105 by\u0107 zakodowane base64 INFO_BASE64_ENCODE_DESCRIPTION=Zakoduj dane u\u017cywaj\u0105c base64 INFO_BASE64_ENCODED_DATA_DESCRIPTION=Dane zakodowane base64 do odkodowania INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u015acie\u017cka do pliku do kt\u00f3rego zdekodowane dane maj\u0105 by\u0107 zapisane INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u015acie\u017cka do pliku do kt\u00f3rego dane zakodowane base64 maj\u0105 by\u0107 zapisane INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u015acie\u017cka do pliku zawieraj\u0105cego dane zakodowane base64, kt\u00f3re maj\u0105 by\u0107 zdekodowane opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties
@@ -109,3 +109,17 @@ ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u63a7\u5236\u4e2d\u5305\u542b\u7684\u6388\u6743 ID "%s" \u65e0\u6548\uff0c\u56e0\u4e3a\u5b83\u4e0d\u662f\u4ee5 "dn:" \u5f00\u5934\uff08\u8868\u793a\u7528\u6237 DN\uff09 ERR_LDAPCOMPARE_ERROR_READING_FILE=\u8bfb\u53d6\u6587\u4ef6 '%s' \u65f6\u51fa\u73b0\u9519\u8bef\u3002\u68c0\u67e5\u8be5\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u4ee5\u53ca\u60a8\u662f\u5426\u6709\u6743\u8bfb\u53d6\u8be5\u6587\u4ef6\u3002\u8be6\u7ec6\u4fe1\u606f: %s ERR_LDAPCOMPARE_FILENAME_AND_DNS=\u5df2\u63d0\u4f9b\u7528\u4e8e\u6bd4\u8f83\u64cd\u4f5c\u7684\u6761\u76ee DN \u548c\u6587\u4ef6\u540d\u3002\u8fd9\u4e9b\u53c2\u6570\u4e0d\u517c\u5bb9 INFO_BASE64_TOOL_DESCRIPTION=\u6b64\u5b9e\u7528\u7a0b\u5e8f\u53ef\u7528\u4e8e\u4f7f\u7528 base64 \u5bf9\u4fe1\u606f\u8fdb\u884c\u7f16\u7801\u548c\u89e3\u7801 INFO_BASE64_DECODE_DESCRIPTION=\u5c06 base64 \u7f16\u7801\u4fe1\u606f\u89e3\u7801\u4e3a\u539f\u59cb\u6570\u636e INFO_BASE64_ENCODE_DESCRIPTION=\u4f7f\u7528 base64 \u5bf9\u539f\u59cb\u6570\u636e\u8fdb\u884c\u7f16\u7801 INFO_BASE64_ENCODED_DATA_DESCRIPTION=\u8981\u89e3\u7801\u7684 base64 \u7f16\u7801\u6570\u636e INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u5305\u542b\u8981\u89e3\u7801\u7684 base64 \u7f16\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84 INFO_BASE64_RAW_DATA_DESCRIPTION=\u8981\u8fdb\u884c base64 \u7f16\u7801\u7684\u539f\u59cb\u6570\u636e INFO_BASE64_RAW_FILE_DESCRIPTION=\u5305\u542b\u8981\u8fdb\u884c base64 \u7f16\u7801\u7684\u539f\u59cb\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u5e94\u5728\u5176\u4e2d\u5199\u5165 base64 \u7f16\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84 INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u5e94\u5728\u5176\u4e2d\u5199\u5165\u539f\u59cb base64 \u89e3\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84 ERR_BASE64_CANNOT_READ_RAW_DATA=\u5728\u5c1d\u8bd5\u8bfb\u53d6\u8981\u89e3\u7801\u7684\u539f\u59cb\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u5728\u5c1d\u8bd5\u5199\u5165\u7f16\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=\u5728\u5c1d\u8bd5\u8bfb\u53d6 base64 \u7f16\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5728\u5c1d\u8bd5\u5199\u5165\u89e3\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=\u672a\u77e5\u5b50\u547d\u4ee4 %s opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties
@@ -106,3 +106,17 @@ INFO_LDAPSEARCH_VLV_CONTENT_COUNT=# VLV \u5167\u5bb9\u8a08\u6578: %d WARN_LDAPSEARCH_VLV_ERROR=# \u865b\u64ec\u6e05\u55ae\u6aa2\u8996\u8655\u7406\u5931\u6557: %s ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u63a7\u5236\u5167\u542b\u7684\u6388\u6b0a ID\u300c%s\u300d\u7121\u6548\uff0c\u56e0\u70ba\u5b83\u4e26\u975e\u4ee5\u300cdn:\u300d\u958b\u982d\u4ee5\u8868\u793a\u4f7f\u7528\u8005 DN INFO_BASE64_TOOL_DESCRIPTION=\u6b64\u516c\u7528\u7a0b\u5f0f\u53ef\u7528\u65bc\u4f7f\u7528 base64 \u5c07\u8cc7\u8a0a\u7de8\u78bc\u53ca\u89e3\u78bc INFO_BASE64_DECODE_DESCRIPTION=\u5c07 base64 \u7de8\u78bc\u7684\u8cc7\u8a0a\u89e3\u78bc\u70ba\u539f\u59cb\u8cc7\u6599 INFO_BASE64_ENCODE_DESCRIPTION=\u4f7f\u7528 base64 \u7de8\u78bc\u539f\u59cb\u8cc7\u6599 INFO_BASE64_ENCODED_DATA_DESCRIPTION=\u8981\u89e3\u78bc\u7684 base64 \u7de8\u78bc\u8cc7\u6599 INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u6a94\u6848\u7684\u8def\u5f91\uff0c\u8a72\u6a94\u6848\u5305\u542b\u8981\u89e3\u78bc\u7684 base64 \u7de8\u78bc\u8cc7\u6599 INFO_BASE64_RAW_DATA_DESCRIPTION=\u8981\u4ee5 base64 \u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599 INFO_BASE64_RAW_FILE_DESCRIPTION=\u6a94\u6848\u7684\u8def\u5f91\uff0c\u8a72\u6a94\u6848\u5305\u542b\u8981\u4ee5 base64 \u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599 INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u61c9\u5beb\u5165 base64 \u7de8\u78bc\u8cc7\u6599\u4e4b\u6a94\u6848\u7684\u8def\u5f91 INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u61c9\u5beb\u5165\u539f\u59cb base64 \u89e3\u78bc\u8cc7\u6599\u4e4b\u6a94\u6848\u7684\u8def\u5f91 ERR_BASE64_CANNOT_READ_RAW_DATA=\u5617\u8a66\u8b80\u53d6\u8981\u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u5617\u8a66\u5beb\u5165\u5df2\u7de8\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s ERR_BASE64_CANNOT_READ_ENCODED_DATA=\u5617\u8a66\u8b80\u53d6 base64 \u7de8\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5617\u8a66\u5beb\u5165\u5df2\u89e3\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s ERR_BASE64_UNKNOWN_SUBCOMMAND=\u4e0d\u660e\u7684\u5b50\u6307\u4ee4 %s