OuterIntfCtrl.java 4.73 KB
package com.ui.ctrl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Sets;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import com.ui.model.MonitAlarmInfo;
import com.ui.model.WebHooksReleaseBO;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.*;

/**
 * 
 * @author yoho
 * 对外提供接口
 *
 */
@Controller
@RequestMapping("/outer")
public class OuterIntfCtrl {

	Logger log = LoggerFactory.getLogger(OuterIntfCtrl.class);
	
	@Autowired
    private HttpRestClient httpClient;

	/**
	 * 对外接口,提供报警
	 * @param info
	 * @return
	 */
	@RequestMapping("/recvMonitAlarm")
	@ResponseBody
	public BaseResponse recvMonitAlarm(@RequestBody MonitAlarmInfo info){
		BaseResponse response=httpClient.defaultPost("/recvMonitAlarm",info,BaseResponse.class);
		return response;
	}

	/**
	 * 对外接口,提供报警
	 * @param info   短信内容
	 * @param mobiles  手机号码,多个号码以逗号分隔
	 * @return
	 */
	@RequestMapping("/recvMonitAlarmInfo")
	@ResponseBody
	public BaseResponse recvMonitAlarmInfo(String info,String mobiles){
		Map<String,String> map=new HashMap<>();
		map.put("info",info);
		map.put("mobiles",mobiles);
		BaseResponse response=httpClient.defaultGet("/recvMonitAlarmInfo",BaseResponse.class,map);;
		return response;
	}

	/**
	 * 捕获的恶意ip写入运维系统的redis
	 * 自动封杀和告警提示
	 * @return
	 */
	@RequestMapping("/writeMipsObjToOpsReids")
	@ResponseBody
	public void writeMipsObjToOpsReids(@RequestBody String ipsObjs) {
		httpClient.defaultPostJson("/maliciousIp/writeMipsObjToOpsReids",ipsObjs,String.class);
	}

	/**
	 * 捕获的恶意ip写入运维系统的mysql
	 * 大数据算法
	 * @return
	 */
	@RequestMapping("/writeMipsInfoToOpsDb")
	@ResponseBody
	public void writeMipsInfoToOpsDb(@RequestBody String ipsObjs) {
		httpClient.defaultPostJson("/maliciousIp/writeMipsInfoToOpsDb",ipsObjs,String.class);
	}

	/**
	 * dock自动发布类型的项目
	 */
	@RequestMapping("/gitWebHook")
	@ResponseBody
	public BaseResponse gitWebHook(@RequestBody com.alibaba.fastjson.JSONObject jsonObject) throws Exception {
		log.info("gitWebHookAppCollectLog get the webhook from git begin --{}", jsonObject.toJSONString());
		WebHooksReleaseBO bo=releaseWebHooksNoCommits(jsonObject);
		return httpClient.defaultPost("/dockerProject/gitWebHook",bo,BaseResponse.class);
	}

	private WebHooksReleaseBO releaseWebHooksNoCommits(JSONObject jsonObject) {
		WebHooksReleaseBO webHooksReleaseBO = new WebHooksReleaseBO();
		String object_kind = jsonObject.getString("object_kind");
		String ref = jsonObject.getString("ref");
		String userName = jsonObject.getString("user_name");
		String userEmail = jsonObject.getString("user_email");
		Integer total_commits_count = jsonObject.getInteger("total_commits_count");
		String projectName = jsonObject.getJSONObject("project").getString("name");
		String projectNameSpace = jsonObject.getJSONObject("project").getString("namespace");
		String gitUrl = jsonObject.getJSONObject("project").getString("ssh_url");
		Set<String> list = Sets.newHashSet();
		JSONArray jsonArrays = jsonObject.getJSONArray("commits");
		Iterator<Object> it = jsonArrays.iterator();
		while (it.hasNext()) {
			JSONObject ob = (JSONObject) it.next();
			JSONArray jsonArrayAdded = ob.getJSONArray("added");
			JSONArray jsonArrayModified = ob.getJSONArray("modified");
			JSONArray jsonArrayRemoved = ob.getJSONArray("removed");
			addChange(jsonArrayAdded, list);
			addChange(jsonArrayModified, list);
			addChange(jsonArrayRemoved, list);
		}
		webHooksReleaseBO.setChangFileForDockerFile(list);
		webHooksReleaseBO.setObject_kind(object_kind);
		webHooksReleaseBO.setRef(ref);
		webHooksReleaseBO.setTotal_commits_count(total_commits_count);
		webHooksReleaseBO.setProjectName(projectName);
		webHooksReleaseBO.setProjectNameSpace(projectNameSpace);
		webHooksReleaseBO.setGitUrl(gitUrl);
		webHooksReleaseBO.setUser_name(userName);
		webHooksReleaseBO.setUser_email(userEmail);
		return webHooksReleaseBO;
	}

	private void addChange(JSONArray jsonArray, Set<String> list) {
		if (Objects.nonNull(jsonArray) && jsonArray.size() > NumberUtils.INTEGER_ZERO) {
			for (int i = 0; i < jsonArray.size(); i++) {
				String newAdd = jsonArray.get(i).toString();
				if (StringUtils.isNotBlank(newAdd)) {
					list.add(newAdd);
				}
			}
		}
	}



}