package org.ovirt.engine.core.searchbackend; import java.util.HashSet; public final class SearchObjects { // objects public static final String VDS_OBJ_NAME = "HOST"; public static final String VDS_PLU_OBJ_NAME = "HOSTS"; public static final String VM_OBJ_NAME = "VM"; public static final String VM_PLU_OBJ_NAME = "VMS"; public static final String AUDIT_OBJ_NAME = "EVENT"; public static final String AUDIT_PLU_OBJ_NAME = "EVENTS"; public static final String AD_USER_OBJ_NAME = "ADUSER"; public static final String AD_USER_PLU_OBJ_NAME = "ADUSERS"; public static final String AD_GROUP_OBJ_NAME = "ADGROUP"; public static final String AD_GROUP_PLU_OBJ_NAME = "ADGROUPS"; public static final String TEMPLATE_OBJ_NAME = "TEMPLATE"; public static final String TEMPLATE_PLU_OBJ_NAME = "TEMPLATES"; public static final String VDC_USER_OBJ_NAME = "USER"; public static final String VDC_USER_PLU_OBJ_NAME = "USERS"; public static final String VDC_POOL_OBJ_NAME = "POOL"; public static final String VDC_POOL_PLU_OBJ_NAME = "POOLS"; public static final String VDC_CLUSTER_OBJ_NAME = "CLUSTER"; public static final String VDC_CLUSTER_PLU_OBJ_NAME = "CLUSTERS"; public static final String VDC_STORAGE_POOL_OBJ_NAME = "DATACENTER"; public static final String VDC_STORAGE_DOMAIN_OBJ_NAME = "STORAGE"; //special searches private static final String ALERT = "EVENTS: severity=alert"; private static final String ERROR = "Events: severity=error"; private static final String HOST_BY_CPU = "Host: sortby cpu_usage desc"; private static final String DATACENTER_BY_NAME = "DataCenter: sortby name"; private static final String VM_BY_STATUS = "Vms: status=Up or status=PoweringUp or status=PoweredDown or status=MigratingTo or status=WaitForLaunch or status=RebootInProgress or status=PoweringDown or status=Paused or status=Unknown sortby cpu_usage desc"; private static final HashSet<String> SAFE_SEARCH_EXPR = new HashSet<String>(); private static void init() { final char SEPERATOR = ':'; SAFE_SEARCH_EXPR.add(VDS_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(VDS_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VM_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VM_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(AUDIT_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(AUDIT_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(TEMPLATE_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(TEMPLATE_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(VDC_USER_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(VDC_USER_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VDC_POOL_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VDC_POOL_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(VDC_CLUSTER_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(VDC_CLUSTER_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VDC_STORAGE_POOL_OBJ_NAME.toLowerCase() + SEPERATOR); // SAFE_SEARCH_EXPR.add(VDC_STORAGE_DOMAIN_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(ALERT.toLowerCase()); SAFE_SEARCH_EXPR.add(ERROR.toLowerCase()); SAFE_SEARCH_EXPR.add(HOST_BY_CPU.toLowerCase()); SAFE_SEARCH_EXPR.add(DATACENTER_BY_NAME.toLowerCase()); SAFE_SEARCH_EXPR.add(VM_BY_STATUS.toLowerCase()); } /** * Determines if a search expression is safe. * @param expr the expression to check. * @return boolean */ public static boolean isSafeExpression(String expr) { if (SAFE_SEARCH_EXPR.size() == 0) { init(); } return SAFE_SEARCH_EXPR.contains(expr.toLowerCase()); } }