package edu.sjtu.infosec.ismp.manager.AIM.web.actions;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.infosec.ismp.manager.rmi.comm.model.SystemModelInfo;
import org.infosec.ismp.manager.rmi.lm.pfLog.model.SystemLog;
import edu.sjtu.infosec.ismp.manager.AIM.model.AlertRuleBO;
import edu.sjtu.infosec.ismp.manager.AIM.model.AlertTypeBO;
import edu.sjtu.infosec.ismp.manager.AIM.service.AlertRuleService;
import edu.sjtu.infosec.ismp.manager.AIM.web.dwr.AlertDwrServices;
import edu.sjtu.infosec.ismp.manager.AIM.web.form.AlertRuleForm;
import edu.sjtu.infosec.ismp.manager.LM.pfLog.service.SystemLogService;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.comm.SecurityUserHolder;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.service.DomainService;
import edu.sjtu.infosec.ismp.manager.SYSM.user.self.service.UserService;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
import edu.sjtu.infosec.ismp.manager.comm.model.page.PageResult;
import edu.sjtu.infosec.ismp.security.Domain;
import edu.sjtu.infosec.ismp.security.OperatorDetails;
import edu.sjtu.infosec.ismp.security.Role;
public class AlertRuleAction extends DispatchAction {
// 注入告警规则service层接口
private AlertRuleService alertRuleService;
//查询类型所对应的子类型
private AlertDwrServices alertDwrService;
private UserService userService;
private DomainService domainService;
private SystemLogService systemlogService;
public void setSystemlogService(SystemLogService systemlogService) {
this.systemlogService = systemlogService;
}
SystemLog log;
String rolenames;
String username;
OperatorDetails user;
void init(){
user = SecurityUserHolder.getCurrentUser();
username = user.getUsername();
rolenames="";
for(Role role : user.getRoleList()){
rolenames = rolenames+role.getName();
}
log = new SystemLog();
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public void setAlertDwrService(AlertDwrServices alertDwrService) {
this.alertDwrService = alertDwrService;
}
public void setAlertRuleService(AlertRuleService alertRuleService) {
this.alertRuleService = alertRuleService;
}
public void setDomainService(DomainService domainService) {
this.domainService = domainService;
}
// 查询所有的告警规则信息并且分页显示
public ActionForward getPageAlertRule(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
AlertRuleBO alertRuleBo = new AlertRuleBO();
try{
init();
Integer disuse = null;
Page page = new Page();
// 获得当前页
String curpage = request.getParameter("curpage") != null
&& (!request.getParameter("curpage").equals("")) ? request
.getParameter("curpage") : "1";
if(request.getAttribute("curpage")!=null && !request.getAttribute("curpage").equals("")){
curpage=(String)request.getAttribute("curpage");
}
// 设置当前页跟开始位置
page.setCurrentPage(Integer.parseInt(curpage));
page.setBeginIndex((page.getCurrentPage() - 1) * page.getEveryPage());
OperatorDetails user = SecurityUserHolder.getCurrentUser();
if(user.getUsername().equals("admin")){
PageResult result = alertRuleService.getPageAlertRuleService(page,
alertRuleBo);
request.setAttribute("page", result.getPage());
request.setAttribute("list", result.getPageList());
}else{
List<Domain> list = user.getDomainList();
PageResult result = alertRuleService.getPageAlertRuleService(page,alertRuleBo,list);
request.setAttribute("page", result.getPage());
request.setAttribute("list", result.getPageList());
}
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("查询所有的告警规则信息并且分页显示");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return mapping.findForward("alertRuleIndex");
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("查询所有的告警规则信息并且分页显示");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 查询所有的告警规则信息并且分页显示
public ActionForward getPageAlertRuleDisuse(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
AlertRuleBO alertRuleBo = new AlertRuleBO();
try{
init();
Integer disuse = null;
if (request.getParameter("disuse") != null) {
disuse = Integer.parseInt(request.getParameter("disuse"));
}
alertRuleBo.setDeprecated(disuse);
Page page = new Page();
// 获得当前页
String curpage = request.getParameter("curpage") != null
&& (!request.getParameter("curpage").equals("")) ? request
.getParameter("curpage") : "1";
// 设置当前页跟开始位置
page.setCurrentPage(Integer.parseInt(curpage));
page.setBeginIndex((page.getCurrentPage() - 1) * page.getEveryPage());
PageResult result = alertRuleService.getPageAlertRuleService(page,
alertRuleBo);
request.setAttribute("page", result.getPage());
request.setAttribute("list", result.getPageList());
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("查询所有的告警规则信息并且分页显示");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return mapping.findForward("alertRuleDisuse");
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("查询所有的告警规则信息并且分页显示");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 删除告警规则信息
public ActionForward deleteAlertRule(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.setAttribute("operation", "删除告警规则信息");
try{
init();
String curpage = (request.getParameter("currpage") == null ||request.getParameter("currpage").equals(""))? "1"
: request.getParameter("currpage");
request.setAttribute("curpage", curpage);
String rules[] = request.getParameterValues("ruleCheckbox");
if (rules != null) {
for (String string : rules) {
alertRuleService.deleteAlterRuleService(Integer
.parseInt(string));
}
}
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("删除告警规则信息");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return this.getPageAlertRule(mapping, form, request, response);
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("删除告警规则信息");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 根据ID 查询单个的告警信息
public ActionForward getByIdAlertRule(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
AlertRuleForm alertRuleForm = (AlertRuleForm) form;
String alertId = request.getParameter("alertRuleId");
AlertRuleBO alertRulebo =null;
try{
init();
if (alertId != null && (!alertId.equals(""))) {
alertRulebo=alertRuleService.getByIdAlertRuleService(Integer.parseInt(alertId));
alertRuleForm.setAlertRulebo(alertRulebo);
if(alertRulebo.getDeparmentId()!=null && alertRulebo.getDeparmentId().toString().trim().length()!=0){
// ManagerBO department = managerService.getManagerByIdService(alertRulebo.getDeparmentId());
Domain domain = domainService.findById(alertRulebo.getDeparmentId());
request.setAttribute("department", domain);
}
request.setAttribute("alertRulebo", alertRulebo);
}
if (request.getParameter("update") != null) {
//根据类型查找子类型
List<AlertTypeBO> subTypeList=new ArrayList();
if(alertRulebo!=null){
subTypeList=alertDwrService.getSubTypeByNameService(alertRulebo.getType());
}
request.setAttribute("curpage", request.getParameter("curpage"));
request.setAttribute("subTypeList", subTypeList);
return mapping.findForward("alertRuletUpdate");
}
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("根据ID 查询单个的告警信息");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return mapping.findForward("alertRulePart");
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("根据ID 查询单个的告警信息");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 添加告警规则信息
public ActionForward addAssetRule(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.setAttribute("operation", "添加告警规则信息");
AlertRuleForm alertRuleForm = (AlertRuleForm) form;
try{
init();
//判读是否重复提交
if(isTokenValid(request)){
AlertRuleBO alertRuleBo = new AlertRuleBO();
alertRuleBo = alertRuleForm.getAlertRulebo();
alertRuleForm.reset();
alertRuleService.saveAlertRuleService(alertRuleBo);
resetToken(request);
}else{
saveToken(request);
}
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("添加告警规则信息");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return this.getPageAlertRule(mapping, alertRuleForm, request, response);
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("添加告警规则信息");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 更新告警规则信息
public ActionForward updateAlertRule(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.setAttribute("operation", "更新告警规则信息");
try{
init();
AlertRuleForm alertRuleForm = (AlertRuleForm) form;
AlertRuleBO alertRuleBo = new AlertRuleBO();
alertRuleBo = alertRuleForm.getAlertRulebo();
alertRuleBo.setEmailTarget(request.getParameter("alertRulebo.emailTarget"));
alertRuleBo.setMsgTarget(request.getParameter("alertRulebo.msgTarget"));
alertRuleBo.setSmsTarget(request.getParameter("alertRulebo.smsTarget"));
alertRuleForm.reset();
//调用service方法执行更新
alertRuleService.updateAlterRuleService(alertRuleBo);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("更新告警规则信息");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return this.getPageAlertRule(mapping, alertRuleForm, request, response);
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("更新告警规则信息");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
// 根据告警信息提供的可能多个ID查询相应的告警规则
public ActionForward getAlertRules(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String rules = request.getParameter("alertRuleId");
// 如果不为空就根据ID 查询出
try{
init();
List<AlertRuleBO> list=new ArrayList<AlertRuleBO>();
if (rules != null && rules.length() > 0) {
String rulesId[] = rules.split(",");
if (rulesId != null && rulesId.length > 0) {
for (String string : rulesId) {
AlertRuleBO alertRulebo = alertRuleService
.getByIdAlertRuleService(Integer.parseInt(string));
if (alertRulebo != null) {
list.add(alertRulebo);
}
}
}
}
request.setAttribute("list", list);
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("根据告警信息提供的可能多个ID查询相应的告警规则");
log.setControl("成功");
systemlogService.saveSystemLog(log);
return mapping.findForward("alertToRule");
}catch(Exception e){
log.setUsername(username);
log.setRoleName(rolenames);
log.setTime(new Timestamp(new Date().getTime()));
log.setModuleName(SystemModelInfo.MOD_AIM);
log.setOperationDesc("根据告警信息提供的可能多个ID查询相应的告警规则");
log.setControl("失败");
systemlogService.saveSystemLog(log);
return null;
}
}
//添加告警规则的界面跳转
public ActionForward forward(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if(request.getParameter("add")!=null){
saveToken(request);
return mapping.findForward("addAlertRule");
}
return null;
}
//跳转
public ActionForward alertFind(ActionMapping mapping,ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
session.setAttribute("topcss", "alertFind");
return mapping.findForward("alertFind");
}
//跳转
public ActionForward alertFindFrame(ActionMapping mapping,ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
session.setAttribute("topcss", "alertFindFrame");
return mapping.findForward("alertFindFrame");
}
}