You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2012/06/30 13:53:32 UTC

svn commit: r1355712 - in /tika/trunk: CHANGES.txt tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java

Author: jukka
Date: Sat Jun 30 11:53:31 2012
New Revision: 1355712

URL: http://svn.apache.org/viewvc?rev=1355712&view=rev
Log:
TIKA-943: Add parameter to tika-app to supply password for decryption

Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java

Modified: tika/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1355712&r1=1355711&r2=1355712&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Sat Jun 30 11:53:31 2012
@@ -33,6 +33,10 @@ Release 1.2 - Current Development
     (KML and KMZ) used by tools like Google Earth. See also
     http://www.opengeospatial.org/standards/kml/. (TIKA-941)
 
+  * CLI: You can now use the TIKA_PASSWORD environment variable or the
+    --password=X command line option to specify the password that Tika CLI
+    should use for opening encrypted documents (TIKA-943).
+
 Release 1.1 - 3/7/2012
 ---------------------------------
 

Modified: tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java?rev=1355712&r1=1355711&r2=1355712&view=diff
==============================================================================
--- tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java (original)
+++ tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java Sat Jun 30 11:53:31 2012
@@ -71,6 +71,7 @@ import org.apache.tika.parser.NetworkPar
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.ParserDecorator;
+import org.apache.tika.parser.PasswordProvider;
 import org.apache.tika.parser.html.BoilerpipeContentHandler;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.XMPContentHandler;
@@ -278,6 +279,11 @@ public class TikaCLI {
      */
     private String encoding = null;
 
+    /**
+     * Password for opening encrypted documents, or <code>null</code>.
+     */
+    private String password = System.getenv("TIKA_PASSWORD");
+
     private boolean pipeMode = true;
 
     private boolean serverMode = false;
@@ -293,6 +299,11 @@ public class TikaCLI {
         detector = new DefaultDetector();
         parser = new AutoDetectParser(detector);
         context.set(Parser.class, parser);
+        context.set(PasswordProvider.class, new PasswordProvider() {
+            public String getPassword(Metadata metadata) {
+                return password;
+            }
+        });
     }
 
     public void process(String arg) throws Exception {
@@ -331,6 +342,10 @@ public class TikaCLI {
             encoding = arg.substring("-e".length());
         } else if (arg.startsWith("--encoding=")) {
             encoding = arg.substring("--encoding=".length());
+        } else if (arg.startsWith("-p") && !arg.equals("-p")) {
+            password = arg.substring("-p".length());
+        } else if (arg.startsWith("--password=")) {
+            password = arg.substring("--password=".length());
         } else  if (arg.equals("-j") || arg.equals("--json")) {
             type = JSON;
         } else  if (arg.equals("-y") || arg.equals("--xmp")) {
@@ -424,8 +439,9 @@ public class TikaCLI {
         out.println("    -l  or --language      Output only language");
         out.println("    -d  or --detect        Detect document type");
         out.println("    -eX or --encoding=X    Use output encoding X");
-        out.println("    -z  or --extract       Extract all attachements into current directory");        
-        out.println("    --extract-dir=<dir>    Specify target directory for -z");        
+        out.println("    -pX or --password=X    Use document password X");
+        out.println("    -z  or --extract       Extract all attachements into current directory");
+        out.println("    --extract-dir=<dir>    Specify target directory for -z");
         out.println("    -r  or --pretty-print  For XML and XHTML outputs, adds newlines and");
         out.println("                           whitespace, for better readability");
         out.println();