초기소스

This commit is contained in:
jazz
2025-10-29 17:08:05 +09:00
parent e531aa9540
commit 439a379a02
7551 changed files with 1234427 additions and 3 deletions

View 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;
}
}