MaliciousIpCtrl.java 8.25 KB
package com.ui.ctrl;

import com.alibaba.fastjson.JSON;
import com.ui.common.IpRuleConcatEnum;
import com.ui.common.IpRuleItemEnum;
import com.ui.common.IpRuleOperationEnum;
import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import com.ui.model.domain.MalIpRule;
import com.ui.model.req.MaliciousIpRecordReq;
import com.ui.model.req.PageRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/maliciousIp")
public class MaliciousIpCtrl {

    @Autowired
    private HttpRestClient httpClient;

    @RequestMapping("/toMaliciousIps")
	public ModelAndView toMaliciousIps(Model model) {
		return new ModelAndView("malicious/maliciousIpList");
	}

	@RequestMapping("/toMaliciousIpsNew")
	public ModelAndView toMaliciousIpsNew(Model model) {
		return new ModelAndView("malicious/maliciousIpListNew");
	}

	@RequestMapping("/toMaliciousIpRecordList")
	public ModelAndView toMaliciousIpRecordList(Model model) {
		return new ModelAndView("malicious/maliciousIpRecordList");
	}

	@RequestMapping("/toMaliciousIpRecordForbidList")
	public ModelAndView toMaliciousIpRecordForbidList(Model model) {
		return new ModelAndView("malicious/maliciousIpRecordForbidList");
	}

	/**
	 * 从运维系统的mysql获取恶意ip
	 * @return
	 */
	@RequestMapping("/getMaliciousIpRecordList")
	@ResponseBody
	public BaseResponse getMaliciousIpRecordList(MaliciousIpRecordReq req) {
		BaseResponse response = httpClient.defaultPost(HttpUriContants.GET_MIPS_RECORD_FROM_OPS_DB, req,
				BaseResponse.class);
		return response;
	}

	/**
	 * 从运维系统的mysql获取恶意ip-封sha
	 * @return
	 */
	@RequestMapping("/getMaliciousIpRecordForbidList")
	@ResponseBody
	public BaseResponse getMaliciousIpRecordForbidList(MaliciousIpRecordReq req) {
		BaseResponse response = httpClient.defaultPost(HttpUriContants.GET_MIPS_RECORD_FROM_OPS_DB_FORBID, req,
				BaseResponse.class);
		return response;
	}

	/**
	 * 获取hbase信息
	 * @return
	 */
	@RequestMapping("/getMaliciousDetection")
	@ResponseBody
	public BaseResponse getMaliciousDetection(MaliciousIpRecordReq req) {
		if(StringUtils.isBlank(req.getIp())||req.getTimestamp()<=0){
			return null;
		}
		BaseResponse response = httpClient.defaultPost(HttpUriContants.GET_MIPS_RECORD_FROM_OPS_HBASE, req,
				BaseResponse.class);
		return response;
	}

	@RequestMapping("/getMaliciousDetectionBeforeMin")
	@ResponseBody
	public BaseResponse getMaliciousDetectionBeforeMin(MaliciousIpRecordReq req) {
		if(StringUtils.isBlank(req.getIp())||req.getTimestamp()<=0){
			return null;
		}
		BaseResponse response = httpClient.defaultPost(HttpUriContants.GET_MIPS_RECORD_FROM_OPS_HBASE_MIN, req,
				BaseResponse.class);
		return response;
	}



	/**
	 * 从运维系统的redis获取恶意ip
	 * @return
	 */
	@RequestMapping("/getMipsFromOpsReids")
	@ResponseBody
	public BaseResponse<List<Object>> getMipsFromOpsReids(MaliciousIpRecordReq req) {
		BaseResponse<List<Object>> response = httpClient.defaultPost(HttpUriContants.GET_MIPS_FROM_OPS_REIDS, req,
				BaseResponse.class);
		return response;
	}

	/**
	 * first调用相关系统提供的接口从正式封杀环境中删除,再从运维系统的redis删除恶意ip
	 * @return
	 */
	@RequestMapping("/delMipsFromOpsRedis")
	@ResponseBody
	public BaseResponse delMipsFromOpsRedis(String ip){
		BaseResponse response = httpClient.defaultPost(HttpUriContants.DEL_MIPS_FROM_OPS_REDIS+"?ip="+ip, null,
				BaseResponse.class);
		return response;
	}

	/**
	 * first调用相关系统提供的接口从正式封杀环境中删除,再从运维系统的redis删除恶意ip
	 * @return
	 */
	@RequestMapping("/addMipsFromOpsRedis")
	@ResponseBody
	public BaseResponse addMipsFromOpsRedis(String ip){
		BaseResponse response = httpClient.defaultPost(HttpUriContants.ADD_MIPS_FROM_OPS_REDIS+"?ip="+ip, null,
				BaseResponse.class);
		return response;
	}
    
