|  |  |  | 
|---|
|  |  |  | package com.doumee.core.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.springframework.http.HttpHeaders; | 
|---|
|  |  |  | import org.springframework.http.server.reactive.ServerHttpRequest; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.http.HttpServletRequest; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public String getOS(HttpServletRequest request) { | 
|---|
|  |  |  | String browserDetails = request.getHeader("User-Agent"); | 
|---|
|  |  |  | String userAgent = browserDetails.toLowerCase(); | 
|---|
|  |  |  | String os; | 
|---|
|  |  |  | if (userAgent.indexOf("windows") >= 0) { | 
|---|
|  |  |  | os = "Windows"; | 
|---|
|  |  |  | } else if (userAgent.indexOf("mac") >= 0) { | 
|---|
|  |  |  | os = "Mac"; | 
|---|
|  |  |  | } else if (userAgent.indexOf("x11") >= 0) { | 
|---|
|  |  |  | os = "Unix"; | 
|---|
|  |  |  | } else if (userAgent.indexOf("android") >= 0) { | 
|---|
|  |  |  | os = "Android"; | 
|---|
|  |  |  | } else if (userAgent.indexOf("iphone") >= 0) { | 
|---|
|  |  |  | os = "IPhone"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | os = "UnKnown, More-Info: " + userAgent; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return os; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public String getOS(ServerHttpRequest request) { | 
|---|
|  |  |  | String browserDetails = request.getHeaders().getFirst("User-Agent"); | 
|---|
|  |  |  | String userAgent = browserDetails.toLowerCase(); | 
|---|
|  |  |  | String os; | 
|---|
|  |  |  | if (userAgent.indexOf("windows") >= 0) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return browser; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public String getBrowser(ServerHttpRequest request) { | 
|---|
|  |  |  | String browserDetails = request.getHeaders().getFirst("User-Agent"); | 
|---|
|  |  |  | String userAgent = browserDetails; | 
|---|
|  |  |  | String user = userAgent.toLowerCase(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String browser = ""; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (user.contains("edge")) { | 
|---|
|  |  |  | browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-"); | 
|---|
|  |  |  | } else if (user.contains("msie")) { | 
|---|
|  |  |  | String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0]; | 
|---|
|  |  |  | browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1]; | 
|---|
|  |  |  | } else if (user.contains("safari") && user.contains("version")) { | 
|---|
|  |  |  | browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0] + "-" | 
|---|
|  |  |  | + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; | 
|---|
|  |  |  | } else if (user.contains("opr") || user.contains("opera")) { | 
|---|
|  |  |  | if (user.contains("opera")) { | 
|---|
|  |  |  | browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0] + "-" | 
|---|
|  |  |  | + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; | 
|---|
|  |  |  | } else if (user.contains("opr")) { | 
|---|
|  |  |  | browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")) | 
|---|
|  |  |  | .replace("OPR", "Opera"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else if (user.contains("chrome")) { | 
|---|
|  |  |  | browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-"); | 
|---|
|  |  |  | } else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1) | 
|---|
|  |  |  | || (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) | 
|---|
|  |  |  | || (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) { | 
|---|
|  |  |  | browser = "Netscape-?"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else if (user.contains("firefox")) { | 
|---|
|  |  |  | browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-"); | 
|---|
|  |  |  | } else if (user.contains("rv")) { | 
|---|
|  |  |  | String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-"); | 
|---|
|  |  |  | browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | browser = "UnKnown, More-Info: " + userAgent; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return browser; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取IP | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return "-1.-1.-1.-1"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public String getIP(ServerHttpRequest request){ | 
|---|
|  |  |  | HttpHeaders headers = request.getHeaders(); | 
|---|
|  |  |  | String ip = headers.getFirst("x-forwarded-for"); | 
|---|
|  |  |  | if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | // 多次反向代理后会有多个ip值,第一个ip才是真实ip | 
|---|
|  |  |  | if (ip.indexOf(",") != -1) { | 
|---|
|  |  |  | ip = ip.split(",")[0]; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = headers.getFirst("Proxy-Client-IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = headers.getFirst("WL-Proxy-Client-IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = headers.getFirst("HTTP_CLIENT_IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = headers.getFirst("HTTP_X_FORWARDED_FOR"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = headers.getFirst("X-Real-IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getRemoteAddress().getAddress().getHostAddress(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ip.replaceAll(":", "."); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取用户操作平台 | 
|---|
|  |  |  | 
|---|
|  |  |  | public String getPlatform (HttpServletRequest request) { | 
|---|
|  |  |  | return request.getHeader("eva-platform") == null ? "UNKNOWN" : request.getHeader("eva-platform"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public String getPlatform (ServerHttpRequest request) { | 
|---|
|  |  |  | HttpHeaders headers = request.getHeaders(); | 
|---|
|  |  |  | String name = headers.getFirst("eva-platform"); | 
|---|
|  |  |  | return name==null ? "UNKNOWN" : name; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|