/* Dateiverwaltung - File management in your browser Copyright (C) 2017 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.filecms.web; import java.io.IOException; import java.util.logging.Logger; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * Filter fuer das home-Verzeichnis * * Nur Inhalte des angemeldeten Benutzers werden ausgegeben * * @author Copyright (c) Ulrich Hilger, http://uhilger.de * @author Published under the terms and conditions of the * GNU Affero * General Public License * * @version 2, February 1, 2017 */ public class HomeFilter implements Filter { private static final Logger logger = Logger.getLogger(HomeFilter.class.getName()); private static final String ZIEL = "../api?c=de.uhilger.um.api.UserMgr&m="; @Override public void init(FilterConfig filterConfig) throws ServletException { // ... } /* Dieser Filter laesst nur Anfragen durch, die in username denselben Eintrag haben wie der Name des angemeldeten Benutzers. http]://example.com/file-cms/home/username/test.txt hier wird ein URL wie z.B. http]://example.com/um/svc/testmethode umgesetzt auf http]://example.com/um/api?c=de.uhilger.um.api.UserMgr&m=testmethode der Teil 'svc' ist im Filter Mapping des Deployment Descriptor deklariert. Der Teil 'api' zeigt mit Hilfe eines Servlet Mappings im Deployment Descriptor auf das Transit-Servlet. der statische Teil des Ziel-URL ist hier hart kodiert, das kann man freilich je nach Bedarf noch dynamisch gestalten */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if(request instanceof HttpServletRequest) { HttpServletRequest hr = (HttpServletRequest) request; logger.info("requestURL: " + hr.getRequestURL().toString()); chain.doFilter(request, response); } /* if(request instanceof HttpServletRequest) { HttpServletRequest hr = (HttpServletRequest) request; String servletPath = hr.getServletPath(); String[] path = servletPath.split("/"); request.getRequestDispatcher(ZIEL + path[2]).forward(request, response); } */ } @Override public void destroy() { // ... } }