Author: tpalsulich
Date: Sat Mar 28 16:32:47 2015
New Revision: 1669799

URL: http://svn.apache.org/r1669799
Log:
TIKA-1586. Enable CORS requests on Tika server.

This fixes #37.

Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-server/pom.xml
    
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java

Modified: tika/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Sat Mar 28 16:32:47 2015
@@ -1,5 +1,8 @@
 Release 1.8 - Current Development
 
+  * Tika server can now enable CORS requests with the command line
+    "--cors" option (TIKA-1586).
+
   * Update jhighlight dependence to avoid using LGPL license (TIKA-1581)
   
   * Updated HDF and NetCDF parsers to output file version in 

Modified: tika/trunk/tika-server/pom.xml
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-server/pom.xml?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
--- tika/trunk/tika-server/pom.xml (original)
+++ tika/trunk/tika-server/pom.xml Sat Mar 28 16:32:47 2015
@@ -77,6 +77,11 @@
       <version>${cxf.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-security-cors</artifactId>
+      <version>${cxf.version}</version>
+    </dependency>
+    <dependency>
       <groupId>javax.mail</groupId>
       <artifactId>mail</artifactId>
       <version>1.4.4</version>

Modified: 
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java?rev=1669799&r1=1669798&r2=1669799&view=diff
==============================================================================
--- 
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java 
(original)
+++ 
tika/trunk/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java 
Sat Mar 28 16:32:47 2015
@@ -35,6 +35,7 @@ import org.apache.cxf.jaxrs.JAXRSBinding
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
 import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.cxf.rs.security.cors.CrossOriginResourceSharingFilter;
 import org.apache.tika.Tika;
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.server.resource.DetectorResource;
@@ -64,6 +65,7 @@ public class TikaServerCli {
 
     private static Options getOptions() {
         Options options = new Options();
+        options.addOption("c", "cors", true, "origin allowed to make CORS 
requests (default=NONE)\nall allowed if \"all\"");
         options.addOption("h", "host", true, "host name (default = " + 
DEFAULT_HOST + ')');
         options.addOption("p", "port", true, "listen port (default = " + 
DEFAULT_PORT + ')');
         options.addOption("l", "log", true, "request URI log level ('debug' or 
'info')");
@@ -116,6 +118,16 @@ public class TikaServerCli {
                     logger.info("Unsupported request URI log level: " + 
logLevel);
                 }
             }
+
+            CrossOriginResourceSharingFilter corsFilter = null;
+            if (line.hasOption("cors")) {
+                corsFilter = new CrossOriginResourceSharingFilter();
+                String url = line.getOptionValue("cors");
+                List<String> origins = new ArrayList<String>();
+                if (!url.equals("*")) origins.add(url);         // Empty list 
allows all origins.
+                corsFilter.setAllowOrigins(origins);
+            }
+
             // The Tika Configuration to use throughout
             TikaConfig tika = TikaConfig.getDefaultConfig();
 
@@ -147,6 +159,9 @@ public class TikaServerCli {
             if (logFilter != null) {
                 providers.add(logFilter);
             }
+            if (corsFilter != null) {
+                providers.add(corsFilter);
+            }
             sf.setProviders(providers);
 
             sf.setAddress("http://"; + host + ":" + port + "/");


Reply via email to