TopoSwitchCtrl.java 5.96 KB
package com.ui.ctrl;

import com.alibaba.fastjson.JSONObject;
import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.stereotype.Controller;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

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

/**
 * 限流调整
 *
 * @author bblu 2016-10-26
 */
@Controller
@RequestMapping("topoSwitch")
public class TopoSwitchCtrl {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    HttpRestClient httpRestClient;

    @RequestMapping(value = "toTopoSwitch")
    public ModelAndView toTopoSwitch() {
        ModelAndView mdv = new ModelAndView("switch/switch_topology");
        return mdv;
    }

    @RequestMapping(value = "toAppTopoSwitch")
    public ModelAndView toAppTopoSwitch() {
        ModelAndView mdv = new ModelAndView("switch/switch_topology_app");
        return mdv;
    }

    /**
     * 展示当前配置
     *
     * @return ModelAndView
     */
    @RequestMapping(value = "getNgixnStatus")
    @ResponseBody
    public BaseResponse getNgixnStatus() {
        Map<String, Object> resultMap = new HashMap<>();

        try{
            //lua
            String luaResponse = httpRestClient.defaultGet(HttpUriContants.VIEW_LUA_CONF, String.class, null);
            String luaType = "";
            if(StringUtils.isNotBlank(luaResponse)){
                if (luaResponse.matches(".*context.cloud_flag\\s*=\\s*2.*")) {
                    luaType = "qq";
                } else if (luaResponse.matches(".*context.cloud_flag\\s*=\\s*3.*")) {
                    luaType = "aws+qq";
                } else{
                    luaType = "aws";
                }
            }
            //nginx
            BaseResponse<Map<String, List<Map<String, Object>>>> response = httpRestClient.exchangeForget(HttpUriContants.VIEW_NGINX_CONF, new ParameterizedTypeReference<BaseResponse<Map<String, List<Map<String, Object>>>>>() {
            }, null);
            Map<String, List<Map<String, Object>>> map = response.getData();
            List<Map<String, Object>> awsList = map.get("awsList");
            List<Map<String, Object>> qcloudList = map.get("qcloudList");

            String awsApiNginx = "aws";
            String awsGrayNginx = "aws";
            String qqApiNginx = "qq";
            String qqGrayNginx = "qq";

            for (Map<String, Object> apiMap : awsList) {
                if (StringUtils.equals("apigateway", String.valueOf(apiMap.get("name")))) {
                    List<String> serverList = (List<String>) apiMap.get("server");
                    if (serverList.get(0).startsWith("10")) {
                        awsApiNginx = "qq";
                    }
                }

                if (StringUtils.equals("grayapigateway", String.valueOf(apiMap.get("name")))) {
                    List<String> serverList = (List<String>) apiMap.get("server");
                    if (serverList.get(0).startsWith("10")) {
                        awsGrayNginx = "qq";
                    }
                }
            }

            for (Map<String, Object> apiMap : qcloudList) {
                if (StringUtils.equals("apigateway", String.valueOf(apiMap.get("name")))) {
                    List<String> serverList = (List<String>) apiMap.get("server");
                    if (serverList.get(0).startsWith("172")) {
                        qqApiNginx = "aws";
                    }
                }

                if (StringUtils.equals("grayapigateway", String.valueOf(apiMap.get("name")))) {
                    List<String> serverList = (List<String>) apiMap.get("server");
                    if (serverList.get(0).startsWith("172")) {
                        qqGrayNginx = "aws";
                    }
                }
            }

            //dns
            String defaultDns = "";

            MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
            requestEntity.add("login_token", "31578,5f5402160468dc375159e2e94eeef1da");
            requestEntity.add("format","json");
            requestEntity.add("domain_id", "16862974");
            requestEntity.add("record_id","293178513");

            try{
                String requestResponse = httpRestClient.post("https://dnsapi.cn/Record.Info", requestEntity, String.class);
                JSONObject responseJSON = JSONObject.parseObject(requestResponse);
                JSONObject responseStatus = JSONObject.parseObject(responseJSON.getString("status"));
                if ("1".equals(responseStatus.getString("code"))){
                    if (requestResponse.indexOf("amazonaws") == -1){
                        defaultDns = "qq";
                    }else{
                        defaultDns = "aws";
                    }
                }else{
                    logger.error(" TopoSwitchCtrl - getNgixnStatus - JSON - err:" + responseJSON.getString("message"));
                }
            }catch (Exception e){
                logger.error(" TopoSwitchCtrl - getNgixnStatus - https://dnsapi.cn/Record.Info - err", e);
            }
            resultMap.put("luaType", luaType);
            resultMap.put("awsApiNginx", awsApiNginx);
            resultMap.put("awsGrayNginx", awsGrayNginx);
            resultMap.put("qqApiNginx", qqApiNginx);
            resultMap.put("qqGrayNginx", qqGrayNginx);
            resultMap.put("defaultDns", defaultDns);
        }catch (Exception e){
            logger.error(" TopoSwitchCtrl - getNgixnStatus - err", e);
        }

        return new BaseResponse(resultMap);
    }
}