xref: /OpenGrok/opengrok-web/src/main/webapp/WEB-INF/web.xml (revision 9554a08a19f02ccda403718e715fa49c454c7fff)
1<?xml version="1.0" encoding="UTF-8"?>
2<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
5         https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
6         version="5.0">
7
8    <display-name>OpenGrok</display-name>
9    <description>A wicked fast source browser</description>
10    <context-param>
11        <description>Full path to the configuration file where OpenGrok can read its configuration</description>
12        <param-name>CONFIGURATION</param-name>
13        <param-value>/var/opengrok/etc/configuration.xml</param-value>
14    </context-param>
15    <listener>
16        <listener-class>org.opengrok.web.WebappListener</listener-class>
17    </listener>
18    <filter>
19        <filter-name>StatisticsFilter</filter-name>
20        <filter-class>org.opengrok.web.StatisticsFilter</filter-class>
21    </filter>
22    <filter-mapping>
23        <filter-name>StatisticsFilter</filter-name>
24        <url-pattern>/*</url-pattern>
25    </filter-mapping>
26    <filter>
27        <filter-name>AuthorizationFilter</filter-name>
28        <filter-class>org.opengrok.web.AuthorizationFilter</filter-class>
29    </filter>
30    <filter-mapping>
31        <filter-name>AuthorizationFilter</filter-name>
32        <url-pattern>/*</url-pattern>
33    </filter-mapping>
34    <filter>
35        <filter-name>ExpiresHalfHourFilter</filter-name>
36        <filter-class>org.opengrok.web.ResponseHeaderFilter</filter-class>
37        <init-param>
38            <param-name>Cache-Control</param-name>
39            <param-value>max-age=1800</param-value>
40        </init-param>
41    </filter>
42    <filter>
43        <filter-name>ExpiresOneDayFilter</filter-name>
44        <filter-class>org.opengrok.web.ResponseHeaderFilter</filter-class>
45        <init-param>
46            <param-name>Cache-Control</param-name>
47            <param-value>max-age=86400</param-value>
48        </init-param>
49    </filter>
50    <filter>
51        <filter-name>ExpiresOneYearFilter</filter-name>
52        <filter-class>org.opengrok.web.ResponseHeaderFilter</filter-class>
53        <init-param>
54            <param-name>Cache-Control</param-name>
55            <param-value>max-age=31536000</param-value>
56        </init-param>
57    </filter>
58    <filter-mapping>
59        <filter-name>ExpiresOneDayFilter</filter-name>
60        <url-pattern>/manifest.json</url-pattern>
61        <dispatcher>REQUEST</dispatcher>
62    </filter-mapping>
63    <filter-mapping>
64        <filter-name>ExpiresHalfHourFilter</filter-name>
65        <url-pattern>/history/*</url-pattern>
66        <url-pattern>/raw/*</url-pattern>
67        <url-pattern>/download/*</url-pattern>
68        <url-pattern>/rss/*</url-pattern>
69        <url-pattern>/error</url-pattern>
70        <url-pattern>/enoent</url-pattern>
71        <url-pattern>/eforbidden</url-pattern>
72        <dispatcher>REQUEST</dispatcher>
73    </filter-mapping>
74    <filter-mapping>
75        <filter-name>ExpiresOneYearFilter</filter-name>
76        <url-pattern>/default/*</url-pattern>
77        <url-pattern>/js/*</url-pattern>
78        <url-pattern>/webjars/*</url-pattern>
79        <dispatcher>REQUEST</dispatcher>
80    </filter-mapping>
81    <filter>
82        <filter-name>CookieFilter</filter-name>
83        <filter-class>org.opengrok.web.CookieFilter</filter-class>
84        <init-param>
85            <param-name>SameSite</param-name>
86            <param-value>Strict</param-value>
87        </init-param>
88        <init-param>
89            <param-name>Secure</param-name>
90            <param-value></param-value>
91        </init-param>
92    </filter>
93    <filter-mapping>
94        <filter-name>CookieFilter</filter-name>
95        <url-pattern>/*</url-pattern>
96        <dispatcher>REQUEST</dispatcher>
97    </filter-mapping>
98    <servlet>
99        <display-name>Source Finder</display-name>
100        <servlet-name>search</servlet-name>
101        <jsp-file>/search.jsp</jsp-file>
102        <init-param>
103            <param-name>keepgenerated</param-name>
104            <param-value>true</param-value>
105        </init-param>
106    </servlet>
107    <servlet>
108        <display-name>Source History</display-name>
109        <servlet-name>history</servlet-name>
110        <jsp-file>/history.jsp</jsp-file>
111        <init-param>
112            <param-name>keepgenerated</param-name>
113            <param-value>true</param-value>
114        </init-param>
115    </servlet>
116    <servlet>
117        <display-name>Source lister</display-name>
118        <servlet-name>lister</servlet-name>
119        <jsp-file>/list.jsp</jsp-file>
120        <init-param>
121            <param-name>keepgenerated</param-name>
122            <param-value>true</param-value>
123        </init-param>
124    </servlet>
125    <servlet>
126        <display-name>Source diffs between revisions</display-name>
127        <servlet-name>diff</servlet-name>
128        <jsp-file>/diff.jsp</jsp-file>
129        <init-param>
130            <param-name>keepgenerated</param-name>
131            <param-value>true</param-value>
132        </init-param>
133    </servlet>
134    <servlet>
135        <display-name>Shows more matching lines</display-name>
136        <servlet-name>more</servlet-name>
137        <jsp-file>/more.jsp</jsp-file>
138    </servlet>
139    <servlet>
140        <display-name>Source Changes in RSS format</display-name>
141        <servlet-name>rss</servlet-name>
142        <jsp-file>/rss.jsp</jsp-file>
143        <init-param>
144            <param-name>keepgenerated</param-name>
145            <param-value>true</param-value>
146        </init-param>
147    </servlet>
148    <servlet>
149        <display-name>OpenSearch link for current project</display-name>
150        <servlet-name>opensearch</servlet-name>
151        <jsp-file>/opensearch.jsp</jsp-file>
152        <init-param>
153            <param-name>keepgenerated</param-name>
154            <param-value>true</param-value>
155        </init-param>
156    </servlet>
157    <servlet>
158        <display-name>Raw Source lister</display-name>
159        <servlet-name>raw</servlet-name>
160        <servlet-class>org.opengrok.web.GetFile</servlet-class>
161        <init-param>
162            <param-name>keepgenerated</param-name>
163            <param-value>true</param-value>
164        </init-param>
165    </servlet>
166    <servlet>
167        <display-name>Download source</display-name>
168        <servlet-name>download</servlet-name>
169        <servlet-class>org.opengrok.web.GetFile</servlet-class>
170        <init-param>
171            <param-name>keepgenerated</param-name>
172            <param-value>true</param-value>
173        </init-param>
174    </servlet>
175    <servlet>
176        <display-name>Error Handler</display-name>
177        <servlet-name>error</servlet-name>
178        <jsp-file>/error.jsp</jsp-file>
179        <init-param>
180            <param-name>keepgenerated</param-name>
181            <param-value>true</param-value>
182        </init-param>
183    </servlet>
184    <servlet>
185        <display-name>File not found handler</display-name>
186        <servlet-name>enoent</servlet-name>
187        <jsp-file>/enoent.jsp</jsp-file>
188        <init-param>
189            <param-name>keepgenerated</param-name>
190            <param-value>true</param-value>
191        </init-param>
192    </servlet>
193    <servlet>
194        <display-name>Forbidden error handler</display-name>
195        <servlet-name>eforbidden</servlet-name>
196        <jsp-file>/eforbidden.jsp</jsp-file>
197        <init-param>
198            <param-name>keepgenerated</param-name>
199            <param-value>true</param-value>
200        </init-param>
201    </servlet>
202    <servlet-mapping>
203        <servlet-name>search</servlet-name>
204        <url-pattern>/search</url-pattern>
205        <!-- SEARCH_P -->
206    </servlet-mapping>
207    <servlet-mapping>
208        <servlet-name>opensearch</servlet-name>
209        <url-pattern>/opensearch</url-pattern>
210        <!-- SEARCH_O -->
211    </servlet-mapping>
212    <servlet-mapping>
213        <servlet-name>history</servlet-name>
214        <url-pattern>/history/*</url-pattern>
215        <!-- HIST_L -->
216    </servlet-mapping>
217    <servlet-mapping>
218        <servlet-name>lister</servlet-name>
219        <url-pattern>/xref/*</url-pattern>
220        <!-- XREF_P -->
221    </servlet-mapping>
222    <servlet-mapping>
223        <servlet-name>raw</servlet-name>
224        <url-pattern>/raw/*</url-pattern>
225        <!-- RAW_P -->
226    </servlet-mapping>
227    <servlet-mapping>
228        <servlet-name>download</servlet-name>
229        <url-pattern>/download/*</url-pattern>
230        <!-- DOWNLOAD_P -->
231    </servlet-mapping>
232    <servlet-mapping>
233        <servlet-name>search</servlet-name>
234        <url-pattern>/s</url-pattern>
235        <!-- SEARCH_R -->
236    </servlet-mapping>
237    <servlet-mapping>
238        <servlet-name>diff</servlet-name>
239        <url-pattern>/diff/*</url-pattern>
240        <!-- DIFF_P -->
241    </servlet-mapping>
242    <servlet-mapping>
243        <servlet-name>more</servlet-name>
244        <url-pattern>/more/*</url-pattern>
245        <!-- MORE_P -->
246    </servlet-mapping>
247    <servlet-mapping>
248        <servlet-name>rss</servlet-name>
249        <url-pattern>/rss/*</url-pattern>
250        <!-- RSS_P -->
251    </servlet-mapping>
252    <servlet-mapping>
253        <servlet-name>error</servlet-name>
254        <url-pattern>/error</url-pattern>
255        <!-- ERROR -->
256    </servlet-mapping>
257    <servlet-mapping>
258        <servlet-name>enoent</servlet-name>
259        <url-pattern>/enoent</url-pattern>
260        <!-- NOT_FOUND -->
261    </servlet-mapping>
262    <servlet-mapping>
263        <servlet-name>eforbidden</servlet-name>
264        <url-pattern>/eforbidden</url-pattern>
265        <!-- FORBIDDEN -->
266    </servlet-mapping>
267    <error-page>
268        <error-code>404</error-code>
269        <location>/enoent</location>
270    </error-page>
271    <error-page>
272        <error-code>403</error-code>
273        <location>/eforbidden</location>
274    </error-page>
275    <error-page>
276        <error-code>500</error-code>
277        <location>/error</location>
278    </error-page>
279    <jsp-config>
280        <jsp-property-group>
281            <url-pattern>*.jsp</url-pattern>
282            <trim-directive-whitespaces>true</trim-directive-whitespaces>
283        </jsp-property-group>
284    </jsp-config>
285</web-app>
286