
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.util;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Component
public class CommonUtils {
// 사용자 아이피 주소
public String getIp(HttpServletRequest req) throws UnknownHostException {
String ip = req.getHeader("X-Forwarded-For");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("HTTP_CLIENT_IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("HTTP_X_FORWARDED_FOR");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("X-Real-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("X-RealIP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("REMOTE_ADDR");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getRemoteAddr();
}
if(ip.equals("0:0:0:0:0:0:0:1") || ip.equals("127.0.0.1") || ip.equals("::1")) {
InetAddress adr = InetAddress.getLocalHost();
ip = adr.getHostAddress();
// ip = adr.getHostName() + "/" + adr.getHostAddress();
} else if (ip.startsWith("::ffff:")) {
ip = ip.substring(7); // ::ffff:를 제거하고 IPv4 주소만 추출
}
return ip;
}
// HTTP 요청에서 User-Agent 해더 추출
public static String getUserAgent(HttpServletRequest req) {
return req.getHeader("User-Agent");
}
// 운영체제 정보 추출
public static String getOS(String userAgent) {
String os = "Unknown";
// userAgent 문자열에서 운영체제 정보 추출
if(userAgent != null && !userAgent.isEmpty()) {
if(userAgent.toLowerCase().contains("windows")) {
os = "Windows";
} else if(userAgent.toLowerCase().contains("mac")) {
os = "Mac";
} else if(userAgent.toLowerCase().contains("linux")) {
os = "Linux";
}
}
return os;
}
// 디바이스 정보 추출
public static String getDevice(String userAgent) {
String device = "Unknown";
// userAgent 문자열에서 디바이스 정보 추출
if(userAgent != null && !userAgent.isEmpty()) {
if(userAgent.toLowerCase().contains("mobile")) {
device = "Mobile";
} else {
device = "Desktop";
}
}
return device;
}
// 브라우저 정보 추출
public static String getBrowser(String userAgent) {
String browser = "Unknown";
// userAgent 문자열에서 브라우저저 정보추출
if(userAgent != null && !userAgent.isEmpty()) {
if(userAgent.toLowerCase().contains("msie")) {
browser = "Internet Explorer";
} else if(userAgent.toLowerCase().contains("firefox")) {
browser = "Firefox";
} else if(userAgent.toLowerCase().contains("chrome")) {
browser = "Chrome";
} else if(userAgent.toLowerCase().contains("safari")) {
browser = "Safari";
} else if(userAgent.toLowerCase().contains("edge")) {
browser = "Edge";
}
}
return browser;
}
}