1 14 package org.compiere.www; 15 16 import javax.servlet.*; 17 import javax.servlet.http.*; 18 import java.util.*; 19 import java.io.*; 20 import java.sql.*; 21 import javax.naming.*; 22 23 import org.apache.ecs.*; 24 import org.apache.ecs.xhtml.*; 25 import org.apache.log4j.Logger; 26 27 import org.compiere.Compiere; 28 import org.compiere.util.*; 29 30 36 public class WEnv 37 { 38 39 public static boolean DEBUG = true; 40 41 private static Logger s_log = Logger.getLogger("org.compiere.www.WEnv"); 42 43 47 protected static final String DIR_BASE = "/compiere"; 49 private static final String DIR_IMAGE = "images"; 51 private static final String STYLE_STD = "standard.css"; 53 private static final String LOGO = "LogoSmall.gif"; 55 private static final String DIR_STORE = "store"; 57 58 public static final String TARGET_CMD = "WCmd"; 59 60 public static final String TARGET_MENU = "WMenu"; 61 62 public static final String TARGET_WINDOW = "WWindow"; 63 64 65 public static final String CHARACTERSET = "iso-8859-8"; 67 public static final String COOKIE_INFO = "CompiereInfo"; 68 69 70 public static final int TIMEOUT = 15*60; 71 72 73 public static final String SA_CONTEXT = "SA_Context"; 74 75 public static final String SA_WINDOW = "SA_Window"; 76 77 public static final String SA_LOGININFO = "SA_LoginInfo"; 78 79 public static final String SA_LANGUAGE = "SA_Language"; 80 81 82 private static boolean s_initOK = false; 83 84 93 public static boolean initWeb (ServletConfig config) 94 { 95 if (s_initOK) 96 { 97 s_log.info("initWeb " + config.getServletName()); 98 return true; 99 } 100 s_log.info("initWeb - Initial Call - " + config.getServletName()); 101 102 s_log.info("Web Context Init Parameter for " + config.getServletContext().getServletContextName()); 104 Enumeration en = config.getServletContext().getInitParameterNames(); 105 while (en.hasMoreElements()) 106 { 107 String name = en.nextElement().toString(); 108 String value = config.getServletContext().getInitParameter(name); 109 s_log.info(" - " + name + "=" + value); 110 System.setProperty(name, value); 111 } 112 113 s_log.info("Servlet Init Parameter for " + config.getServletName()); 114 en = config.getInitParameterNames(); 115 while (en.hasMoreElements()) 116 { 117 String name = en.nextElement().toString(); 118 String value = config.getInitParameter(name); 119 s_log.info(" - " + name + "=" + value); 120 System.setProperty(name, value); 121 } 122 123 try 124 { 125 s_initOK = Compiere.startupServer (new InitialContext()); 126 } 127 catch (Exception ex) 128 { 129 s_log.error("initWeb", ex); 130 } 131 if (!s_initOK) 132 return false; 133 134 s_log.info("initWeb complete"); 135 return s_initOK; 136 } 138 139 144 public static int getAD_Client_ID (ServletConfig config) 145 { 146 String oo = config.getInitParameter("AD_Client_ID"); 148 if (oo == null) 150 oo = config.getServletContext().getInitParameter("AD_Client_ID"); 151 if (oo == null) 152 { 153 s_log.error("getAD_Client_ID is null"); 154 return 0; 155 } 156 int AD_Client_ID = 0; 157 try 158 { 159 AD_Client_ID = Integer.parseInt(oo); 160 } 161 catch (NumberFormatException ex) 162 { 163 s_log.error("getAD_Client_ID - " + oo, ex); 164 } 165 return AD_Client_ID; 166 } 168 173 public static Connection getConnection (HttpServlet servlet) 174 { 175 String user = servlet.getInitParameter("dbUID"); 177 String pwd = servlet.getInitParameter("dbPWD"); 178 if (user == null) 180 user = servlet.getServletContext().getInitParameter("dbUID"); 181 if (pwd == null) 182 pwd = servlet.getServletContext().getInitParameter("dbPWD"); 183 if (user == null) 185 user = "compiere"; 186 if (user == null) 187 user = "compiere"; 188 207 return null; 208 209 } 211 216 public static String getDB_UID (ServletConfig config) 217 { 218 String user = config.getInitParameter("dbUID"); 220 if (user == null) 222 user = config.getServletContext().getInitParameter("dbUID"); 223 if (user == null) 224 { 225 s_log.error("getDB_UID is null"); 226 return "compiere"; 227 } 228 return user; 229 } 231 236 public static String getDB_PWD (ServletConfig config) 237 { 238 String pwd = config.getInitParameter("dbPWD"); 240 if (pwd == null) 242 pwd = config.getServletContext().getInitParameter("dbPWD"); 243 if (pwd == null) 244 { 245 s_log.error("getDB_PWD is null"); 246 return "compiere"; 247 } 248 return pwd; 249 } 251 252 253 260 public static String getBaseDirectory (String entry) 261 { 262 StringBuffer sb = new StringBuffer (DIR_BASE); 263 if (!entry.startsWith("/")) 264 sb.append("/"); 265 sb.append(entry); 266 return sb.toString(); 267 } 269 276 public static String getImageDirectory(String entry) 277 { 278 StringBuffer sb = new StringBuffer (DIR_BASE); 279 sb.append("/").append(DIR_IMAGE); 280 if (!entry.startsWith("/")) 281 sb.append("/"); 282 sb.append(entry); 283 return sb.toString(); 284 } 286 293 public static String getStoreDirectory(String entry) 294 { 295 StringBuffer sb = new StringBuffer (DIR_BASE); 296 sb.append("/").append(DIR_STORE); 297 if (!entry.startsWith("/")) 298 sb.append("/"); 299 sb.append(entry); 300 return sb.toString(); 301 } 303 309 public static String getLogoURL() 310 { 311 return getBaseDirectory(LOGO); 312 } 314 318 public static img getLogo() 319 { 320 return new img(WEnv.getLogoURL()).setAlign(AlignType.right).setAlt(Compiere.COPYRIGHT); 321 } 323 329 public static String getStylesheetURL() 330 { 331 return getBaseDirectory(STYLE_STD); 332 } 334 335 336 340 public static void dump (ServletConfig config) 341 { 342 System.out.println("ServletConfig " + config.getServletName()); 343 System.out.println("- Context=" + config.getServletContext()); 344 if (!Log.isTraceLevel(9)) 345 return; 346 boolean first = true; 347 Enumeration e = config.getInitParameterNames(); 348 while (e.hasMoreElements()) 349 { 350 if (first) 351 System.out.println("- InitParameter:"); 352 first = false; 353 String key = (String )e.nextElement(); 354 Object value = config.getInitParameter(key); 355 System.out.println(" - " + key + " = " + value); 356 } 357 } 359 363 public static void dump (ServletContext ctx) 364 { 365 System.out.println("ServletContext " + ctx.getServletContextName()); 366 System.out.println("- ServerInfo=" + ctx.getServerInfo()); 367 if (!Log.isTraceLevel(9)) 368 return; 369 boolean first = true; 370 Enumeration e = ctx.getInitParameterNames(); 371 while (e.hasMoreElements()) 372 { 373 if (first) 374 System.out.println("- InitParameter:"); 375 first = false; 376 String key = (String )e.nextElement(); 377 Object value = ctx.getInitParameter(key); 378 System.out.println(" - " + key + " = " + value); 379 } 380 first = true; 381 e = ctx.getAttributeNames(); 382 while (e.hasMoreElements()) 383 { 384 if (first) 385 System.out.println("- Attributes:"); 386 first = false; 387 String key = (String )e.nextElement(); 388 Object value = ctx.getAttribute(key); 389 System.out.println(" - " + key + " = " + value); 390 } 391 } 393 397 public static void dump (HttpSession session) 398 { 399 System.out.println("Session " + session.getId()); 400 System.out.println("- Created=" + new Timestamp(session.getCreationTime())); 401 if (!Log.isTraceLevel(9)) 402 return; 403 boolean first = true; 404 Enumeration e = session.getAttributeNames(); 405 while (e.hasMoreElements()) 406 { 407 if (first) 408 System.out.println("- Attributes:"); 409 first = false; 410 String key = (String )e.nextElement(); 411 Object value = session.getAttribute(key); 412 System.out.println(" - " + key + " = " + value); 413 } 414 } 416 420 public static void dump (HttpServletRequest request) 421 { 422 System.out.println("Request " + request.getProtocol() + " " + request.getMethod()); 423 if (!Log.isTraceLevel(9)) 424 return; 425 System.out.println("- Server=" + request.getServerName() + ", Port=" + request.getServerPort()); 426 System.out.println("- ContextPath=" + request.getContextPath() 427 + ", ServletPath=" + request.getServletPath() 428 + ", Query=" + request.getQueryString()); 429 System.out.println("- URI=" + request.getRequestURI() + ", URL=" + request.getRequestURL()); 430 System.out.println("- AuthType=" + request.getAuthType()); 431 System.out.println("- Secure=" + request.isSecure()); 432 System.out.println("- PathInfo=" + request.getPathInfo() + " - " + request.getPathTranslated()); 433 System.out.println("- UserPrincipal=" + request.getUserPrincipal()); 434 boolean first = true; 436 Enumeration e = request.getHeaderNames(); 437 438 while (e.hasMoreElements()) 439 { 440 if (first) 441 System.out.println("- Header:"); 442 first = false; 443 String key = (String )e.nextElement(); 444 Object value = request.getHeader(key); 445 System.out.println(" - " + key + " = " + value); 446 } 447 448 first = true; 449 e = request.getParameterNames(); 450 while (e.hasMoreElements()) 451 { 452 if (first) 453 System.out.println("- Parameter:"); 454 first = false; 455 String key = (String )e.nextElement(); 456 String value = request.getParameter(key); 457 System.out.println(" - " + key + " = " + value); 458 } 459 first = true; 460 e = request.getAttributeNames(); 461 while (e.hasMoreElements()) 462 { 463 if (first) 464 System.out.println("- Attributes:"); 465 first = false; 466 String key = (String )e.nextElement(); 467 Object value = request.getAttribute(key); 468 System.out.println(" - " + key + " = " + value); 469 } 470 Cookie[] ccc = request.getCookies(); 471 for (int i = 0; i < ccc.length; i++) 472 { 473 if (i == 0) 474 System.out.println("- Cookies:"); 475 System.out.println (" - " + ccc[i].getName () 476 + ", Domain=" + ccc[i].getDomain () 477 + ", Path=" + ccc[i].getPath () 478 + ", MaxAge=" + ccc[i].getMaxAge ()); 479 } 480 System.out.println("- Encoding=" + request.getCharacterEncoding()); 481 System.out.println("- Locale=" + request.getLocale()); 482 first = true; 483 e = request.getLocales(); 484 while (e.hasMoreElements()) 485 { 486 if (first) 487 System.out.println("- Locales:"); 488 first = false; 489 System.out.println(" - " + e.nextElement()); 490 } 491 } 493 494 495 502 public static void addFooter(HttpServletRequest request, HttpServletResponse response, 503 HttpServlet servlet, body body) 504 { 505 body.addElement(new hr()); 506 body.addElement(new comment(" --- Footer Start --- ")); 507 p footer = new p(); 509 footer.addElement(org.compiere.Compiere.DATE_VERSION + ": "); 510 footer.addElement(new a("javascript:diag_window();", "Window Info")); 511 footer.addElement(" - "); 512 footer.addElement(new a("javascript:diag_navigator();", "Browser Info")); 513 footer.addElement(" - "); 514 footer.addElement(new a("javascript:diag_request();", "Request Info")); 515 footer.addElement(" - "); 516 footer.addElement(new a("javascript:diag_document();", "Document Info")); 517 footer.addElement(" - "); 518 footer.addElement(new a("javascript:diag_form();", "Form Info")); 519 footer.addElement(" - "); 520 footer.addElement(new a("javascript:toggle('DEBUG');", "Servlet Info")); 521 footer.addElement(" - "); 522 footer.addElement(new a("javascript:diag_source();", "Show Source")); 523 footer.addElement("\n"); 524 body.addElement(footer); 525 526 body.addElement(new br()); 528 body.addElement(getServletInfo(request, response, servlet)); 529 body.addElement(new script("hide('DEBUG');")); 530 body.addElement(new comment(" --- Footer End --- ")); 531 } 533 540 private static table getServletInfo (HttpServletRequest request, 541 HttpServletResponse response, HttpServlet servlet) 542 { 543 table table = new table(); 544 table.setID("DEBUG"); 545 Enumeration e; 546 547 tr space = new tr().addElement(new td().addElement(".")); 548 table.addElement(space); 550 table.addElement(new tr().addElement(new td().addElement(new h3("Request Info")) )); 551 table.addElement(new tr().addElement(new td().addElement("Method")) 552 .addElement(new td().addElement(request.getMethod() ))); 553 table.addElement(new tr().addElement(new td().addElement("Protocol")) 554 .addElement(new td().addElement(request.getProtocol() ))); 555 table.addElement(new tr().addElement(new td().addElement("URI")) 556 .addElement(new td().addElement(request.getRequestURI() ))); 557 table.addElement(new tr().addElement(new td().addElement("Context Path")) 558 .addElement(new td().addElement(request.getContextPath() ))); 559 table.addElement(new tr().addElement(new td().addElement("Servlet Path")) 560 .addElement(new td().addElement(request.getServletPath() ))); 561 table.addElement(new tr().addElement(new td().addElement("Path Info")) 562 .addElement(new td().addElement(request.getPathInfo() ))); 563 table.addElement(new tr().addElement(new td().addElement("Path Translated")) 564 .addElement(new td().addElement(request.getPathTranslated() ))); 565 table.addElement(new tr().addElement(new td().addElement("Query String")) 566 .addElement(new td().addElement(request.getQueryString() ))); 567 table.addElement(new tr().addElement(new td().addElement("Content Length")) 568 .addElement(new td().addElement("" + request.getContentLength() ))); 569 table.addElement(new tr().addElement(new td().addElement("Content Type")) 570 .addElement(new td().addElement(request.getContentType() ))); 571 table.addElement(new tr().addElement(new td().addElement("Character Encoding")) 572 .addElement(new td().addElement(request.getCharacterEncoding() ))); 573 table.addElement(new tr().addElement(new td().addElement("Locale")) 574 .addElement(new td().addElement(request.getLocale().toString() ))); 575 table.addElement(new tr().addElement(new td().addElement("Schema")) 576 .addElement(new td().addElement(request.getScheme() ))); 577 table.addElement(new tr().addElement(new td().addElement("Server Name")) 578 .addElement(new td().addElement(request.getServerName() ))); 579 table.addElement(new tr().addElement(new td().addElement("Server Port")) 580 .addElement(new td().addElement("" + request.getServerPort() ))); 581 table.addElement(new tr().addElement(new td().addElement("Remote User")) 582 .addElement(new td().addElement(request.getRemoteUser() ))); 583 table.addElement(new tr().addElement(new td().addElement("Remote Address")) 584 .addElement(new td().addElement(request.getRemoteAddr() ))); 585 table.addElement(new tr().addElement(new td().addElement("Remote Host")) 586 .addElement(new td().addElement(request.getRemoteHost() ))); 587 table.addElement(new tr().addElement(new td().addElement("Authorization Type")) 588 .addElement(new td().addElement(request.getAuthType() ))); 589 table.addElement(new tr().addElement(new td().addElement("User Principal")) 590 .addElement(new td().addElement(request.getUserPrincipal()==null ? "" : request.getUserPrincipal().toString()))); 591 table.addElement(new tr().addElement(new td().addElement("IsSecure")) 592 .addElement(new td().addElement(request.isSecure() ? "true" : "false" ))); 593 594 table.addElement(space); 596 table.addElement(new tr().addElement(new td().addElement(new h3("Request Attributes")) )); 597 e = request.getAttributeNames(); 598 while (e.hasMoreElements()) 599 { 600 String name = e.nextElement().toString(); 601 String attrib = request.getAttribute(name).toString(); 602 table.addElement(new tr().addElement(new td().addElement(name)) 603 .addElement(new td().addElement(attrib))); 604 } 605 606 table.addElement(space); 608 table.addElement(new tr().addElement(new td().addElement(new h3("Req Parameters")) )); 609 e = request.getParameterNames(); 610 while (e.hasMoreElements()) 611 { 612 String name = (String )e.nextElement(); 613 String para = request.getParameter(name); 614 table.addElement(new tr().addElement(new td().addElement(name)) 615 .addElement(new td().addElement(para))); 616 } 617 618 table.addElement(space); 620 table.addElement(new tr().addElement(new td().addElement(new h3("Req Header")) )); 621 e = request.getHeaderNames(); 622 while (e.hasMoreElements()) 623 { 624 String name = (String )e.nextElement(); 625 if (!name.equals("Cockie")) 626 { 627 String hdr = request.getHeader(name); 628 table.addElement(new tr().addElement(new td().addElement(name)) 629 .addElement(new td().addElement(hdr))); 630 } 631 } 632 633 table.addElement(space); 635 table.addElement(new tr().addElement(new td().addElement(new h3("Req Cookies")) )); 636 Cookie[] cc = request.getCookies(); 637 if (cc != null) 638 { 639 for (int i = 0; i < cc.length; i++) 640 { 641 table.addElement(new tr().addElement(new td().addElement(cc[i].getName() )) 643 .addElement(new td().addElement(cc[i].getValue()) )); 644 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Comment" )) 645 .addElement(new td().addElement(cc[i].getComment()) )); 646 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Domain" )) 647 .addElement(new td().addElement(cc[i].getDomain()) )); 648 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Max Age" )) 649 .addElement(new td().addElement(""+ cc[i].getMaxAge()) )); 650 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Path" )) 651 .addElement(new td().addElement(cc[i].getPath()) )); 652 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Is Secure" )) 653 .addElement(new td().addElement(cc[i].getSecure() ? "true" : "false") )); 654 table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Version" )) 655 .addElement(new td().addElement("" + cc[i].getVersion()) )); 656 } 657 } 659 table.addElement(space); 661 table.addElement(new tr().addElement(new td().addElement(new h3("Req Session")) )); 662 HttpSession session = request.getSession(true); 663 table.addElement(new tr().addElement(new td().addElement("Session ID")) 664 .addElement(new td().addElement(session.getId() ))); 665 Timestamp ts = new Timestamp(session.getCreationTime()); 666 table.addElement(new tr().addElement(new td().addElement("Created")) 667 .addElement(new td().addElement(ts.toString() ))); 668 ts = new Timestamp(session.getLastAccessedTime()); 669 table.addElement(new tr().addElement(new td().addElement("Accessed")) 670 .addElement(new td().addElement(ts.toString() ))); 671 table.addElement(new tr().addElement(new td().addElement("Request Session ID")) 672 .addElement(new td().addElement(request.getRequestedSessionId() ))); 673 table.addElement(new tr().addElement(new td().addElement(".. via Cookie")) 674 .addElement(new td().addElement("" + request.isRequestedSessionIdFromCookie() ))); 675 table.addElement(new tr().addElement(new td().addElement(".. via URL")) 676 .addElement(new td().addElement("" + request.isRequestedSessionIdFromURL() ))); 677 table.addElement(new tr().addElement(new td().addElement("Valid")) 678 .addElement(new td().addElement("" + request.isRequestedSessionIdValid() ))); 679 680 table.addElement(space); 682 table.addElement(new tr().addElement(new td().addElement(new h3("Session Attributes")) )); 683 e = session.getAttributeNames(); 684 while (e.hasMoreElements()) 685 { 686 String name = (String )e.nextElement(); 687 String attrib = session.getAttribute(name).toString(); 688 table.addElement(new tr().addElement(new td().addElement(name)) 689 .addElement(new td().addElement(attrib))); 690 } 691 692 table.addElement(space); 694 table.addElement(new tr().addElement(new td().addElement(new h3("Response")) )); 695 table.addElement(new tr().addElement(new td().addElement("Buffer Size")) 696 .addElement(new td().addElement(String.valueOf(response.getBufferSize()) ))); 697 table.addElement(new tr().addElement(new td().addElement("Character Encoding")) 698 .addElement(new td().addElement(response.getCharacterEncoding() ))); 699 table.addElement(new tr().addElement(new td().addElement("Locale")) 700 .addElement(new td().addElement(response.getLocale()==null ? "null" : response.getLocale().toString()))); 701 702 table.addElement(space); 704 table.addElement(new tr().addElement(new td().addElement(new h3("Servlet")) )); 705 table.addElement(new tr().addElement(new td().addElement("Name")) 706 .addElement(new td().addElement(servlet.getServletName()))); 707 table.addElement(new tr().addElement(new td().addElement("Info")) 708 .addElement(new td().addElement(servlet.getServletInfo()))); 709 710 table.addElement(space); 712 table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Init Parameter")) )); 713 e = servlet.getInitParameterNames(); 714 while (e.hasMoreElements()) 716 { 717 String name = (String )e.nextElement(); 718 String para = servlet.getInitParameter(name); 719 table.addElement(new tr().addElement(new td().addElement(name)) 720 .addElement(new td().addElement(para))); 721 } 722 723 table.addElement(space); 725 table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Context")) )); 726 ServletContext servCtx = servlet.getServletContext(); 727 e = servCtx.getAttributeNames(); 728 while (e.hasMoreElements()) 729 { 730 String name = (String )e.nextElement(); 731 String attrib = servCtx.getAttribute(name).toString(); 732 table.addElement(new tr().addElement(new td().addElement(name)) 733 .addElement(new td().addElement(attrib))); 734 } 735 736 table.addElement(space); 738 table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Context Init Parameter")) )); 739 e = servCtx.getInitParameterNames(); 740 while (e.hasMoreElements()) 741 { 742 String name = (String )e.nextElement(); 743 String attrib = servCtx.getInitParameter(name).toString(); 744 table.addElement(new tr().addElement(new td().addElement(name)) 745 .addElement(new td().addElement(attrib))); 746 } 747 748 749 return table; 750 } 752 } | Popular Tags |