public class CommonUtils {
	
	private static final Logger log = LogManager.getLogger(CommonUtils.class);
	private static final String[] HEADERS = { "J-Forwarded-For", "x-forwarded-for", "Proxy-Client-IP",
			"WL-Proxy-Client-IP" };
	public static final String LOCAL_ADDRESS;
	static {
		String localAddress = null;
		try {
			localAddress = InetAddress.getLocalHost().getHostAddress();
			if (StringUtils.isBlank(localAddress)) {
				localAddress= InetAddress.getLocalHost().getHostName();
			}
		} catch (UnknownHostException e) {
			log.error("InetAddress.getLocalHost().getHostAddress() exception. {}, {}.", e.getClass().getSimpleName(), e.getMessage());
		}
		LOCAL_ADDRESS = localAddress;
	}
	public static String getUserIp(HttpServletRequest request) {
		for (String key : HEADERS) {
			String ip = request.getHeader(key);
			ip = chooseFirst(ip);
			if (ip != null) {
				return ip;
			}
		}
		return "";
	}
	private static String chooseFirst(String ipList) {
		if (isBlank(ipList)) {
			return null;
		}
		String[] ipArray = ipList.split(",");
		for (String ip : ipArray) {
			if (isBlank(ip) || "unknown".equalsIgnoreCase(ip.trim())) {
				continue;
			}
			return ip.trim();
		}
		return null;
	}
	public static int IP2Integer(String netId) {
		String[] array = netId.split("\\.");
		int part0 = Integer.parseInt(array[0]) << 24;
		int part1 = Integer.parseInt(array[1]) << 16;
		int part2 = Integer.parseInt(array[2]) << 8;
		int part3 = Integer.parseInt(array[3]);
		return part0 + part1 + part2 + part3;
	}
	public static boolean isBlank(String str) {
		int strLen;
		if (str == null || (strLen = str.length()) == 0) {
			return true;
		}
		for (int i = 0; i < strLen; i++) {
			if ((Character.isWhitespace(str.charAt(i)) == false)) {
				return false;
			}
		}
		return true;
	}
	
	
	
	private static ObjectMapper mapper = new ObjectMapper();
	
