초기소스
This commit is contained in:
118
src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java
Normal file
118
src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java
Normal file
@@ -0,0 +1,118 @@
|
||||
package com.wb.domainserver.realm.util;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class UrlExtractor {
|
||||
|
||||
public static String redirect(HttpServletRequest request, String url) {
|
||||
return "redirect:" + getOriginalURL(request) + url;
|
||||
}
|
||||
|
||||
public static String getOriginalHost(HttpServletRequest request) {
|
||||
|
||||
// 헤더에서 원래 요청 정보를 추출
|
||||
String scheme = request.getHeader("X-Forwarded-Proto");
|
||||
if (scheme == null) {
|
||||
scheme = request.getScheme(); // 기본값으로 현재 요청의 프로토콜 사용
|
||||
}
|
||||
|
||||
String host = request.getHeader("X-Forwarded-Host");
|
||||
if (host == null) {
|
||||
host = request.getServerName(); // 기본값으로 현재 요청의 호스트명 사용
|
||||
}
|
||||
|
||||
int port = 80;
|
||||
if (request.getHeader("X-Forwarded-Port") == null) {
|
||||
port = request.getServerPort(); // 기본값으로 현재 요청의 포트 사용
|
||||
}
|
||||
|
||||
String portPart = (port != -1 && port != 80 && port != 443) ? ":" + port : "";
|
||||
|
||||
|
||||
String fullUri = scheme + "://" + host;
|
||||
log.info("UrlExtractUtil - fullUri : {}",fullUri);
|
||||
// if(fullUri.contains("it.gcone")) fullUri = fullUri.concat("/admin");
|
||||
|
||||
String returnVal;
|
||||
|
||||
if(fullUri.contains("loc.")){
|
||||
returnVal = scheme + "://" + host + portPart;
|
||||
}else{
|
||||
returnVal = scheme + "://" + host;
|
||||
}
|
||||
|
||||
// 전체 URI 조합
|
||||
returnVal = returnVal.replace(":443", "");
|
||||
log.info("UrlExtractUtil - returnVal : {}",returnVal);
|
||||
|
||||
|
||||
return returnVal;
|
||||
}
|
||||
|
||||
public static String getOriginalURL(HttpServletRequest request) {
|
||||
// 헤더에서 원래 요청 정보를 추출
|
||||
String scheme = request.getHeader("X-Forwarded-Proto");
|
||||
if (scheme == null) {
|
||||
scheme = request.getScheme(); // 기본값으로 현재 요청의 프로토콜 사용
|
||||
}
|
||||
|
||||
String uri = request.getHeader("X-Forwarded-Uri");
|
||||
if (uri == null) {
|
||||
uri = request.getRequestURI(); // 기본값으로 현재 요청의 URI 사용
|
||||
}
|
||||
|
||||
String queryString = request.getHeader("X-Forwarded-Query");
|
||||
if (queryString == null) {
|
||||
queryString = request.getQueryString(); // 기본값으로 현재 요청의 쿼리 스트링 사용
|
||||
}
|
||||
|
||||
|
||||
String url = getOriginalHost(request) + (uri.equals("/") ? "" : uri);
|
||||
|
||||
if (queryString != null) {
|
||||
url += "?" + queryString;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
public static String getOriginalHost(String url) {
|
||||
if (url == null || url.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// 스키마 제거 (http:// or https://)
|
||||
String host = url.replaceFirst("https?://", "");
|
||||
|
||||
// 로컬 혹은 개발 서브도메인 제거
|
||||
if (host.startsWith("loc.")) {
|
||||
host = host.replaceFirst("loc\\.", "");
|
||||
}
|
||||
if (host.startsWith("dev.")) {
|
||||
host = host.replaceFirst("dev\\.", "");
|
||||
}
|
||||
|
||||
// 포트번호 제거
|
||||
int portIndex = host.indexOf(":");
|
||||
if (portIndex != -1) {
|
||||
host = host.substring(0, portIndex);
|
||||
}
|
||||
|
||||
return host;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static String getOriginalHostToHttps(HttpServletRequest request) {
|
||||
String url = getOriginalHost(request);
|
||||
// 스키마 제거 (http:// or https://)
|
||||
String host = url.replaceFirst("https?://", "");
|
||||
String httpsHost = "https://" + host;
|
||||
|
||||
return httpsHost;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user