    @RequestMapping("/showDetail")
	public ModelAndView showDetail(Model model, String ip, String count, String type, String timeType, String timestamp) {
    	ModelAndView mdv = new ModelAndView("malicious/maliciousIpDetail");
    	mdv.addObject("type", type);
        mdv.addObject("ip", ip);
        mdv.addObject("count", count);
        mdv.addObject("timeType", timeType);
        mdv.addObject("timestamp", timestamp);
		return mdv;
	}
    
    @SuppressWarnings("unchecked")
	@RequestMapping("/getIps")
    @ResponseBody
	public BaseResponse<List<Object>> getIps(Model model,String timeType) {
		BaseResponse<List<Object>> response = httpClient.defaultPost(HttpUriContants.GET_MALICIOUS_IP+"?timeType="+timeType, null,
				BaseResponse.class);
		return response;
	}
    
    @SuppressWarnings("unchecked")
	@RequestMapping("/getDetail")
    @ResponseBody
	public BaseResponse<List<Object>> getDetail(Model model, String ip, String count,String timeType, String timestamp) {
		BaseResponse<List<Object>> response = httpClient.defaultGet(HttpUriContants.GET_MALICIOUS_DETAIL + "?ip=" + ip + "&count=" + count + "&timeType=" + timeType + "&timestamp=" + timestamp,
				BaseResponse.class);
		return response;
	}
    
    @SuppressWarnings("unchecked")
	@RequestMapping("/uploadIp")
    @ResponseBody
	public BaseResponse<Object> uploadIp(UpLoadMaliciousIp ips) {
		BaseResponse<Object> response = httpClient.defaultPost(HttpUriContants.GET_MALICIOUS_UPLOADIP, ips,
				BaseResponse.class);
		return response;
	}
    
    @RequestMapping("/showIps")
	public ModelAndView showIps(Model model, String ip, String count) {
    	return new ModelAndView("malicious/maliciousIpLook");
	}
    
    @SuppressWarnings("unchecked")
	@RequestMapping("/lookIps")
    @ResponseBody
	public BaseResponse<List<Object>> lookIps(Model model) {
		BaseResponse<List<Object>> response = httpClient.defaultPost(HttpUriContants.GET_MALICIOUS_LOOKIP, null,
				BaseResponse.class);
		return response;
	}
    
    /**
     * 从黑名单中移除ip
     * @param ips
     * @return
     */
    @SuppressWarnings("unchecked")
	@RequestMapping("/removeIp")
    @ResponseBody
	public BaseResponse<Object> removeIp(UpLoadMaliciousIp ips) {
		BaseResponse<Object> response = httpClient.defaultPost(HttpUriContants.GET_MALICIOUS_REMOVEIP, ips,
				BaseResponse.class);
		return response;
	}


	/**
	 * 恶意ip规则管理**/
	@RequestMapping("/toMaliciousIpRules")
	public ModelAndView toMaliciousIpRules(Model model) {
		List<Map<String,String>> itemList = IpRuleItemEnum.getAll();//规则项
		String items = JSON.toJSONString(itemList);
		List<String> opList = IpRuleOperationEnum.getAllOp();//规则比较符 列表
		String operations = JSON.toJSONString(opList);
		List<String> concatList = IpRuleConcatEnum.getAll();//规则连接符
		String concats = JSON.toJSONString(concatList);

		ModelAndView mv = new ModelAndView();
		mv.setViewName("malicious/maliciousIpRulesList");
		mv.addObject("items",items);
		mv.addObject("operations",operations);
		mv.addObject("concats",concats);
		return mv;
	}

	/***
	 * 查询 恶意ip规则列表*/
	@RequestMapping("/getIpRules")
	@ResponseBody
	public BaseResponse getIpRules(PageRequest req) {
		BaseResponse response = httpClient.defaultPost(HttpUriContants.GET_MALICIOUS_IP_RULES, req, BaseResponse.class);
		return response;
	}

	/***
	 * 新增 恶意ip规则*/
	@RequestMapping("/saveIpRules")
	@ResponseBody
	public BaseResponse saveIpRules(@RequestBody MalIpRule malIpRule) {
		BaseResponse response = httpClient.defaultPost(HttpUriContants.SAVE_MALICIOUS_IP_RULES, malIpRule, BaseResponse.class);
		return response;
	}

	/***
	 * 删除 恶意ip规则*/
	@RequestMapping("/deleteIpRule")
	@ResponseBody
	public BaseResponse deleteIpRule(int id ) {
		BaseResponse response = httpClient.defaultPost(HttpUriContants.DEL_MALICIOUS_IP_RULE + "?id="+id, null, BaseResponse.class);
		return response;
	}

	@RequestMapping("/toMaliciousIpFilterList")
	public ModelAndView maliciousIpFilterList(){
		return new ModelAndView("malicious/maliciousIpFilterList");
	}




}