Skip to content

Commit

Permalink
Added cors-filter setup to MQTTP package too.
Browse files Browse the repository at this point in the history
  • Loading branch information
hylkevds committed Aug 23, 2018
1 parent 612f54b commit 06d5cb8
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 7 deletions.
Expand Up @@ -20,11 +20,12 @@
import de.fraunhofer.iosb.ilt.sta.mqtt.MqttManager;
import de.fraunhofer.iosb.ilt.sta.persistence.PersistenceManagerFactory;
import de.fraunhofer.iosb.ilt.sta.settings.CoreSettings;
import static de.fraunhofer.iosb.ilt.sta.settings.CoreSettings.TAG_SERVICE_ROOT_URL;
import de.fraunhofer.iosb.ilt.sta.settings.Settings;
import java.net.URI;
import java.util.EnumSet;
import java.util.Enumeration;
import java.util.Properties;
import javax.servlet.DispatcherType;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
Expand Down Expand Up @@ -60,6 +61,8 @@ public void contextInitialized(ServletContextEvent sce) {
CoreSettings coreSettings = new CoreSettings(properties);
context.setAttribute(TAG_CORE_SETTINGS, coreSettings);

setUpCorsFilter(context, coreSettings);

PersistenceManagerFactory.init(coreSettings);
MessageBusFactory.init(coreSettings);
MqttManager.init(coreSettings);
Expand All @@ -80,4 +83,39 @@ public void contextDestroyed(ServletContextEvent sce) {
LOGGER.info("Context destroyed, done shutting down threads.");
}

private void setUpCorsFilter(ServletContext servletContext, CoreSettings coreSettings) {
Settings httpSettings = coreSettings.getHttpSettings();
boolean corsEnable = httpSettings.getBoolean(CoreSettings.TAG_CORS_ENABLE, CoreSettings.DEFAULT_CORS_ENABLE);
if (corsEnable) {
try {
String filterName = "CorsFilter";

FilterRegistration.Dynamic corsFilter = servletContext.addFilter(filterName, "org.apache.catalina.filters.CorsFilter");
corsFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), true, "/*");

String allowedOrigins = httpSettings.get(CoreSettings.TAG_CORS_ALLOWED_ORIGINS, CoreSettings.DEFAULT_CORS_ALLOWED_ORIGINS);
corsFilter.setInitParameter("cors.allowed.origins", allowedOrigins);

String allowedMethods = httpSettings.get(CoreSettings.TAG_CORS_ALLOWED_METHODS, CoreSettings.DEFAULT_CORS_ALLOWED_METHODS);
corsFilter.setInitParameter("cors.allowed.methods", allowedMethods);

String exposedHeaders = httpSettings.get(CoreSettings.TAG_CORS_EXPOSED_HEADERS, CoreSettings.DEFAULT_CORS_EXPOSED_HEADERS);
corsFilter.setInitParameter("cors.exposed.headers", exposedHeaders);

String allowedHeaders = httpSettings.get(CoreSettings.TAG_CORS_ALLOWED_HEADERS, CoreSettings.DEFAULT_CORS_ALLOWED_HEADERS);
corsFilter.setInitParameter("cors.allowed.headers", allowedHeaders);

String supportCreds = httpSettings.get(CoreSettings.TAG_CORS_SUPPORT_CREDENTIALS, CoreSettings.DEFAULT_CORS_SUPPORT_CREDENTIALS);
corsFilter.setInitParameter("cors.support.credentials", supportCreds);

String preflightMaxage = httpSettings.get(CoreSettings.TAG_CORS_PREFLIGHT_MAXAGE, CoreSettings.DEFAULT_CORS_PREFLIGHT_MAXAGE);
corsFilter.setInitParameter("cors.preflight.maxage", preflightMaxage);

String requestDecorate = httpSettings.get(CoreSettings.TAG_CORS_REQUEST_DECORATE, CoreSettings.DEFAULT_CORS_REQUEST_DECORATE);
corsFilter.setInitParameter("cors.request.decorate", requestDecorate);
} catch (Exception exc) {
LOGGER.error("Failed to initialise CORS filter.", exc);
}
}
}
}
6 changes: 3 additions & 3 deletions docker-compose-separated.yaml
Expand Up @@ -10,9 +10,9 @@ services:
- mosquitto
environment:
- serviceRootUrl=http://localhost:8080/FROST-Server
- http.cors.enable=true
- http.cors.allowed.origins=*
- bus.mqttBroker=tcp://mosquitto:1883
- http_cors_enable=true
- http_cors_allowed.origins=*
- bus_mqttBroker=tcp://mosquitto:1883
- persistence_db_driver=org.postgresql.Driver
- persistence_db_url=jdbc:postgresql://database:5432/sensorthings
- persistence_db_username=sensorthings
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yaml
Expand Up @@ -5,8 +5,8 @@ services:
image: fraunhoferiosb/frost-server:latest
environment:
- serviceRootUrl=http://localhost:8080/FROST-Server
- http.cors.enable=true
- http.cors.allowed.origins=*
- http_cors_enable=true
- http_cors_allowed.origins=*
- persistence_db_driver=org.postgresql.Driver
- persistence_db_url=jdbc:postgresql://database:5432/sensorthings
- persistence_db_username=sensorthings
Expand Down

0 comments on commit 06d5cb8

Please sign in to comment.