	static {
		mapper.setSerializationInclusion(Include.NON_NULL);
		mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
	}
	public static String write2JsonStr(Object o) {
		String jsonStr = "";
		try {
			jsonStr = mapper.writeValueAsString(o);
		} catch (JsonProcessingException e) {
			log.error("write2JsonStr() exception: " + e.getMessage());
		}
		return jsonStr;
	}
	public static Object json2Object(String json, Class<?> clazz) {
		try {
			return mapper.readValue(json, clazz);
		} catch (JsonParseException e) {
			log.error("json2Object() parseException: " + e.getMessage());
		} catch (JsonMappingException e) {
			log.error("json2Object() mappingException: " + e.getMessage());
		} catch (IOException e) {
			log.error("json2Object() IOException: " + e.getMessage());
		}
		return null;
	}
	@SuppressWarnings("unchecked")
	public static Map<String, Object> json2Map(String json) {
		try {
			if (StringUtils.isBlank(json)) {
				return new HashMap<String, Object>();
			}
			return mapper.readValue(json, Map.class);
		} catch (JsonParseException e) {
			log.error("json2Map(), 出错的json内容:" + json + " ,JsonParseException: " + e.getMessage());
		} catch (JsonMappingException e) {
			log.error("json2Map(), 出错的json内容:" + json + " ,JsonMappingException: " + e.getMessage());
		} catch (IOException e) {
			log.error("json2Map(), 出错的json内容为:" + json + " ,IOException: " + e.getMessage());
		}
		return new HashMap<String, Object>();
	}
	@SuppressWarnings("unchecked")
	public static List<Map<String, Object>> jsonArray2List(String jsonArray) {
		try {
			return mapper.readValue(jsonArray, List.class);
		} catch (JsonParseException e) {
			log.error("jsonArray2List() exception, 异常字符串: " + jsonArray, e);
		} catch (JsonMappingException e) {
			log.error("jsonArray2List() exception, 异常字符串: " + jsonArray, e);
		} catch (IOException e) {
			log.error("jsonArray2List() exception", e);
		}
		return new ArrayList<Map<String, Object>>();
	}
	
	
	public static String getMatchedCookieValue(Cookie[] cookies, String cookieName) {
		if (cookieName == null || cookies == null || cookies.length == 0) {
			return null;
		}
		for (Cookie cookie : cookies) {
			String currentName = cookie.getName();
			if (cookieName.equals(currentName)) {
				return cookie.getValue();
			}
		}
		return null;
	}
    
protected void sendEmail(String subject, String content, Set<String> toEmails, Set<String> bccEmails) {
        if (StringUtils.isBlank(content)) {
            return;
        }
       
        Properties properties = new Properties();
        properties.put("mail.smtp.host", smtpHost);
        properties.put("mail.smtp.auth", "true");
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, pwd);
            }
        });
        MimeMessage message = new MimeMessage(session);
        InternetAddress fromAddress;
        try {
            fromAddress = new InternetAddress(email);
        } catch (AddressException e) {
            logger.error("init from address exception, ", e);
           
            return;
        }
        try {
            message.setFrom(fromAddress);
        } catch (MessagingException e) {
            logger.error("message set from exception, ", e);
           
            return;
        }
        if (toEmails != null && toEmails.size() > 0) {
        InternetAddress[] toAddresses = new InternetAddress[toEmails.size()];
        int index = 0;
        for (String email : toEmails) {
            try {
                toAddresses[index] = new InternetAddress(email);
                ++index;
            } catch (AddressException e) {
                logger.error("init to address exception, address: " + email, e);
                
            }
        }
        try {
            message.addRecipients(Message.RecipientType.TO, toAddresses);
        } catch (MessagingException e) {
            logger.error("addRecipients exception, toEmails: " + toEmails, e);
            
        }
        }
        if (bccEmails != null && bccEmails.size() > 0) {
        	InternetAddress[] bccAddresses = new InternetAddress[bccEmails.size()];
            int index = 0;
            for (String email : bccEmails) {
                try {
                    bccAddresses[index] = new InternetAddress(email);
                    ++index;
                } catch (AddressException e) {
                	logger.error("init to address exception, address: " + email, e);
                   
                }
            }
            try {
                message.addRecipients(Message.RecipientType.BCC, bccAddresses);
            } catch (MessagingException e) {
            	logger.error("addRecipients exception, bccEmails: " + bccEmails, e);
                
            }
        }
        try {
            message.setSubject(subject);
            message.setContent(content, "text/html;charset=utf-8");
        } catch (MessagingException e) {
            logger.error("message set content exception, subject: " + subject + ", content: " + content, e);
           
            return;
        }
        try {
            javaMailSender.send(message);
        } catch (MailException e) {
            logger.error("javaMailSender send mail exception, content:{}, toEmails:{}, {}, {}. ", content, toEmails, e.getClass().getSimpleName(), e.getMessage());
          
        }
        Profiler.registerInfoEnd(callerInfo);
    }
    private String readVm(String vmPath) {
        SAXReader reader = new SAXReader();
        String content = null;
        String path = null;
        try {
            String classesPath = getClass().getClassLoader().getResource("").toString();
            path = classesPath.substring("file:".length(), classesPath.length() - "classes/".length()) + vmPath;
            Document document = reader.read(new File(path));
            Element element = document.getRootElement();
            Element elementHtml = element.element("html");
            content = elementHtml.asXML();
        } catch (DocumentException e) {
            logger.error("read mail template exception, path: " + path, e);
        }
        return content;
    }
    protected String getBatchVipUpdateNotice(List<Map<String, NewDnsOperInfo>> list) {
        String vmPath = "vm/mailtemplate/emai.vm";
        String content = generatorEmailContent(list, vmPath);
        return content;
    }
    
	private String generatorEmailContent(List<Map<String, NewDnsOperInfo>> list, String vmPath) {
		String result = "";
		try {
	         VelocityEngine ve = new VelocityEngine();
	         String classesPath = getClass().getClassLoader().getResource("").toString();
	         String path = classesPath.substring("file:".length(), classesPath.length() - "classes/".length());
	         ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, path);
			 ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
			 ve.init();
			 
			 Template t = ve.getTemplate(vmPath ,"utf-8");
			 VelocityContext ctx = new VelocityContext();
			 
			 ctx.put("result", list);
			 StringWriter sw = new StringWriter();
			 t.merge(ctx, sw);
			 result = sw.toString();
		}catch(Exception e) {
			logger.error("generator email templete error !",e);
		}
		return result;
	}
}
                    
                
                
                
            
        
浙公网安备 33010602011771号