All Downloads are FREE. Search and download functionalities are using the official Maven repository.

base.jee.servlet.AuditServlet Maven / Gradle / Ivy

/**
 * Creative commons Attribution-NonCommercial license.
 *
 * http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB
 *
 * NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
 */
package base.jee.servlet;

import java.io.IOException;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import base.jee.api.model.AuditLogEntry;
import base.text.StringHelper;
import org.stringtemplate.v4.ST;

import base.jee.Breadcrumb;
import base.jee.JeeBase;
import base.security.User;

/**
 * Show the most recent audit log events. Defaults to returning 2000 most recent
 * log entries. Only includes debug messages if requested and if available.
 */
public class AuditServlet extends BaseServlet {

	private static final long serialVersionUID = 1L;

	public AuditServlet(JeeBase jee) throws IOException {
		super(jee);
	}

	@SuppressWarnings("unchecked")
	public void doGet(String token, User u, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String error = null;

		String type = request.getParameter("type");
		String uid = request.getParameter("uid");
		long limit = 2000;
		boolean debug = request.getParameter("debug") != null && request.getParameter("debug").equalsIgnoreCase("true");

		try {
			limit = Long.parseLong(request.getParameter("limit"));
		} catch(Exception e) {
			limit = 2000;
		}

		List r = null;
		if(request.getParameter("person") != null) {
			r = jee.getAPI().getRecentLogEntriesByPerson(u, UUID.fromString(request.getParameter("person")), debug, limit);
		} else if(request.getParameter("ip") != null) {
			r = jee.getAPI().getRecentLogEntriesByIP(u, request.getParameter("ip"), debug, limit);
		} else {
			r = jee.getAPI().getRecentLogEntries(u, type, uid, debug, limit);
		}

		ST page = jee.getPage(u, "audit");
		page.add("audit", r);
		page.add("error", error);
		page.add("debug", debug);
		if(request.getParameter("person") != null) {
			page.add("filter", "&person=" + StringHelper.urlEscape(request.getParameter("person")));
		} else if(request.getParameter("ip") != null) {
			page.add("filter", "&ip=" + StringHelper.urlEscape(request.getParameter("ip")));
		} else {
			page.add("filter", "");
		}
		page.add("debug_param", debug?"&debug=true":"");
		page.add("breadcrumbs", new Breadcrumb("Audit log", null));

		response.getWriter().write(page.render());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy