Changeset 6124
- Timestamp:
- 01/27/12 16:41:47 (4 months ago)
- Location:
- trunk/pustefix-core/src/main/java/org/pustefixframework/http
- Files:
-
- 5 modified
-
AbstractPustefixRequestHandler.java (modified) (3 diffs)
-
BotSessionTrackingStrategy.java (modified) (5 diffs)
-
CookieSessionTrackingStrategy.java (modified) (10 diffs)
-
SessionTrackingStrategyContext.java (modified) (2 diffs)
-
URLRewriteSessionTrackingStrategy.java (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pustefix-core/src/main/java/org/pustefixframework/http/AbstractPustefixRequestHandler.java
r6078 r6124 25 25 import java.net.URL; 26 26 import java.nio.charset.Charset; 27 import java.text.NumberFormat; 28 import java.text.SimpleDateFormat; 27 29 import java.util.ArrayList; 30 import java.util.Date; 28 31 import java.util.Enumeration; 29 32 import java.util.HashSet; … … 87 90 public static final String REQUEST_ATTR_LANGUAGE = "__PFX_LANGUAGE__"; 88 91 public static final String REQUEST_ATTR_PAGE_ALTERNATIVE = "__PFX_PAGE_ALTERNATIVE__"; 92 93 private int INC_ID = 0; 94 private String TIMESTAMP_ID = ""; 89 95 90 96 public static final Logger LOGGER_VISIT = Logger.getLogger("LOGGER_VISIT"); … … 379 385 public boolean wantsCheckSessionIdValid() { 380 386 return true; 387 } 388 389 public void registerSession(HttpServletRequest req, HttpSession session) { 390 if (session != null) { 391 synchronized (TIMESTAMP_ID) { 392 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 393 String timestamp = sdf.format(new Date()); 394 NumberFormat nf = NumberFormat.getInstance(); 395 nf.setMinimumIntegerDigits(3); 396 397 if (timestamp.equals(TIMESTAMP_ID)) { 398 INC_ID++; 399 } else { 400 TIMESTAMP_ID = timestamp; 401 INC_ID = 0; 402 } 403 if (INC_ID >= 1000) { 404 LOG.warn("*** More than 999 connects/sec! ***"); 405 } 406 String sessid = session.getId(); 407 String mach = ""; 408 if (sessid.lastIndexOf(".") > 0) { 409 mach = sessid.substring(sessid.lastIndexOf(".")); 410 } 411 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach); 412 } 413 StringBuffer logbuff = new StringBuffer(); 414 logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|"); 415 logbuff.append(getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|"); 416 if (req.getHeader("referer") != null) { 417 logbuff.append(req.getHeader("referer")); 418 } 419 logbuff.append("|"); 420 if (req.getHeader("accept-language") != null) { 421 logbuff.append(req.getHeader("accept-language")); 422 } 423 LOGGER_VISIT.warn(logbuff.toString()); 424 getSessionAdmin().registerSession(session, getServerName(req), req.getRemoteAddr()); 425 } 381 426 } 382 427 -
trunk/pustefix-core/src/main/java/org/pustefixframework/http/BotSessionTrackingStrategy.java
r5849 r6124 2 2 3 3 import java.io.IOException; 4 import java.text.NumberFormat;5 import java.text.SimpleDateFormat;6 import java.util.Date;7 4 8 5 import javax.servlet.ServletException; … … 10 7 import javax.servlet.http.HttpServletResponse; 11 8 import javax.servlet.http.HttpSession; 12 13 import org.apache.log4j.Logger;14 9 15 10 import de.schlund.pfixxml.PfixServletRequest; … … 19 14 public class BotSessionTrackingStrategy implements SessionTrackingStrategy { 20 15 21 private Logger LOG = Logger.getLogger(CookieSessionTrackingStrategy.class);22 23 private int INC_ID = 0;24 16 private static final String STORED_REQUEST = "__STORED_PFIXSERVLETREQUEST__"; 25 private String TIMESTAMP_ID = "";26 27 public static final String VISIT_ID = "__VISIT_ID__";28 17 29 18 private SessionTrackingStrategyContext context; … … 52 41 if(context.needsSession()) { 53 42 session = req.getSession(true); 54 registerSession(req, session);43 context.registerSession(req, session); 55 44 session.setAttribute(STORED_REQUEST, preq); 56 45 session.setAttribute(AbstractPustefixRequestHandler.SESSION_ATTR_COOKIE_SESSION, true); … … 63 52 } 64 53 65 private void registerSession(HttpServletRequest req, HttpSession session) {66 if (session != null) {67 synchronized (TIMESTAMP_ID) {68 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");69 String timestamp = sdf.format(new Date());70 NumberFormat nf = NumberFormat.getInstance();71 nf.setMinimumIntegerDigits(3);72 73 if (timestamp.equals(TIMESTAMP_ID)) {74 INC_ID++;75 } else {76 TIMESTAMP_ID = timestamp;77 INC_ID = 0;78 }79 if (INC_ID >= 1000) {80 LOG.warn("*** More than 999 connects/sec! ***");81 }82 String sessid = session.getId();83 String mach = "";84 if (sessid.lastIndexOf(".") > 0) {85 mach = sessid.substring(sessid.lastIndexOf("."));86 }87 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach);88 }89 StringBuffer logbuff = new StringBuffer();90 logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|");91 logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|");92 if (req.getHeader("referer") != null) {93 logbuff.append(req.getHeader("referer"));94 }95 logbuff.append("|");96 if (req.getHeader("accept-language") != null) {97 logbuff.append(req.getHeader("accept-language"));98 }99 AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString());100 context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr());101 }102 }103 104 54 } -
trunk/pustefix-core/src/main/java/org/pustefixframework/http/CookieSessionTrackingStrategy.java
r6004 r6124 2 2 3 3 import java.io.IOException; 4 import java.text.NumberFormat;5 4 import java.text.SimpleDateFormat; 6 5 import java.util.Date; … … 36 35 private static final String COOKIE_SESSION_RESET = "__PFIX_RST_"; 37 36 private static final String COOKIE_SESSION_SSL = "__PFIX_SSL_"; 38 public static final String VISIT_ID = "__VISIT_ID__";39 40 private int INC_ID = 0;41 private String TIMESTAMP_ID = "";42 37 43 38 private SessionTrackingStrategyContext context; … … 215 210 216 211 if(session != null) { 217 if(session.getAttribute( VISIT_ID) == null) {212 if(session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID) == null) { 218 213 StringBuilder sb = new StringBuilder(); 219 214 sb.append("Found session without visit_id: "); … … 278 273 LOGGER_SESSION.info("Get session I: " + session.getId()); 279 274 if (!reuse_session) { 280 registerSession(req, session);275 context.registerSession(req, session); 281 276 } 282 277 … … 293 288 HttpSession session = req.getSession(true); 294 289 LOGGER_SESSION.info("Get session II: " + session.getId()); 295 registerSession(req, session);290 context.registerSession(req, session); 296 291 LOG.debug("===> Redirecting to URL with session (Id: " + session.getId() + ")"); 297 292 session.setAttribute(STORED_REQUEST, preq); … … 304 299 HttpSession session = req.getSession(true); 305 300 LOGGER_SESSION.info("Get session III: " + session.getId()); 306 registerSession(req, session);301 context.registerSession(req, session); 307 302 308 303 LOG.debug("===> Redirecting to URL with session (Id: " + session.getId() + ")"); … … 317 312 private void redirectToSecureSSLSession(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) { 318 313 HttpSession session = req.getSession(false); 319 String visit_id = (String) session.getAttribute( VISIT_ID);314 String visit_id = (String) session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 320 315 321 316 LOG.debug("*** Saving session data..."); … … 347 342 } else { 348 343 // Register a new session now. 349 registerSession(req, session);344 context.registerSession(req, session); 350 345 } 351 346 LOG.debug("*** Got new Session (Id: " + session.getId() + ")"); … … 361 356 String redirect_uri = SessionHelper.encodeURL("https", AbstractPustefixRequestHandler.getServerName(req), req, context.getServletManagerConfig().getProperties()); 362 357 AbstractPustefixRequestHandler.relocate(res, redirect_uri); 363 }364 365 private void registerSession(HttpServletRequest req, HttpSession session) {366 if (session != null) {367 synchronized (TIMESTAMP_ID) {368 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");369 String timestamp = sdf.format(new Date());370 NumberFormat nf = NumberFormat.getInstance();371 nf.setMinimumIntegerDigits(3);372 373 if (timestamp.equals(TIMESTAMP_ID)) {374 INC_ID++;375 } else {376 TIMESTAMP_ID = timestamp;377 INC_ID = 0;378 }379 if (INC_ID >= 1000) {380 LOG.warn("*** More than 999 connects/sec! ***");381 }382 String sessid = session.getId();383 String mach = "";384 if (sessid.lastIndexOf(".") > 0) {385 mach = sessid.substring(sessid.lastIndexOf("."));386 }387 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach);388 }389 StringBuffer logbuff = new StringBuffer();390 logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|");391 logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|");392 if (req.getHeader("referer") != null) {393 logbuff.append(req.getHeader("referer"));394 }395 logbuff.append("|");396 if (req.getHeader("accept-language") != null) {397 logbuff.append(req.getHeader("accept-language"));398 }399 AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString());400 context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr());401 }402 358 } 403 359 … … 425 381 String parentid = req.getRequestedSessionId(); 426 382 HttpSession child = context.getSessionAdmin().getChildSessionForParentId(parentid); 427 String curr_visit_id = (String) child.getAttribute( VISIT_ID);383 String curr_visit_id = (String) child.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 428 384 HttpSession session = req.getSession(true); 429 385 LOGGER_SESSION.info("Get session VI: " + session.getId()); 430 386 431 387 LinkedList<TrailElement> traillog = context.getSessionAdmin().getInfo(child).getTraillog(); 432 session.setAttribute( VISIT_ID, curr_visit_id);388 session.setAttribute(AbstractPustefixRequestHandler.VISIT_ID, curr_visit_id); 433 389 context.getSessionAdmin().registerSession(session, traillog, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 434 390 LOG.debug("===> Redirecting with session (Id: " + session.getId() + ") using OLD VISIT_ID: " + curr_visit_id); -
trunk/pustefix-core/src/main/java/org/pustefixframework/http/SessionTrackingStrategyContext.java
r5849 r6124 6 6 import javax.servlet.http.HttpServletRequest; 7 7 import javax.servlet.http.HttpServletResponse; 8 import javax.servlet.http.HttpSession; 8 9 9 10 import org.pustefixframework.config.contextxmlservice.ServletManagerConfig; … … 22 23 public void callProcess(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException; 23 24 public SessionAdmin getSessionAdmin(); 25 public void registerSession(HttpServletRequest req, HttpSession session); 24 26 25 27 } -
trunk/pustefix-core/src/main/java/org/pustefixframework/http/URLRewriteSessionTrackingStrategy.java
r6033 r6124 2 2 3 3 import java.io.IOException; 4 import java.text.NumberFormat;5 import java.text.SimpleDateFormat;6 import java.util.Date;7 4 import java.util.Enumeration; 8 5 import java.util.HashMap; … … 46 43 private static final String STORED_REQUEST = "__STORED_PFIXSERVLETREQUEST__"; 47 44 private static final String TEST_COOKIE = "__PFIX_TST_"; 48 public static final String VISIT_ID = "__VISIT_ID__"; 49 50 private int INC_ID = 0; 51 private String TIMESTAMP_ID = ""; 45 52 46 private SessionTrackingStrategyContext context; 53 47 … … 396 390 HttpSession session = req.getSession(true); 397 391 storeClientIdentity(req); 398 registerSession(req, session);392 context.registerSession(req, session); 399 393 400 394 LOG.debug("*** Setting INSECURE flag in session (Id: " + session.getId() + ")"); … … 412 406 HttpSession session = req.getSession(true); 413 407 storeClientIdentity(req); 414 registerSession(req, session);408 context.registerSession(req, session); 415 409 createTestCookie(req, res); 416 410 … … 423 417 private void redirectToSecureSSLSession(PfixServletRequest preq, HttpServletRequest req, HttpServletResponse res) { 424 418 HttpSession session = req.getSession(false); 425 String visit_id = (String) session.getAttribute( VISIT_ID);419 String visit_id = (String) session.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 426 420 String parentid = (String) session.getAttribute(CHECK_FOR_RUNNING_SSL_SESSION); 427 421 if (parentid != null && !parentid.equals("")) { … … 485 479 } else { 486 480 // Register a new session now. 487 registerSession(req, session);481 context.registerSession(req, session); 488 482 } 489 483 LOG.debug("*** Got new Session (Id: " + session.getId() + ")"); … … 521 515 String redirect_uri = SessionHelper.encodeURL("https", AbstractPustefixRequestHandler.getServerName(req), req, context.getServletManagerConfig().getProperties()); 522 516 AbstractPustefixRequestHandler.relocate(res, redirect_uri); 523 }524 525 private void registerSession(HttpServletRequest req, HttpSession session) {526 if (session != null) {527 synchronized (TIMESTAMP_ID) {528 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");529 String timestamp = sdf.format(new Date());530 NumberFormat nf = NumberFormat.getInstance();531 nf.setMinimumIntegerDigits(3);532 533 if (timestamp.equals(TIMESTAMP_ID)) {534 INC_ID++;535 } else {536 TIMESTAMP_ID = timestamp;537 INC_ID = 0;538 }539 if (INC_ID >= 1000) {540 LOG.warn("*** More than 999 connects/sec! ***");541 }542 String sessid = session.getId();543 String mach = "";544 if (sessid.lastIndexOf(".") > 0) {545 mach = sessid.substring(sessid.lastIndexOf("."));546 }547 session.setAttribute(VISIT_ID, TIMESTAMP_ID + "-" + nf.format(INC_ID) + mach);548 }549 StringBuffer logbuff = new StringBuffer();550 logbuff.append(session.getAttribute(VISIT_ID) + "|" + session.getId() + "|");551 logbuff.append(AbstractPustefixRequestHandler.getServerName(req) + "|" + req.getRemoteAddr() + "|" + req.getHeader("user-agent") + "|");552 if (req.getHeader("referer") != null) {553 logbuff.append(req.getHeader("referer"));554 }555 logbuff.append("|");556 if (req.getHeader("accept-language") != null) {557 logbuff.append(req.getHeader("accept-language"));558 }559 AbstractPustefixRequestHandler.LOGGER_VISIT.warn(logbuff.toString());560 context.getSessionAdmin().registerSession(session, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr());561 }562 517 } 563 518 … … 669 624 String parentid = req.getRequestedSessionId(); 670 625 HttpSession child = context.getSessionAdmin().getChildSessionForParentId(parentid); 671 String curr_visit_id = (String) child.getAttribute( VISIT_ID);626 String curr_visit_id = (String) child.getAttribute(AbstractPustefixRequestHandler.VISIT_ID); 672 627 HttpSession session = req.getSession(true); 673 628 storeClientIdentity(req); … … 681 636 682 637 LinkedList<TrailElement> traillog = context.getSessionAdmin().getInfo(child).getTraillog(); 683 session.setAttribute( VISIT_ID, curr_visit_id);638 session.setAttribute(AbstractPustefixRequestHandler.VISIT_ID, curr_visit_id); 684 639 context.getSessionAdmin().registerSession(session, traillog, AbstractPustefixRequestHandler.getServerName(req), req.getRemoteAddr()); 685 640 LOG.debug("===> Redirecting with session (Id: " + session.getId() + ") using OLD VISIT_ID: " + curr_visit_id);
