<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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.

-->
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
	</context-param>
	<context-param>
		<param-name>org.apache.tomcat.websocket.textBufferSize</param-name>
		<param-value>1048576</param-value> <!-- 1MB by default -->
	</context-param>
	<listener>
		<listener-class>org.apache.openmeetings.util.OMContextListener</listener-class>
	</listener>

	<filter>
		<filter-name>OpenmeetingsApplication</filter-name>
		<filter-class>org.apache.wicket.protocol.ws.javax.JavaxWebSocketFilter</filter-class>
		<async-supported>true</async-supported>
		<init-param>
			<param-name>applicationClassName</param-name>
			<param-value>org.apache.openmeetings.web.app.Application</param-value>
		</init-param>
		<init-param>
			<param-name>applicationFactoryClassName</param-name>
			<param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
		</init-param>
		<init-param>
			<param-name>configuration</param-name>
			<param-value>${wicket.configuration}</param-value>
		</init-param>
		<init-param>
			<param-name>ignorePaths</param-name>
			<param-value>css,docs,images,js,persistence,public,screenshare,data,services</param-value>
		</init-param>
	</filter>

	<!-- Start Prometheus Filter HTTP Servlet metrics
	<filter>
		<filter-name>prometheusFilter</filter-name>
		<filter-class>io.prometheus.client.filter.MetricsFilter</filter-class>
		<init-param>
			<param-name>metric-name</param-name>
			<param-value>webapp_metrics_filter</param-value>
		</init-param>
		<init-param>
			<param-name>help</param-name>
			<param-value>This is the help for your metrics filter</param-value>
		</init-param>
		<init-param>
			<param-name>buckets</param-name>
			<param-value>0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10</param-value>
		</init-param>
		<init-param>
			<param-name>path-components</param-name>
			<param-value>0</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>prometheusFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	End Prometheus -->

	<filter-mapping>
		<filter-name>OpenmeetingsApplication</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<init-param>
			<param-name>config-location</param-name>
			<param-value>classpath:cxf-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>

	<!-- Start Prometheus export metrics HTTP
	<servlet>
		<servlet-name>metrics</servlet-name>
		<servlet-class>org.apache.openmeetings.web.util.logging.OpenMeetingsMetricsServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>metrics</servlet-name>
		<url-pattern>/services/metrics/</url-pattern>
	</servlet-mapping>
	End Prometheus -->

	<mime-mapping>
		<extension>inc</extension>
		<mime-type>text/plain</mime-type>
	</mime-mapping>

	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Allowed methods</web-resource-name>
			<url-pattern>/services/*</url-pattern>
			<http-method-omission>TRACE</http-method-omission>
			<http-method-omission>HEAD</http-method-omission>
		</web-resource-collection>
		<web-resource-collection>
			<web-resource-name>Allowed methods</web-resource-name>
			<url-pattern>/*</url-pattern>
			<http-method>GET</http-method>
			<http-method>POST</http-method>
		</web-resource-collection>
		<!-- no auth-constraint means everybody allowed -->
	</security-constraint>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Forbidden</web-resource-name>
			<url-pattern>/data/*</url-pattern>
		</web-resource-collection>
		<web-resource-collection>
			<web-resource-name>Forbidden</web-resource-name>
			<url-pattern>/services/*</url-pattern>
			<http-method>TRACE</http-method>
			<http-method>HEAD</http-method>
		</web-resource-collection>
		<web-resource-collection>
			<web-resource-name>Forbidden</web-resource-name>
			<url-pattern>/*</url-pattern>
			<http-method-omission>GET</http-method-omission>
			<http-method-omission>POST</http-method-omission>
		</web-resource-collection>
		<auth-constraint/>
	</security-constraint>
</web-app>
