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

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;
    }

    /**
     * 展示当前配置
     *
     * @return ModelAndView
     */
    @RequestMapping(value = "getNgixnStatus")
    @ResponseBody
    public BaseResponse getNgixnStatus() {
        //lua
        String luaResponse = httpRestClient.defaultGet(HttpUriContants.VIEW_LUA_CONF, String.class, null);
        //String luaResponse = "-- 1:aws ,2:qq ,3:aws+qq</br>context.cloud_flag = 1</br>";
        String luaType = "aws";
        if (luaResponse.matches(".*context.cloud_flag\\s*=\\s*2.*")) {
            luaType = "qq";
        } else if (luaResponse.matches(".*context.cloud_flag\\s*=\\s*3.*")) {
            luaType = "aws+qq";
        }

        //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")) {
                    qqApiNginx = "aws";
                }
            }
        }

        //dns
        String defaultDns = "aws";
        String qqDns = "qq";

        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
        requestEntity.add("login_token", "14365,5ced8b63875ed1643b9ffeb285180fa9");
        requestEntity.add("format","json");
        requestEntity.add("domain_id", "16862974");
        requestEntity.add("record_id","183941138");

        String requestResponse = httpRestClient.post("https://dnsapi.cn/Record.Info", requestEntity, String.class);
        if (requestResponse.indexOf("amazonaws") == -1){
            defaultDns = "qq";
        }

//        requestEntity.add("record_id","188034065");
//        String request2Response = httpRestClient.post("https://dnsapi.cn/Record.Info", requestEntity, String.class);
//        if (request2Response.indexOf("amazonaws") != -1){
//            qqDns = "aws";
//        }

        Map<String, Object> resultMap = new HashMap<>();
        resultMap.put("luaType", luaType);
        resultMap.put("awsApiNginx", awsApiNginx);
        resultMap.put("awsGrayNginx", awsGrayNginx);
        resultMap.put("qqApiNginx", qqApiNginx);
        resultMap.put("qqGrayNginx", qqGrayNginx);
        resultMap.put("defaultDns", defaultDns);
//        resultMap.put("qqDns", qqDns);

        return new

                BaseResponse(resultMap);
    }


}