package com.energy.manage.service.util;

import org.apache.commons.lang3.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author chy
 * @date 2024/7/9 14:08
 * @desc
 */
public class NetUtils {


    /**
     * 内网前缀
     */
    private final static String INTRANET_PREFIX = "192.168";

    /**
     * 内网前缀
     */
    private final static String LOCAL_PREFIX = "127.0.0";

    /**
     * ip:port 正则
     */
    private final static String IP_PORT_REGEX = "^(http[s]?://)?([^:/\\s]+)(:)+[0-9]{1,}/";


    /**
     * 判断当前host 是否是内网
     * @param ip
     * @return
     */
    public static boolean isIntranet(String ip) {
        if(StringUtils.isBlank(ip)){
            return false;
        }
        return StringUtils.startsWithAny(ip,INTRANET_PREFIX,LOCAL_PREFIX);
    }

    /**
     * 根据url获取IP地址与端口号
     * @param url
     * @return
     */
    public static String getIpAndPort(String url){
        if(StringUtils.isBlank(url)){
            return null;
        }
        Pattern p = Pattern.compile(IP_PORT_REGEX);
        Matcher matcher = p.matcher(url);
        return matcher.find() ? matcher.group() : null ;
    }
}
