From cf46a145af4369017e72f743f9d0fd986791d438 Mon Sep 17 00:00:00 2001 From: ymkim Date: Fri, 21 Aug 2020 18:11:33 +0900 Subject: [PATCH] =?UTF-8?q?[agent.java]=20SCOUTER=20Cookie=20=EC=9D=98=20m?= =?UTF-8?q?axAge=20=EC=84=A4=EC=A0=95=EC=9D=B4=20=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=9C=20=EC=98=B5=EC=85=98=20=EC=B6=94=EA=B0=80.=20default?= =?UTF-8?q?=20=EB=8A=94=20=EA=B8=B0=EC=A1=B4=EA=B3=BC=20=EB=8F=99=EC=9D=BC?= =?UTF-8?q?=ED=95=9C=20Integer.MAX=5FVALUE.=20trace=5Fuser=5Fmode=20=3D=20?= =?UTF-8?q?2=20=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8B=A4=EA=B0=80,?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=20=ED=95=98=EB=8D=94=EB=9D=BC=EB=8F=84,?= =?UTF-8?q?=20=ED=95=9C=EB=B2=88=20=EC=83=9D=EC=84=B1=EB=90=9C=20SCOUTER?= =?UTF-8?q?=20Cookie=EB=8A=94=2088=EB=85=84=EC=9D=98=20=EC=83=9D=EB=AA=85?= =?UTF-8?q?=EC=A3=BC=EA=B8=B0=EB=A5=BC=20=EA=B0=80=EC=A7=80=EA=B3=A0=20?= =?UTF-8?q?=EC=9E=88=EA=B8=B0=EC=97=90,=20=ED=95=B4=EB=8B=B9=20=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=EA=B8=B0=EA=B0=84=EC=9D=84=20=EC=A0=9C=EC=96=B4?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/scouter/agent/Configure.java | 5 ++++- .../src/main/java/scouter/xtra/http/HttpTrace.java | 10 +++++----- .../src/main/java/scouter/xtra/http/UseridUtil.java | 8 ++++---- scouter.document/main/Configuration.md | 4 +++- scouter.document/main/Configuration_kr.md | 8 +++++--- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/scouter.agent.java/src/main/java/scouter/agent/Configure.java b/scouter.agent.java/src/main/java/scouter/agent/Configure.java index 3a57f71af..2ee9dff06 100644 --- a/scouter.agent.java/src/main/java/scouter/agent/Configure.java +++ b/scouter.agent.java/src/main/java/scouter/agent/Configure.java @@ -193,8 +193,10 @@ public final static synchronized Configure getInstance() { public boolean profile_fullstack_stmt_leak_enabled = false; //Trace - @ConfigDesc("User ID based(0 : Remote Address, 1 : Cookie, 2 : Scouter Cookie, 2 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") + @ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header + @ConfigDesc("Setting a cookie expired time for SCOUTER cookie when trace_user_mode is 2") + public int trace_scouter_cookie_max_age = Integer.MAX_VALUE; @ConfigDesc("Setting a cookie path for SCOUTER cookie when trace_user_mode is 2") public String trace_user_cookie_path = "/"; @@ -950,6 +952,7 @@ private void apply() { this.profile_connection_open_fullstack_enabled = getBoolean("profile_connection_open_fullstack_enabled", false); this.profile_connection_autocommit_status_enabled = getBoolean("profile_connection_autocommit_status_enabled", false); this.trace_user_mode = getInt("trace_user_mode", 2); + this.trace_scouter_cookie_max_age = getInt("trace_scouter_cookie_max_age", Integer.MAX_VALUE); this.trace_user_cookie_path = getValue("trace_user_cookie_path", "/"); this.trace_user_session_key = getValue("trace_user_session_key", "JSESSIONID"); this._trace_auto_service_enabled = getBoolean("_trace_auto_service_enabled", false); diff --git a/scouter.agent.java/src/main/java/scouter/xtra/http/HttpTrace.java b/scouter.agent.java/src/main/java/scouter/xtra/http/HttpTrace.java index 320b9d582..f77c69a3b 100644 --- a/scouter.agent.java/src/main/java/scouter/xtra/http/HttpTrace.java +++ b/scouter.agent.java/src/main/java/scouter/xtra/http/HttpTrace.java @@ -139,16 +139,16 @@ public void start(TraceContext ctx, Object req, Object res) { try { switch (conf.trace_user_mode) { case 3: - ctx.userid = UseridUtil.getUseridFromHeader(request, response, conf.trace_user_session_key); + ctx.userid = UseridUtil.getUseridFromHeader(request, conf.trace_user_session_key); if (ctx.userid == 0 && ctx.remoteIp != null) { ctx.userid = HashUtil.hash(ctx.remoteIp); } break; case 2: - ctx.userid = UseridUtil.getUserid(request, response, conf.trace_user_cookie_path); + ctx.userid = UseridUtil.getUserid(request, response, conf.trace_user_cookie_path, conf.trace_scouter_cookie_max_age); break; case 1: - ctx.userid = UseridUtil.getUseridCustom(request, response, conf.trace_user_session_key); + ctx.userid = UseridUtil.getUseridCustom(request, conf.trace_user_session_key); if (ctx.userid == 0 && ctx.remoteIp != null) { ctx.userid = HashUtil.hash(ctx.remoteIp); } @@ -248,7 +248,7 @@ public void start(TraceContext ctx, Object req, Object res) { if (startTime != null) { int t = startTime.indexOf("t="); int ts = startTime.indexOf("ts="); - long startMillis = 0l; + long startMillis = 0L; if (t >= 0) { startMillis = Long.parseLong(startTime.substring(t + 2).trim())/1000; } else if (ts >= 0) { @@ -265,7 +265,7 @@ public void start(TraceContext ctx, Object req, Object res) { if (startTime != null) { int t = startTime.indexOf("t="); int ts = startTime.indexOf("ts="); - long startMillis = 0l; + long startMillis = 0L; if (t >= 0) { startMillis = Long.parseLong(startTime.substring(t + 2).trim())/1000; } else if (ts >= 0) { diff --git a/scouter.agent.java/src/main/java/scouter/xtra/http/UseridUtil.java b/scouter.agent.java/src/main/java/scouter/xtra/http/UseridUtil.java index 03fdd803c..715f13057 100644 --- a/scouter.agent.java/src/main/java/scouter/xtra/http/UseridUtil.java +++ b/scouter.agent.java/src/main/java/scouter/xtra/http/UseridUtil.java @@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletResponse; public class UseridUtil { private static final String SCOUTE_R = "SCOUTER"; - public static long getUserid(HttpServletRequest req, HttpServletResponse res, String cookiePath) { + public static long getUserid(HttpServletRequest req, HttpServletResponse res, String cookiePath, int maxAge) { try { String cookie = req.getHeader("Cookie"); if (cookie != null) { @@ -48,14 +48,14 @@ public static long getUserid(HttpServletRequest req, HttpServletResponse res, St if ( cookiePath != null && cookiePath.trim().length() > 0 ) { c.setPath(cookiePath); } - c.setMaxAge(Integer.MAX_VALUE); + c.setMaxAge(maxAge); res.addCookie(c); } catch (Throwable t) { Logger.println("A153", t.toString()); } return 0; } - public static long getUseridCustom(HttpServletRequest req, HttpServletResponse res, String key) { + public static long getUseridCustom(HttpServletRequest req, String key) { if (key == null || key.length() == 0) return 0; try { @@ -81,7 +81,7 @@ public static long getUseridCustom(HttpServletRequest req, HttpServletResponse r return 0; } - public static long getUseridFromHeader(HttpServletRequest req, HttpServletResponse res, String key) { + public static long getUseridFromHeader(HttpServletRequest req, String key) { if (key == null || key.length() == 0) return 0; try { diff --git a/scouter.document/main/Configuration.md b/scouter.document/main/Configuration.md index 5b8b7ba0c..b591d5c1b 100644 --- a/scouter.document/main/Configuration.md +++ b/scouter.document/main/Configuration.md @@ -512,8 +512,10 @@ public boolean profile_fullstack_stmt_leak_enabled = false; //Trace - @ConfigDesc("User ID based(0 : Remote Address, 1 : Cookie, 2 : Scouter Cookie, 2 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") + @ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header + @ConfigDesc("Setting a cookie expired time for SCOUTER cookie when trace_user_mode is 2") + public int trace_scouter_cookie_max_age = Integer.MAX_VALUE; @ConfigDesc("Setting a cookie path for SCOUTER cookie when trace_user_mode is 2") public String trace_user_cookie_path = "/"; diff --git a/scouter.document/main/Configuration_kr.md b/scouter.document/main/Configuration_kr.md index ac199c5c5..ac0b855b3 100644 --- a/scouter.document/main/Configuration_kr.md +++ b/scouter.document/main/Configuration_kr.md @@ -360,9 +360,11 @@ public boolean sfa_dump_enabled = false; @ConfigDesc("SFA thread dump Interval(ms)") public int sfa_dump_interval_ms = 10000; -//miscellaneous -@ConfigDesc("User ID based(0 : Remote Address, 1 : JSessionID, 2 : Scouter Cookie)") -public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:SetCookie +//Trace +@ConfigDesc("User ID based(0 : Remote IP Address, 1 : Cookie(JSESSIONID), 2 : Cookie(SCOUTER), 3 : Header) \n - able to set value for 1.Cookie and 3.Header \n - refer to 'trace_user_session_key'") +public int trace_user_mode = 2; // 0:Remote IP, 1:JSessionID, 2:Scouter Cookie, 3:Header +@ConfigDesc("Setting a cookie expired time for SCOUTER cookie when trace_user_mode is 2") +public int trace_scouter_cookie_max_age = Integer.MAX_VALUE; @ConfigDesc("Setting a cookie path for SCOUTER cookie when trace_user_mode is 2") public String trace_user_cookie_path = "/";