com.floragunn.searchguard.support.SgUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of search-guard-6 Show documentation
Show all versions of search-guard-6 Show documentation
Provide access control related features for Elasticsearch 6
The newest version!
/*
* Copyright 2015-2018 floragunn GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.floragunn.searchguard.support;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.common.settings.Settings;
import com.floragunn.searchguard.tools.Hasher;
public final class SgUtils {
protected final static Logger log = LogManager.getLogger(SgUtils.class);
private static final Pattern ENV_PATTERN = Pattern.compile("\\$\\{env\\.([\\w]+)((\\:\\-)?[\\w]*)\\}");
private static final Pattern ENVBC_PATTERN = Pattern.compile("\\$\\{envbc\\.([\\w]+)((\\:\\-)?[\\w]*)\\}");
private static final Pattern ENVBASE64_PATTERN = Pattern.compile("\\$\\{envbase64\\.([\\w]+)((\\:\\-)?[\\w]*)\\}");
public static Locale EN_Locale = forEN();
private SgUtils() {
}
//https://github.com/tonywasher/bc-java/commit/ee160e16aa7fc71330907067c5470e9bf3e6c383
//The Legion of the Bouncy Castle Inc
private static Locale forEN()
{
if ("en".equalsIgnoreCase(Locale.getDefault().getLanguage()))
{
return Locale.getDefault();
}
Locale[] locales = Locale.getAvailableLocales();
for (int i = 0; i != locales.length; i++)
{
if ("en".equalsIgnoreCase(locales[i].getLanguage()))
{
return locales[i];
}
}
return Locale.getDefault();
}
public static String evalMap(final Map> map, final String index) {
if (map == null) {
return null;
}
if (map.get(index) != null) {
return index;
} else if (map.get("*") != null) {
return "*";
}
if (map.get("_all") != null) {
return "_all";
}
//regex
for(final String key: map.keySet()) {
if(WildcardMatcher.containsWildcard(key)
&& WildcardMatcher.match(key, index)) {
return key;
}
}
return null;
}
@SafeVarargs
public static Map mapFromArray(T ... keyValues) {
if(keyValues == null) {
return Collections.emptyMap();
}
if (keyValues.length % 2 != 0) {
log.error("Expected even number of key/value pairs, got {}.", Arrays.toString(keyValues));
return null;
}
Map map = new HashMap<>();
for(int i = 0; i 2) {
return bc?Hasher.hash(mode.substring(2).toCharArray()):mode.substring(2);
} else {
return null;
}
} else {
return bc?Hasher.hash(envVarValue.toCharArray()):envVarValue;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy