/*
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() {
// ...
}
}