/** * OpenKM, Open Document Management System (http://www.openkm.com) * Copyright (c) 2006-2011 Paco Avila & Josep Llort * * No bytes were intentionally harmed during the development of this application. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 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 General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package com.openkm.servlet.admin; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openkm.api.OKMAuth; import com.openkm.core.DatabaseException; import com.openkm.dao.ActivityDAO; import com.openkm.dao.bean.ActivityFilter; import com.openkm.principal.PrincipalAdapterException; import com.openkm.util.UserActivity; import com.openkm.util.WebUtils; /** * Activity log servlet */ public class ActivityLogServlet extends BaseServlet { private static final long serialVersionUID = 1L; private static Logger log = LoggerFactory.getLogger(ActivityLogServlet.class); String actions[] = { "Auth", "LOGIN", "LOGOUT", "SESSION_EXPIRATION", //--------------------------------- "Document", "CANCEL_CHECKOUT_DOCUMENT", "CHECKIN_DOCUMENT", "CHECKOUT_DOCUMENT", "CREATE_DOCUMENT", "DELETE_DOCUMENT", "GET_CHILD_DOCUMENTS", "GET_DOCUMENT_CONTENT", "GET_DOCUMENT_CONTENT_BY_VERSION", "GET_DOCUMENT_PROPERTIES", "GET_DOCUMENT_VERSION_HISTORY", "GET_PROPERTY_GROUP_PROPERTIES", "LOCK_DOCUMENT", "MOVE_DOCUMENT", "PURGE_DOCUMENT", "RENAME_DOCUMENT", "SET_DOCUMENT_CONTENT", "SET_DOCUMENT_PROPERTIES", "UNLOCK_DOCUMENT", "ADD_DOCUMENT_NOTE", //--------------------------------- "Folder", "COPY_FOLDER", "CREATE_FOLDER", "DELETE_FOLDER", "GET_CHILD_FOLDERS", "GET_FOLDER_CONTENT_INFO", "GET_FOLDER_PROPERTIES", "MOVE_FOLDER", "PURGE_FOLDER", "RENAME_FOLDER", //--------------------------------- "Mail", "CREATE_MAIL", "GET_MAIL_PROPERTIES", "DELETE_MAIL", "PURGE_MAIL", "RENAME_MAIL", "MOVE_MAIL", "COPY_MAIL", "GET_CHILD_MAILS", //--------------------------------- "Repository", "PURGE_TRASH", //--------------------------------- "Admin", "ADMIN_ACTIVITY_LOG", "ADMIN_ACTIVE_SESSIONS", "ADMIN_USER_CREATE", "ADMIN_USER_EDIT", "ADMIN_USER_DELETE", "ADMIN_USER_ACTIVE", "ADMIN_ROLE_CREATE", "ADMIN_ROLE_EDIT", "ADMIN_ROLE_DELETE", "ADMIN_ROLE_ACTIVE", "ADMIN_CHECK_EMAIL", "ADMIN_CONFIG_CREATE", "ADMIN_CONFIG_EDIT", "ADMIN_CONFIG_DELETE", "ADMIN_CRONTAB_CREATE", "ADMIN_CRONTAB_EDIT", "ADMIN_CRONTAB_DELETE", "ADMIN_CRONTAB_EXECUTE", "ADMIN_DATABASE_QUERY", "ADMIN_DATABASE_UPDATE", "ADMIN_LANGUAGE_CREATE", "ADMIN_LANGUAGE_EDIT", "ADMIN_LANGUAGE_DELETE", "ADMIN_LANGUAGE_IMPORT", "ADMIN_LOGCAT_LIST", "ADMIN_LOGCAT_VIEW", "ADMIN_LOGGED_USERS", "ADMIN_MAIL_ACCOUNT_CREATE", "ADMIN_MAIL_ACCOUNT_EDIT", "ADMIN_MAIL_ACCOUNT_DELETE", "ADMIN_MAIL_ACCOUNT_CHECK", "ADMIN_MAIL_FILTER_CREATE", "ADMIN_MAIL_FILTER_EDIT", "ADMIN_MAIL_FILTER_DELETE", "ADMIN_MAIL_FILTER_RULE_CREATE", "ADMIN_MAIL_FILTER_RULE_EDIT", "ADMIN_MAIL_FILTER_RULE_DELETE", "ADMIN_MIME_TYPE_CREATE", "ADMIN_MIME_TYPE_EDIT", "ADMIN_MIME_TYPE_DELETE", "ADMIN_USER_PROFILE_CREATE", "ADMIN_USER_PROFILE_EDIT", "ADMIN_USER_PROFILE_DELETE", "ADMIN_PROPERTY_GROUP_REGISTER", "ADMIN_PROPERTY_GROUP_LIST", "ADMIN_REPORT_CREATE", "ADMIN_REPORT_EDIT", "ADMIN_REPORT_DELETE", "ADMIN_REPORT_EXECUTE", "ADMIN_REPOSITORY_SEARCH", "ADMIN_REPOSITORY_REINDEX", "ADMIN_REPOSITORY_UNLOCK", "ADMIN_REPOSITORY_CHECKIN", "ADMIN_REPOSITORY_EDIT", "ADMIN_REPOSITORY_SAVE", "ADMIN_REPOSITORY_LIST", "ADMIN_REPOSITORY_REMOVE_CONTENT", "ADMIN_REPOSITORY_REMOVE_CURRENT", "ADMIN_REPOSITORY_REMOVE_MIXIN", "ADMIN_WORKFLOW_REGISTER", "ADMIN_PROCESS_DEFINITION_DELETE", "ADMIN_PROCESS_INSTANCE_DELETE", "ADMIN_PROCESS_INSTANCE_END", "ADMIN_PROCESS_INSTANCE_RESUME", "ADMIN_PROCESS_INSTANCE_SUSPEND", "ADMIN_PROCESS_INSTANCE_ADD_COMMENT", "ADMIN_PROCESS_INSTANCE_VARIABLE_DELETE", "ADMIN_PROCESS_INSTANCE_VARIABLE_ADD", "ADMIN_TASK_INSTANCE_SET_ACTOR", "ADMIN_TASK_INSTANCE_START", "ADMIN_TASK_INSTANCE_END", "ADMIN_TASK_INSTANCE_SUSPEND", "ADMIN_TASK_INSTANCE_ADD_COMMENT", "ADMIN_TASK_INSTANCE_VARIABLE_DELETE", "ADMIN_TASK_INSTANCE_VARIABLE_ADD", "ADMIN_TASK_INSTANCE_RESUME", "ADMIN_TOKEN_SUSPEND", "ADMIN_TOKEN_RESUME", "ADMIN_TOKEN_END", "ADMIN_TOKEN_SET_NODE", "ADMIN_TOKEN_SIGNAL", "ADMIN_STAMP_IMAGE_CREATE", "ADMIN_STAMP_IMAGE_EDIT", "ADMIN_STAMP_IMAGE_DELETE", "ADMIN_STAMP_IMAGE_ACTIVE", "ADMIN_STAMP_TEXT_CREATE", "ADMIN_STAMP_TEXT_EDIT", "ADMIN_STAMP_TEXT_DELETE", "ADMIN_STAMP_TEXT_ACTIVE", "ADMIN_TWITTER_ACCOUNT_CREATE", "ADMIN_TWITTER_ACCOUNT_EDIT", "ADMIN_TWITTER_ACCOUNT_DELETE", "ADMIN_USER_CONFIG_EDIT", //--------------------------------- "Misc", "MISC_OPENKM_START", "MISC_OPENKM_STOP", "MISC_STATUS", "MISC_TEXT_EXTRACTION_FAILURE" }; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { log.debug("doGet({}, {})", request, response); ServletContext sc = getServletContext(); request.setCharacterEncoding("UTF-8"); String dbegin = WebUtils.getString(request, "dbegin"); String dend = WebUtils.getString(request, "dend"); String user = WebUtils.getString(request, "user"); String action = WebUtils.getString(request, "action"); try { if (!dbegin.equals("") && !dend.equals("")) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); ActivityFilter filter = new ActivityFilter(); Calendar begin = Calendar.getInstance(); begin.setTime(sdf.parse(dbegin)); filter.setBegin(begin); Calendar end = Calendar.getInstance(); end.setTime(sdf.parse(dend)); filter.setEnd(end); filter.setUser(user); filter.setAction(action); sc.setAttribute("results", ActivityDAO.findByFilter(filter)); // Activity log UserActivity.log(request.getRemoteUser(), "ADMIN_ACTIVITY_LOG", null, null); } else { sc.setAttribute("results", null); } sc.setAttribute("dbeginFilter", dbegin); sc.setAttribute("dendFilter", dend); sc.setAttribute("userFilter", user); sc.setAttribute("actionFilter", action); sc.setAttribute("actions", actions); sc.setAttribute("users", OKMAuth.getInstance().getUsers(null)); sc.getRequestDispatcher("/admin/activity_log.jsp").forward(request, response); } catch (ParseException e) { sendErrorRedirect(request, response, e); } catch (DatabaseException e) { sendErrorRedirect(request, response, e); } catch (PrincipalAdapterException e) { sendErrorRedirect(request, response, e); } } }