Repository: incubator-blur
Updated Branches:
  refs/heads/apache-blur-0.2 5fa8c6480 -> 4a4338af2


Added in the ability to specify global user if using security in Blur


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/4a4338af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/4a4338af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/4a4338af

Branch: refs/heads/apache-blur-0.2
Commit: 4a4338af2408f7ae5fffc903c381ff999d8edae4
Parents: 5fa8c64
Author: Chris Rohr <[email protected]>
Authored: Sat Jun 7 08:24:25 2014 -0400
Committer: Chris Rohr <[email protected]>
Committed: Sat Jun 7 08:24:25 2014 -0400

----------------------------------------------------------------------
 .../blur/console/servlets/SearchServlet.java    |  7 +--
 .../org/apache/blur/console/util/Config.java    | 53 ++++++++++++--------
 .../apache/blur/console/util/SearchUtil.java    | 51 +++++++------------
 3 files changed, 55 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/4a4338af/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/SearchServlet.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/SearchServlet.java
 
b/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/SearchServlet.java
index 1697d59..c7abcef 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/SearchServlet.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/servlets/SearchServlet.java
@@ -38,17 +38,18 @@ public class SearchServlet extends BaseConsoleServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
                String path = request.getPathInfo();
                if (path == null) {
-                       sendSearch(response, request.getParameterMap());
+                       String remoteHost = request.getRemoteHost();
+                       sendSearch(response, request.getParameterMap(), 
remoteHost);
                } else {
                        response.setStatus(404);
                        IOUtils.write("Route [" + path + "] doesn't exist", 
response.getOutputStream());
                }
        }
        
-       private void sendSearch(HttpServletResponse response, Map<String, 
String[]> params) throws IOException {
+       private void sendSearch(HttpServletResponse response, Map<String, 
String[]> params, String remoteHost) throws IOException {
                Map<String, Object> results = new HashMap<String, Object>();
                try {
-                       results = SearchUtil.search(params);
+                       results = SearchUtil.search(params, remoteHost);
                } catch (IOException e) {
                        throw new IOException(e);
                } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/4a4338af/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
index cd9ca18..3b98267 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/Config.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.blur.BlurConfiguration;
 import org.apache.blur.manager.clusterstatus.ZookeeperClusterStatus;
@@ -29,16 +30,22 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
 
 public class Config {
        private static final File TMPDIR = new 
File(System.getProperty("blur.tmp.dir", "./target/mini-cluster"));
        private static final Log log = LogFactory.getLog(Config.class);
        
-       private static int port = 8080;
+       private static int port;
        private static BlurConfiguration blurConfig;
        private static ZookeeperClusterStatus zk;
        private static String blurConnection;
        private static Object cluster;
+       private static Map<String, String> globalUserProperties;
 
        public static int getConsolePort() {
                return port;
@@ -46,6 +53,9 @@ public class Config {
        public static BlurConfiguration getBlurConfig() {
                return blurConfig;
        }
+       public static Map<String, String> getUserProperties() {
+               return globalUserProperties;
+       }
        
        public static void setupConfig() throws IOException {
                if (cluster == null) {
@@ -65,6 +75,27 @@ public class Config {
                }
                zk = new 
ZookeeperClusterStatus(blurConfig.get("blur.zookeeper.connection"), blurConfig);
                blurConnection = buildConnectionString();
+               port = blurConfig.getInt("blur.console.port", 8080);
+               parseSecurity();
+       }
+       
+       private static void parseSecurity() {
+               String securityFile = 
blurConfig.get("blur.console.security.file");
+               
+               if (securityFile != null) {
+                       JsonFactory factory = new JsonFactory(); 
+                   ObjectMapper mapper = new ObjectMapper(factory); 
+                   File from = new File(securityFile); 
+                   TypeReference<Map<String,String>> typeRef 
+                           = new TypeReference<Map<String,String>>() {};
+
+                   try {
+                               globalUserProperties = mapper.readValue(from, 
typeRef);
+                       } catch (Exception e) {
+                               log.error("Unable to parse security file.  
Search may not work right.", e);
+                               globalUserProperties = null;
+                       } 
+               }
        }
        
        public static String getConnectionString() throws IOException {
@@ -89,7 +120,6 @@ public class Config {
                        } catch (Exception e) {
                                log.fatal("Unable to stop mini cluster through 
reflection.", e);
                        }
-//                     cluster.shutdownBlurCluster();
                        File file = new File(TMPDIR, "blur-cluster-test");
                        if (file.exists()) {
                                FileUtils.deleteDirectory(file);
@@ -98,25 +128,11 @@ public class Config {
        }
        
        
-       @SuppressWarnings("unchecked")
+       @SuppressWarnings({ "unchecked", "rawtypes" })
        public static void setupMiniCluster() throws IOException {
-//             GCWatcher.init(0.60);
-//         LocalFileSystem localFS = FileSystem.getLocal(new Configuration());
            File testDirectory = new File(TMPDIR, 
"blur-cluster-test").getAbsoluteFile();
            testDirectory.mkdirs();
 
-//         Path directory = new Path(testDirectory.getPath());
-//         FsPermission dirPermissions = 
localFS.getFileStatus(directory).getPermission();
-//         FsAction userAction = dirPermissions.getUserAction();
-//         FsAction groupAction = dirPermissions.getGroupAction();
-//         FsAction otherAction = dirPermissions.getOtherAction();
-//
-//         StringBuilder builder = new StringBuilder();
-//         builder.append(userAction.ordinal());
-//         builder.append(groupAction.ordinal());
-//         builder.append(otherAction.ordinal());
-//         String dirPermissionNum = builder.toString();
-//         System.setProperty("dfs.datanode.data.dir.perm", dirPermissionNum);
            testDirectory.delete();
            try {
                Class clusterClass = 
Class.forName("org.apache.blur.MiniCluster", false, 
Config.class.getClassLoader());
@@ -130,8 +146,5 @@ public class Config {
                log.fatal("Unable to start in dev mode because MiniCluster 
isn't in classpath", e);
                cluster = null;
            }
-//         cluster = ConstructorUtils.in
-//         cluster = new MiniCluster();
-//         cluster.startBlurCluster(new File(testDirectory, 
"cluster").getAbsolutePath(), 2, 3, true);
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/4a4338af/contrib/blur-console/src/main/java/org/apache/blur/console/util/SearchUtil.java
----------------------------------------------------------------------
diff --git 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/SearchUtil.java
 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/SearchUtil.java
index d19ead7..ccf66d2 100644
--- 
a/contrib/blur-console/src/main/java/org/apache/blur/console/util/SearchUtil.java
+++ 
b/contrib/blur-console/src/main/java/org/apache/blur/console/util/SearchUtil.java
@@ -26,6 +26,7 @@ import org.apache.blur.thrift.generated.Record;
 import org.apache.blur.thrift.generated.Row;
 import org.apache.blur.thrift.generated.ScoreType;
 import org.apache.blur.thrift.generated.Selector;
+import org.apache.blur.thrift.generated.User;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 
@@ -54,33 +55,7 @@ public class SearchUtil {
        private static final String ROW_ROW_OPTION = "rowrow";
        private static final String RECORD_RECORD_OPTION = "recordrecord";
        
-       /**
-        * Record only results:
-        * 
-        * {
-        *      famName: [
-        *              {
-        *                      colName: value
-        *              }
-        *      ]
-        * }
-        * 
-        * Row results:
-        * {
-        *      famName: [ 
-        *              {
-        *                      rowid: rowid,
-        *                      records: [
-        *                              {
-        *                                      colName: value
-        *                              }
-        *                      ]
-        *              }
-        *      ]
-        * }
-        */
-       
-       public static Map<String, Object> search(Map<String, String[]> params) 
throws IOException, BlurException, TException {
+       public static Map<String, Object> search(Map<String, String[]> params, 
String remoteHost) throws IOException, BlurException, TException {
                String table = params.get("table")[0];
                String query = params.get("query")[0];
                String rowQuery = params.get("rowRecordOption")[0];
@@ -89,23 +64,24 @@ public class SearchUtil {
                String[] families = params.get("families[]");
                
                if (families == null || families.length == 0) {
-                       return fullTextSearch(table, query);
+                       return fullTextSearch(table, query, remoteHost);
                }
                
                if (ArrayUtils.contains(families, "rowid")) {
-                       return fetchRow(table, query, families);
+                       return fetchRow(table, query, families, remoteHost);
                }
                
                if (ArrayUtils.contains(families, "recordid")) {
                        return fetchRecord(table, query, families);
                }
                
-               return searchAndFetch(table, query, rowQuery, start, fetch, 
families);
+               return searchAndFetch(table, query, rowQuery, start, fetch, 
families, remoteHost);
        }
        
        @SuppressWarnings({ "unchecked", "rawtypes" })
-       private static Map<String, Object> searchAndFetch(String table, String 
query, String rowQuery, String start, String fetch, String[] families) throws 
IOException, BlurException, TException {
+       private static Map<String, Object> searchAndFetch(String table, String 
query, String rowQuery, String start, String fetch, String[] families, String 
remoteHost) throws IOException, BlurException, TException {
                Iface client = 
BlurClient.getClient(Config.getConnectionString());
+               setUser(client, remoteHost);
                
                boolean recordsOnly = 
RECORD_RECORD_OPTION.equalsIgnoreCase(rowQuery);
                
@@ -166,8 +142,9 @@ public class SearchUtil {
                return results;
        }
        
-       private static Map<String, Object> fullTextSearch(String table, String 
query) throws IOException, BlurException, TException {
+       private static Map<String, Object> fullTextSearch(String table, String 
query, String remoteHost) throws IOException, BlurException, TException {
                Iface client = 
BlurClient.getClient(Config.getConnectionString());
+               setUser(client, remoteHost);
                
                BlurQuery blurQuery = new BlurQuery();
                
@@ -181,8 +158,10 @@ public class SearchUtil {
        }
        
        @SuppressWarnings({ "unchecked", "rawtypes" })
-       private static Map<String, Object> fetchRow(String table, String query, 
String[] families) throws IOException, BlurException, TException {
+       private static Map<String, Object> fetchRow(String table, String query, 
String[] families, String remoteHost) throws IOException, BlurException, 
TException {
                Iface client = 
BlurClient.getClient(Config.getConnectionString());
+               setUser(client, remoteHost);
+               
                Selector selector = new Selector();
                String rowid = StringUtils.remove(query, "rowid:");
                selector.setRowId(rowid);
@@ -258,4 +237,10 @@ public class SearchUtil {
                
                return row;
        }
+       
+       private static void setUser(Iface client, String username) throws 
TException {
+               if (Config.getUserProperties() != null) {
+                       client.setUser(new User(username, 
Config.getUserProperties()));
+               }
+       }
 }

Reply via email to