/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.filter; import org.xdi.oxauth.model.configuration.AppConfiguration; import org.xdi.oxauth.model.configuration.CorsConfigurationFilter; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import java.util.*; /** * @author Javier Rojas Blum * @version February 15, 2017 */ public class CorsFilterConfig implements FilterConfig { private String filterName; private Map<String, String> initParameters; /** * Key to retrieve allowed origins from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_ALLOWED_ORIGINS = "cors.allowed.origins"; /** * Key to retrieve allowed methods from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_ALLOWED_METHODS = "cors.allowed.methods"; /** * Key to retrieve allowed headers from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_ALLOWED_HEADERS = "cors.allowed.headers"; /** * Key to retrieve exposed headers from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_EXPOSED_HEADERS = "cors.exposed.headers"; /** * Key to retrieve support credentials from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_SUPPORT_CREDENTIALS = "cors.support.credentials"; /** * Key to retrieve logging enabled from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_LOGGING_ENABLED = "cors.logging.enabled"; /** * Key to retrieve preflight max age from {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_PREFLIGHT_MAXAGE = "cors.preflight.maxage"; /** * Key to determine if request should be decorated {@link CorsConfigurationFilter}. */ public static final String PARAM_CORS_REQUEST_DECORATE = "cors.request.decorate"; public CorsFilterConfig(String filterName, AppConfiguration appConfiguration) { this.filterName = filterName; initParameters = new HashMap<String, String>(); List<CorsConfigurationFilter> corsConfigurationFilters = appConfiguration.getCorsConfigurationFilters(); for (CorsConfigurationFilter corsConfigurationFilter : corsConfigurationFilters) { if (filterName.equals(corsConfigurationFilter.getFilterName())) { initParameters.put(PARAM_CORS_ALLOWED_ORIGINS, corsConfigurationFilter.getCorsAllowedOrigins()); initParameters.put(PARAM_CORS_ALLOWED_METHODS, corsConfigurationFilter.getCorsAllowedMethods()); initParameters.put(PARAM_CORS_ALLOWED_HEADERS, corsConfigurationFilter.getCorsAllowedHeaders()); initParameters.put(PARAM_CORS_EXPOSED_HEADERS, corsConfigurationFilter.getCorsExposedHeaders()); initParameters.put(PARAM_CORS_SUPPORT_CREDENTIALS, corsConfigurationFilter.getCorsSupportCredentials().toString()); initParameters.put(PARAM_CORS_LOGGING_ENABLED, corsConfigurationFilter.getCorsLoggingEnabled().toString()); initParameters.put(PARAM_CORS_PREFLIGHT_MAXAGE, corsConfigurationFilter.getCorsPreflightMaxAge().toString()); initParameters.put(PARAM_CORS_REQUEST_DECORATE, corsConfigurationFilter.getCorsRequestDecorate().toString()); } } } @Override public String getFilterName() { return filterName; } @Override public ServletContext getServletContext() { return null; } @Override public String getInitParameter(String name) { if (initParameters == null) { return (null); } return initParameters.get(name); } @Override public Enumeration<String> getInitParameterNames() { return Collections.enumeration(initParameters.keySet()); } }