===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/AuthenticatableHttpServlet.java ===== package com.l7tech.server; import com.l7tech.common.http.HttpConstants; import com.l7tech.common.password.PasswordHasher; import com.l7tech.gateway.common.LicenseException; import com.l7tech.gateway.common.LicenseManager; import com.l7tech.gateway.common.service.PublishedService; import com.l7tech.gateway.common.transport.SsgConnector; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.AuthenticationException; import com.l7tech.identity.BadCredentialsException; import com.l7tech.identity.IdentityProvider; import com.l7tech.identity.IssuedCertNotPresentedException; import com.l7tech.identity.MissingCredentialsException; import com.l7tech.identity.User; import com.l7tech.identity.UserBean; import com.l7tech.identity.cert.ClientCertManager; import com.l7tech.objectmodel.EntityType; import com.l7tech.objectmodel.FindException; import com.l7tech.objectmodel.Goid; import com.l7tech.policy.IncludeAssertionDereferenceTranslator; import com.l7tech.policy.Policy; import com.l7tech.policy.assertion.Assertion; import com.l7tech.policy.assertion.CustomAssertionHolder; import com.l7tech.policy.assertion.Include; import com.l7tech.policy.assertion.PolicyAssertionException; import com.l7tech.policy.assertion.credential.LoginCredentials; import com.l7tech.policy.wsp.WspReader; import com.l7tech.policy.wsp.WspWriter; import com.l7tech.server.admin.AdminSessionManager; import com.l7tech.server.identity.AuthenticationResult; import com.l7tech.server.identity.IdentityProviderFactory; import com.l7tech.server.policy.PolicyManager; import com.l7tech.server.service.ServiceCache; import com.l7tech.server.transport.ListenerException; import com.l7tech.server.transport.http.HttpTransportModule; import com.l7tech.util.CausedIOException; import com.l7tech.util.Charsets; import com.l7tech.util.Config; import com.l7tech.util.ConfigFactory; import com.l7tech.util.Functions; import com.l7tech.util.GoidUpgradeMapper; import com.l7tech.util.Functions.Unary; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.context.ApplicationContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public abstract class AuthenticatableHttpServlet extends HttpServlet { protected final Logger logger = Logger.getLogger(this.getClass().getName()); private static final boolean checkCertificatePresent; private WebApplicationContext applicationContext; protected Config config; protected PolicyManager policyManager; protected ServiceCache serviceCache; protected ClientCertManager clientCertManager; protected WspReader wspReader; protected IdentityProviderFactory identityProviderFactory; protected LicenseManager licenseManager; protected PasswordHasher passwordHasher; protected AdminSessionManager adminSessionManager; static final long serialVersionUID = -7855579329841584822L; private static final String[] a; public void init(ServletConfig var1) throws ServletException { try { super.init(var1); this.applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); if (this.applicationContext == null) { throw new ServletException(a[48]); } } catch (ServletException var3) { throw c(var3); } String[] var2 = a; this.config = this.getBean(var2[6], Config.class); this.clientCertManager = this.getBean(var2[9], ClientCertManager.class); this.identityProviderFactory = this.getBean(var2[52], IdentityProviderFactory.class); this.licenseManager = this.getBean(var2[47], LicenseManager.class); this.serviceCache = this.getBean(var2[27], ServiceCache.class); this.policyManager = this.getBean(var2[19], PolicyManager.class); this.wspReader = this.getBean(var2[21], WspReader.class); this.passwordHasher = this.getBean(var2[18], PasswordHasher.class); this.adminSessionManager = this.getBean(var2[5], AdminSessionManager.class); } protected Object getBean(String var1) throws ServletException { return this.getBean(var1, null); } protected T getBean(String param1, Class param2) throws ServletException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 0 // 01: getfield com/l7tech/server/AuthenticatableHttpServlet.applicationContext Lorg/springframework/web/context/WebApplicationContext; // 04: aload 1 // 05: aload 2 // 06: invokeinterface org/springframework/web/context/WebApplicationContext.getBean (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; 3 // 0b: astore 3 // 0c: aload 3 // 0d: ifnonnull 29 // 10: new jakarta/servlet/ServletException // 13: dup // 14: aload 1 // 15: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 18: bipush 38 // 1a: aaload // 1b: swap // 1c: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 21: invokespecial jakarta/servlet/ServletException. (Ljava/lang/String;)V // 24: athrow // 25: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 28: athrow // 29: aload 2 // 2a: ifnull 67 // 2d: aload 2 // 2e: aload 3 // 2f: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class; // 32: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z // 35: ifne 67 // 38: goto 3f // 3b: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 3e: athrow // 3f: new jakarta/servlet/ServletException // 42: dup // 43: aload 1 // 44: aload 3 // 45: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class; // 48: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String; // 4b: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 4e: bipush 30 // 50: aaload // 51: dup_x2 // 52: pop // 53: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 56: bipush 49 // 58: aaload // 59: swap // 5a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ] // 5f: invokespecial jakarta/servlet/ServletException. (Ljava/lang/String;)V // 62: athrow // 63: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 66: athrow // 67: aload 3 // 68: areturn // try (6 -> 18): 18 jakarta/servlet/ServletException // try (20 -> 27): 28 jakarta/servlet/ServletException // try (22 -> 48): 48 jakarta/servlet/ServletException } protected abstract String getFeature(); protected abstract Endpoint getRequiredEndpoint(); protected void service(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { try { SsgConnector var3 = HttpTransportModule.getConnector(var1); HttpTransportModule.addHstsResponseHeaderIfRequired(var1, var2, var3, this.config); Endpoint var4 = this.getRequiredEndpoint(); try { if (var4 != null) { HttpTransportModule.requireEndpoint(var3, var4); } } catch (ListenerException var5) { throw c(var5); } } catch (ListenerException var6) { var2.sendError(502, a[12]); return; } super.service(var1, var2); } protected AuthenticationResult[] authenticateRequestBasic(HttpServletRequest var1) throws BadCredentialsException, MissingCredentialsException, IssuedCertNotPresentedException, LicenseException, ListenerException { return this.authenticateRequestBasic(var1, false); } protected AuthenticationResult[] authenticateRequestBasic(HttpServletRequest var1, boolean var2) throws BadCredentialsException, MissingCredentialsException, IssuedCertNotPresentedException, LicenseException, ListenerException { this.licenseManager.requireFeature(this.getFeature()); try { AuthenticatableHttpServlet.AhsAuthResult var3 = this.authenticateRequestAgainstAllIdProviders(var1, var2); AuthenticationResult[] var4 = var3.getAuthResults(); try { if (var4 != null && var4.length >= 1) { return var4; } } catch (FindException var8) { throw c(var8); } String[] var6 = a; String var5 = var6[32]; try { this.logger.warning(var5); if (var3.isSawCredentials()) { throw new BadCredentialsException(var5); } } catch (FindException var7) { throw c(var7); } throw new MissingCredentialsException(); } catch (FindException var9) { this.logger.log(Level.SEVERE, a[24], var9); return new AuthenticationResult[0]; } } protected void doHttpBasicChallenge(HttpServletResponse var1) throws IOException { var1.setStatus(401); String[] var2 = a; var1.setHeader(HttpConstants.HEADER_WWW_AUTHENTICATE, var2[28]); var1.setContentType(var2[13]); var1.getWriter().println(var2[43]); } private AuthenticatableHttpServlet.AhsAuthResult authenticateRequestAgainstAllIdProviders(HttpServletRequest param1, boolean param2) throws FindException, IssuedCertNotPresentedException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: new java/util/ArrayList // 003: dup // 004: invokespecial java/util/ArrayList. ()V // 007: astore 3 // 008: aload 0 // 009: getfield com/l7tech/server/AuthenticatableHttpServlet.identityProviderFactory Lcom/l7tech/server/identity/IdentityProviderFactory; // 00c: invokevirtual com/l7tech/server/identity/IdentityProviderFactory.findAllIdentityProviders ()Ljava/util/Collection; // 00f: astore 4 // 011: aload 0 // 012: aload 1 // 013: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.findCredentialsBasic (Ljakarta/servlet/http/HttpServletRequest;)Lcom/l7tech/policy/assertion/credential/LoginCredentials; // 016: astore 5 // 018: aload 5 // 01a: ifnull 025 // 01d: bipush 1 // 01e: goto 026 // 021: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 024: athrow // 025: bipush 0 // 026: istore 6 // 028: aload 5 // 02a: ifnonnull 03f // 02d: new com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult // 030: dup // 031: iload 6 // 033: bipush 0 // 034: anewarray 509 // 037: invokespecial com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult. (Z[Lcom/l7tech/server/identity/AuthenticationResult;)V // 03a: areturn // 03b: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 03e: athrow // 03f: aload 1 // 040: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1 // 045: ifne 075 // 048: aload 0 // 049: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.isCleartextAllowed ()Z // 04c: ifne 075 // 04f: goto 056 // 052: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 055: athrow // 056: aload 0 // 057: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger; // 05a: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 05d: bipush 40 // 05f: aaload // 060: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V // 063: new com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult // 066: dup // 067: iload 6 // 069: bipush 0 // 06a: anewarray 509 // 06d: invokespecial com/l7tech/server/AuthenticatableHttpServlet$AhsAuthResult. (Z[Lcom/l7tech/server/identity/AuthenticationResult;)V // 070: areturn // 071: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 074: athrow // 075: bipush 0 // 076: istore 7 // 078: aload 4 // 07a: invokeinterface java/util/Collection.iterator ()Ljava/util/Iterator; 1 // 07f: astore 8 // 081: aload 8 // 083: invokeinterface java/util/Iterator.hasNext ()Z 1 // 088: ifeq 2c0 // 08b: aload 8 // 08d: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1 // 092: checkcast com/l7tech/identity/IdentityProvider // 095: astore 9 // 097: iload 2 // 098: ifeq 0aa // 09b: aload 0 // 09c: getfield com/l7tech/server/AuthenticatableHttpServlet.adminSessionManager Lcom/l7tech/server/admin/AdminSessionManager; // 09f: aload 5 // 0a1: bipush 0 // 0a2: invokevirtual com/l7tech/server/admin/AdminSessionManager.authenticate (Lcom/l7tech/policy/assertion/credential/LoginCredentials;Z)Lcom/l7tech/server/identity/AuthenticationResult; // 0a5: astore 10 // 0a7: goto 0b8 // 0aa: aload 9 // 0ac: checkcast com/l7tech/server/identity/AuthenticatingIdentityProvider // 0af: aload 5 // 0b1: invokeinterface com/l7tech/server/identity/AuthenticatingIdentityProvider.authenticate (Lcom/l7tech/policy/assertion/credential/LoginCredentials;)Lcom/l7tech/server/identity/AuthenticationResult; 2 // 0b6: astore 10 // 0b8: aload 10 // 0ba: ifnonnull 0cb // 0bd: iload 2 // 0be: ifne 0cb // 0c1: goto 0c8 // 0c4: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 0c7: athrow // 0c8: goto 081 // 0cb: aload 10 // 0cd: ifnonnull 0d3 // 0d0: goto 2c0 // 0d3: aload 10 // 0d5: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User; // 0d8: astore 11 // 0da: aload 0 // 0db: aload 10 // 0dd: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User; // 0e0: aload 4 // 0e2: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.getProviderForUser (Lcom/l7tech/identity/User;Ljava/util/Collection;)Lcom/l7tech/identity/IdentityProvider; // 0e5: astore 9 // 0e7: aload 0 // 0e8: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger; // 0eb: aload 5 // 0ed: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getLogin ()Ljava/lang/String; // 0f0: aload 9 // 0f2: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1 // 0f7: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String; // 0fa: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 0fd: bipush 50 // 0ff: aaload // 100: dup_x2 // 101: pop // 102: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 105: bipush 4 // 106: aaload // 107: swap // 108: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ] // 10d: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V // 110: aload 1 // 111: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1 // 116: ifne 136 // 119: aload 0 // 11a: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger; // 11d: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 120: bipush 44 // 122: aaload // 123: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V // 126: aload 3 // 127: aload 10 // 129: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2 // 12e: pop // 12f: goto 25d // 132: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 135: athrow // 136: getstatic com/l7tech/server/AuthenticatableHttpServlet.checkCertificatePresent Z // 139: ifne 159 // 13c: aload 0 // 13d: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger; // 140: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; // 143: bipush 17 // 145: aaload // 146: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 149: aload 3 // 14a: aload 10 // 14c: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2 // 151: pop // 152: goto 25d // 155: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 158: athrow // 159: aload 1 // 15a: invokestatic com/l7tech/server/util/ServletUtils.getRequestCert (Ljakarta/servlet/http/HttpServletRequest;)Ljava/security/cert/X509Certificate; // 15d: astore 12 // 15f: aload 0 // 160: aload 9 // 162: invokevirtual com/l7tech/server/AuthenticatableHttpServlet.isLdapCerts (Lcom/l7tech/identity/IdentityProvider;)Z // 165: ifeq 177 // 168: aload 11 // 16a: checkcast com/l7tech/identity/ldap/LdapUser // 16d: invokevirtual com/l7tech/identity/ldap/LdapUser.getCertificate ()Ljava/security/cert/X509Certificate; // 170: goto 182 // 173: invokestatic com/l7tech/server/AuthenticatableHttpServlet.c (Ljava/lang/Exception;)Ljava/lang/Exception; // 176: athrow // 177: aload 0 // 178: getfield com/l7tech/server/AuthenticatableHttpServlet.clientCertManager Lcom/l7tech/identity/cert/ClientCertManager; // 17b: aload 11 // 17d: invokeinterface com/l7tech/identity/cert/ClientCertManager.getUserCert (Lcom/l7tech/identity/User;)Ljava/security/cert/Certificate; 2 // 182: astore 13 // 184: aload 13 // 186: ifnonnull 1b7 // 189: aload 0 // 18a: getfield com/l7tech/server/AuthenticatableHttpServlet.logger Ljava/util/logging/Logger; // 18d: aload 11 // 18f: invokeinterface com/l7tech/identity/User.getLogin ()Ljava/lang/String; 1 // 194: getstatic com/l7tech/server/AuthenticatableHttpServlet.a [Ljava/lang/String; ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/PasswdServlet.java ===== package com.l7tech.server; import com.l7tech.common.password.PasswordHasher; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.AuthenticationException; import com.l7tech.server.admin.AdminSessionManager; import com.l7tech.server.security.PasswordEnforcerManager; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class PasswdServlet extends AuthenticatableHttpServlet { private PasswordEnforcerManager passwordEnforcerManager; private PasswordHasher passwordHasher; private AdminSessionManager adminSessionManager; static final long serialVersionUID = -3423084256915963308L; private static final String[] b; @Override public void init(ServletConfig var1) throws ServletException { super.init(var1); WebApplicationContext var2 = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); String[] var3 = b; this.passwordEnforcerManager = (PasswordEnforcerManager)var2.getBean(var3[23], PasswordEnforcerManager.class); this.passwordHasher = (PasswordHasher)var2.getBean(var3[1], PasswordHasher.class); this.adminSessionManager = (AdminSessionManager)var2.getBean(var3[18], AdminSessionManager.class); } @Override protected String getFeature() { return b[25]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.PASSWD; } protected void doPost(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 1 // 001: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1 // 006: ifne 027 // 009: aload 0 // 00a: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 00d: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 010: bipush 17 // 012: aaload // 013: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 016: aload 2 // 017: sipush 403 // 01a: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 01d: bipush 2 // 01e: aaload // 01f: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 022: return // 023: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 026: athrow // 027: aload 0 // 028: aload 1 // 029: invokevirtual com/l7tech/server/PasswdServlet.authenticateRequestBasic (Ljakarta/servlet/http/HttpServletRequest;)[Lcom/l7tech/server/identity/AuthenticationResult; // 02c: astore 3 // 02d: goto 0a6 // 030: astore 4 // 032: aload 0 // 033: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 036: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 039: aload 4 // 03b: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String; // 03e: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 041: astore 13 // 043: aload 13 // 045: bipush 8 // 047: aaload // 048: swap // 049: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 04e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 051: aload 2 // 052: sipush 401 // 055: aload 13 // 057: bipush 5 // 058: aaload // 059: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 05c: return // 05d: astore 4 // 05f: aload 0 // 060: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 063: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 066: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 069: astore 13 // 06b: aload 13 // 06d: bipush 3 // 06e: aaload // 06f: aload 4 // 071: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 074: aload 2 // 075: sipush 503 // 078: aload 13 // 07a: bipush 16 // 07c: aaload // 07d: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 080: return // 081: astore 4 // 083: aload 0 // 084: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 087: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 08a: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 08d: astore 13 // 08f: aload 13 // 091: bipush 21 // 093: aaload // 094: aload 4 // 096: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 099: aload 2 // 09a: sipush 503 // 09d: aload 13 // 09f: bipush 10 // 0a1: aaload // 0a2: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 0a5: return // 0a6: aload 3 // 0a7: ifnull 0b7 // 0aa: aload 3 // 0ab: arraylength // 0ac: bipush 1 // 0ad: if_icmpge 0d6 // 0b0: goto 0b7 // 0b3: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 0b6: athrow // 0b7: aload 0 // 0b8: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 0bb: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 0be: bipush 15 // 0c0: aaload // 0c1: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 0c4: aload 2 // 0c5: sipush 401 // 0c8: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 0cb: bipush 12 // 0cd: aaload // 0ce: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 0d1: return // 0d2: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 0d5: athrow // 0d6: aconst_null // 0d7: astore 4 // 0d9: aconst_null // 0da: astore 5 // 0dc: aload 3 // 0dd: astore 6 // 0df: aload 6 // 0e1: arraylength // 0e2: istore 7 // 0e4: bipush 0 // 0e5: istore 8 // 0e7: iload 8 // 0e9: iload 7 // 0eb: if_icmpge 173 // 0ee: aload 6 // 0f0: iload 8 // 0f2: aaload // 0f3: astore 9 // 0f5: aload 9 // 0f7: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User; // 0fa: astore 10 // 0fc: aload 0 // 0fd: invokevirtual com/l7tech/server/PasswdServlet.getApplicationContext ()Lorg/springframework/context/ApplicationContext; // 100: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 103: astore 13 // 105: aload 13 // 107: bipush 20 // 109: aaload // 10a: invokeinterface org/springframework/context/ApplicationContext.getBean (Ljava/lang/String;)Ljava/lang/Object; 2 // 10f: checkcast com/l7tech/server/identity/IdentityProviderFactory // 112: astore 11 // 114: aload 11 // 116: aload 10 // 118: invokeinterface com/l7tech/identity/User.getProviderId ()Lcom/l7tech/objectmodel/Goid; 1 // 11d: invokevirtual com/l7tech/server/identity/IdentityProviderFactory.getProvider (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/identity/IdentityProvider; // 120: astore 12 // 122: aload 12 // 124: invokeinterface com/l7tech/identity/IdentityProvider.getConfig ()Lcom/l7tech/identity/IdentityProviderConfig; 1 // 129: invokevirtual com/l7tech/identity/IdentityProviderConfig.getTypeVal ()I // 12c: getstatic com/l7tech/identity/IdentityProviderType.INTERNAL Lcom/l7tech/identity/IdentityProviderType; // 12f: invokevirtual com/l7tech/identity/IdentityProviderType.toVal ()I // 132: if_icmpne 146 // 135: aload 10 // 137: checkcast com/l7tech/identity/internal/InternalUser // 13a: astore 4 // 13c: aload 12 // 13e: checkcast com/l7tech/server/identity/internal/InternalIdentityProvider // 141: astore 5 // 143: goto 173 // 146: goto 16d // 149: astore 11 // 14b: aload 0 // 14c: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 14f: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 152: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 155: astore 13 // 157: aload 13 // 159: bipush 26 // 15b: aaload // 15c: aload 11 // 15e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 161: aload 2 // 162: sipush 500 // 165: aload 11 // 167: invokevirtual com/l7tech/objectmodel/FindException.getMessage ()Ljava/lang/String; // 16a: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 16d: iinc 8 1 // 170: goto 0e7 // 173: aload 4 // 175: ifnonnull 196 // 178: aload 0 // 179: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 17c: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 17f: bipush 0 // 180: aaload // 181: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 184: aload 2 // 185: sipush 403 // 188: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 18b: bipush 9 // 18d: aaload // 18e: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 191: return // 192: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 195: athrow // 196: aload 1 // 197: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpHeaders.HEADER_NEWPASSWD Ljava/lang/String; // 19a: invokeinterface jakarta/servlet/http/HttpServletRequest.getHeader (Ljava/lang/String;)Ljava/lang/String; 2 // 19f: astore 6 // 1a1: aload 0 // 1a2: aload 1 // 1a3: invokevirtual com/l7tech/server/PasswdServlet.findCredentialsBasic (Ljakarta/servlet/http/HttpServletRequest;)Lcom/l7tech/policy/assertion/credential/LoginCredentials; // 1a6: astore 7 // 1a8: new java/lang/String // 1ab: dup // 1ac: aload 7 // 1ae: invokevirtual com/l7tech/policy/assertion/credential/LoginCredentials.getCredentials ()[C // 1b1: invokespecial java/lang/String. ([C)V // 1b4: astore 8 // 1b6: aload 6 // 1b8: ifnull 1cb // 1bb: aload 6 // 1bd: invokevirtual java/lang/String.length ()I // 1c0: bipush 1 // 1c1: if_icmpge 1f9 // 1c4: goto 1cb // 1c7: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 1ca: athrow // 1cb: aload 0 // 1cc: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 1cf: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpHeaders.HEADER_NEWPASSWD Ljava/lang/String; // 1d2: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 1d5: bipush 11 // 1d7: aaload // 1d8: swap // 1d9: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 1dc: bipush 14 // 1de: aaload // 1df: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 1e4: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 1e7: aload 2 // 1e8: sipush 400 // 1eb: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 1ee: bipush 24 // 1f0: aaload // 1f1: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 1f4: return // 1f5: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 1f8: athrow // 1f9: new java/lang/String // 1fc: dup // 1fd: aload 6 // 1ff: bipush 1 // 200: invokestatic com/l7tech/util/HexUtils.decodeBase64 (Ljava/lang/String;Z)[B // 203: getstatic com/l7tech/util/Charsets.UTF8 Ljava/nio/charset/Charset; // 206: invokespecial java/lang/String. ([BLjava/nio/charset/Charset;)V // 209: astore 6 // 20b: aload 0 // 20c: getfield com/l7tech/server/PasswdServlet.adminSessionManager Lcom/l7tech/server/admin/AdminSessionManager; // 20f: aload 4 // 211: invokevirtual com/l7tech/server/admin/AdminSessionManager.isAdministrativeUser (Lcom/l7tech/identity/User;)Z // 214: istore 9 // 216: iload 9 // 218: ifeq 230 // 21b: aload 0 // 21c: getfield com/l7tech/server/PasswdServlet.adminSessionManager Lcom/l7tech/server/admin/AdminSessionManager; // 21f: aload 4 // 221: aload 8 // 223: aload 6 // 225: invokevirtual com/l7tech/server/admin/AdminSessionManager.changePassword (Lcom/l7tech/identity/User;Ljava/lang/String;Ljava/lang/String;)Z // 228: pop // 229: goto 286 // 22c: invokestatic com/l7tech/server/PasswdServlet.a (Lcom/l7tech/identity/AuthenticationException;)Lcom/l7tech/identity/AuthenticationException; // 22f: athrow // 230: new com/l7tech/identity/internal/InternalUser // 233: dup // 234: invokespecial com/l7tech/identity/internal/InternalUser. ()V // 237: astore 10 // 239: aload 10 // 23b: aload 4 // 23d: invokevirtual com/l7tech/identity/internal/InternalUser.copyFrom (Lcom/l7tech/identity/User;)V // 240: aload 10 // 242: aload 4 // 244: invokevirtual com/l7tech/identity/internal/InternalUser.getVersion ()I // 247: invokevirtual com/l7tech/identity/internal/InternalUser.setVersion (I)V // 24a: aload 0 // 24b: getfield com/l7tech/server/PasswdServlet.passwordHasher Lcom/l7tech/common/password/PasswordHasher; // 24e: aload 6 // 250: getstatic com/l7tech/util/Charsets.UTF8 Ljava/nio/charset/Charset; // 253: invokevirtual java/lang/String.getBytes (Ljava/nio/charset/Charset;)[B // 256: invokeinterface com/l7tech/common/password/PasswordHasher.hashPassword ([B)Ljava/lang/String; 2 // 25b: astore 11 // 25d: aload 0 // 25e: getfield com/l7tech/server/PasswdServlet.passwordEnforcerManager Lcom/l7tech/server/security/PasswordEnforcerManager; // 261: aload 10 // 263: aload 6 // 265: aload 8 // 267: invokevirtual com/l7tech/server/security/PasswordEnforcerManager.isPasswordPolicyCompliant (Lcom/l7tech/identity/User;Ljava/lang/String;Ljava/lang/String;)V // 26a: aload 10 // 26c: aload 11 // 26e: invokevirtual com/l7tech/identity/internal/InternalUser.setHashedPassword (Ljava/lang/String;)V // 271: aload 5 // 273: invokeinterface com/l7tech/server/identity/internal/InternalIdentityProvider.getUserManager ()Lcom/l7tech/identity/UserManager; 1 // 278: checkcast com/l7tech/server/identity/internal/InternalUserManager // 27b: astore 12 // 27d: aload 12 // 27f: aload 10 // 281: invokeinterface com/l7tech/server/identity/internal/InternalUserManager.update (Lcom/l7tech/identity/User;)V 2 // 286: aload 0 // 287: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 28a: aload 4 // 28c: invokevirtual com/l7tech/identity/internal/InternalUser.getLogin ()Ljava/lang/String; // 28f: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 292: astore 13 // 294: aload 13 // 296: bipush 6 // 298: aaload // 299: swap // 29a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 29f: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V // 2a2: aload 2 // 2a3: sipush 200 // 2a6: invokeinterface jakarta/servlet/http/HttpServletResponse.setStatus (I)V 2 // 2ab: aload 2 // 2ac: invokeinterface jakarta/servlet/http/HttpServletResponse.getOutputStream ()Ljakarta/servlet/ServletOutputStream; 1 // 2b1: astore 10 // 2b3: aload 10 // 2b5: aload 13 // 2b7: bipush 7 // 2b9: aaload // 2ba: invokevirtual java/lang/String.getBytes ()[B // 2bd: invokevirtual java/io/OutputStream.write ([B)V // 2c0: aload 10 // 2c2: invokevirtual java/io/OutputStream.close ()V // 2c5: goto 311 // 2c8: astore 9 // 2ca: aload 0 // 2cb: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 2ce: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 2d1: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 2d4: astore 13 // 2d6: aload 13 // 2d8: bipush 13 // 2da: aaload // 2db: aload 9 // 2dd: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 2e0: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 2e3: aload 2 // 2e4: sipush 400 // 2e7: aload 13 // 2e9: bipush 19 // 2eb: aaload // 2ec: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 2ef: goto 311 // 2f2: astore 9 // 2f4: aload 0 // 2f5: getfield com/l7tech/server/PasswdServlet.logger Ljava/util/logging/Logger; // 2f8: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 2fb: getstatic com/l7tech/server/PasswdServlet.b [Ljava/lang/String; // 2fe: bipush 4 // 2ff: aaload // 300: aload 9 // 302: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 305: aload 2 // 306: sipush 500 // 309: aload 9 // 30b: invokevirtual com/l7tech/objectmodel/ObjectModelException.getMessage ()Ljava/lang/String; // 30e: invokestatic com/l7tech/server/PasswdServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 311: return // try (0 -> 16): 16 com/l7tech/identity/AuthenticationException // try (18 -> 22): 23 com/l7tech/identity/AuthenticationException // try (18 -> 22): 44 com/l7tech/gateway/common/LicenseException // try (18 -> 22): 62 com/l7tech/server/transport/ListenerException // try (82 -> 102): 102 com/l7tech/identity/AuthenticationException // try (80 -> 86): 87 com/l7tech/identity/AuthenticationException // try (125 -> 152): 154 com/l7tech/objectmodel/FindException // try (246 -> 256): 256 com/l7tech/identity/AuthenticationException // try (205 -> 231): 231 com/l7tech/identity/AuthenticationException // try (203 -> 209): 210 com/l7tech/identity/AuthenticationException // try (172 -> 187): 187 com/l7tech/identity/AuthenticationException // try (241 -> 318): 319 com/l7tech/objectmodel/InvalidPasswordException // try (241 -> 318): 338 com/l7tech/objectmodel/ObjectModelException } private static void sendBackError(HttpServletResponse var0, int var1, String var2) throws IOException { var0.setStatus(var1); ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/TokenServiceServlet.java ===== package com.l7tech.server; import com.l7tech.common.io.XmlUtil; import com.l7tech.gateway.common.transport.SsgConnector; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.server.message.PolicyEnforcementContext; import com.l7tech.server.transport.ListenerException; import com.l7tech.server.transport.http.HttpTransportModule; import com.l7tech.server.util.SoapFaultManager; import com.l7tech.util.Config; import com.l7tech.xml.SoapFaultLevel; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.beans.BeansException; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import org.w3c.dom.Document; public class TokenServiceServlet extends HttpServlet { private WebApplicationContext applicationContext; private TokenService tokenService; private SoapFaultManager soapFaultManager; private StashManagerFactory stashManagerFactory; private Config serverConfig; private final Logger logger = Logger.getLogger(this.getClass().getName()); public static final String DEFAULT_CONTENT_TYPE; static final long serialVersionUID = -7592091795540573125L; private static final String[] a; public void init(ServletConfig var1) throws ServletException { try { super.init(var1); this.applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); if (this.applicationContext == null) { throw new ServletException(a[13]); } } catch (BeansException var5) { throw a(var5); } try { String[] var3 = a; this.tokenService = (TokenService)this.applicationContext.getBean(var3[10], TokenService.class); this.soapFaultManager = (SoapFaultManager)this.applicationContext.getBean(var3[9], SoapFaultManager.class); this.stashManagerFactory = (StashManagerFactory)this.applicationContext.getBean(var3[6], StashManagerFactory.class); this.serverConfig = (Config)this.applicationContext.getBean(var3[11], Config.class); } catch (BeansException var4) { throw new ServletException(a[1], var4); } } protected void service(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { try { SsgConnector var3 = HttpTransportModule.getConnector(var1); HttpTransportModule.addHstsResponseHeaderIfRequired(var1, var2, var3, this.serverConfig); HttpTransportModule.requireEndpoint(var3, Endpoint.STS); super.service(var1, var2); } catch (ListenerException var5) { String[] var4 = a; this.logger.log(Level.INFO, var4[15]); var2.sendError(404, var4[16]); } } public void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { throw new ServletException(a[14]); } public void doPost(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: new com/l7tech/message/Message // 003: dup // 004: invokespecial com/l7tech/message/Message. ()V // 007: astore 3 // 008: new com/l7tech/message/Message // 00b: dup // 00c: invokespecial com/l7tech/message/Message. ()V // 00f: astore 4 // 011: aload 1 // 012: invokeinterface jakarta/servlet/http/HttpServletRequest.getContentType ()Ljava/lang/String; 1 // 017: astore 5 // 019: aload 5 // 01b: ifnull 039 // 01e: aload 5 // 020: invokevirtual java/lang/String.length ()I // 023: ifle 039 // 026: goto 02d // 029: invokestatic com/l7tech/server/TokenServiceServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 02c: athrow // 02d: aload 5 // 02f: invokestatic com/l7tech/common/mime/ContentTypeHeader.parseValue (Ljava/lang/String;)Lcom/l7tech/common/mime/ContentTypeHeader; // 032: goto 03c // 035: invokestatic com/l7tech/server/TokenServiceServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 038: athrow // 039: getstatic com/l7tech/common/mime/ContentTypeHeader.XML_DEFAULT Lcom/l7tech/common/mime/ContentTypeHeader; // 03c: astore 6 // 03e: new com/l7tech/message/HttpServletRequestKnob // 041: dup // 042: aload 1 // 043: invokespecial com/l7tech/message/HttpServletRequestKnob. (Ljakarta/servlet/http/HttpServletRequest;)V // 046: astore 7 // 048: aload 4 // 04a: aload 7 // 04c: invokevirtual com/l7tech/message/Message.attachHttpRequestKnob (Lcom/l7tech/message/HttpRequestKnob;)V // 04f: new com/l7tech/message/HttpServletResponseKnob // 052: dup // 053: aload 2 // 054: invokespecial com/l7tech/message/HttpServletResponseKnob. (Ljakarta/servlet/http/HttpServletResponse;)V // 057: astore 8 // 059: aload 3 // 05a: aload 8 // 05c: invokevirtual com/l7tech/message/Message.attachHttpResponseKnob (Lcom/l7tech/message/HttpResponseKnob;)V // 05f: aload 4 // 061: aload 3 // 062: bipush 1 // 063: invokestatic com/l7tech/server/message/PolicyEnforcementContextFactory.createPolicyEnforcementContext (Lcom/l7tech/message/Message;Lcom/l7tech/message/Message;Z)Lcom/l7tech/server/message/PolicyEnforcementContext; // 066: astore 9 // 068: aload 0 // 069: getfield com/l7tech/server/TokenServiceServlet.stashManagerFactory Lcom/l7tech/server/StashManagerFactory; // 06c: invokeinterface com/l7tech/server/StashManagerFactory.createStashManager ()Lcom/l7tech/common/mime/StashManager; 1 // 071: astore 11 // 073: aload 4 // 075: aload 11 // 077: aload 6 // 079: aload 1 // 07a: invokeinterface jakarta/servlet/http/HttpServletRequest.getInputStream ()Ljakarta/servlet/ServletInputStream; 1 // 07f: invokestatic com/l7tech/message/Message.getMaxBytes ()J // 082: invokevirtual com/l7tech/message/Message.initialize (Lcom/l7tech/common/mime/StashManager;Lcom/l7tech/common/mime/ContentTypeHeader;Ljava/io/InputStream;J)V // 085: aload 0 // 086: getfield com/l7tech/server/TokenServiceServlet.tokenService Lcom/l7tech/server/TokenService; // 089: aload 9 // 08b: aload 0 // 08c: aload 9 // 08e: invokevirtual com/l7tech/server/TokenServiceServlet.authenticator (Lcom/l7tech/server/message/PolicyEnforcementContext;)Lcom/l7tech/server/TokenService$CredentialsAuthenticator; // 091: bipush 0 // 092: bipush 0 // 093: invokeinterface com/l7tech/server/TokenService.respondToSecurityTokenRequest (Lcom/l7tech/server/message/PolicyEnforcementContext;Lcom/l7tech/server/TokenService$CredentialsAuthenticator;ZZ)Lcom/l7tech/policy/assertion/AssertionStatus; 5 // 098: astore 10 // 09a: aload 9 // 09c: aload 10 // 09e: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.setPolicyResult (Lcom/l7tech/policy/assertion/AssertionStatus;)V 2 // 0a3: goto 12d // 0a6: astore 11 // 0a8: aload 11 // 0aa: invokevirtual com/l7tech/util/InvalidDocumentFormatException.getMessage ()Ljava/lang/String; // 0ad: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 0b0: astore 15 // 0b2: aload 15 // 0b4: bipush 3 // 0b5: aaload // 0b6: swap // 0b7: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 0bc: astore 12 // 0be: aload 0 // 0bf: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 0c2: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 0c5: aload 12 // 0c7: aload 11 // 0c9: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0cc: aload 0 // 0cd: aload 2 // 0ce: sipush 400 // 0d1: aload 12 // 0d3: invokevirtual com/l7tech/server/TokenServiceServlet.sendBackNonSoapError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 0d6: aload 9 // 0d8: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 0dd: return // 0de: astore 11 // 0e0: aload 11 // 0e2: invokevirtual java/lang/Exception.getMessage ()Ljava/lang/String; // 0e5: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 0e8: astore 15 // 0ea: aload 15 // 0ec: bipush 7 // 0ee: aaload // 0ef: swap // 0f0: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 0f5: astore 12 // 0f7: aload 0 // 0f8: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 0fb: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 0fe: aload 12 // 100: aload 11 // 102: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 105: aload 0 // 106: aload 9 // 108: aload 11 // 10a: aload 2 // 10b: invokevirtual com/l7tech/server/TokenServiceServlet.sendExceptionFault (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljava/lang/Throwable;Ljakarta/servlet/http/HttpServletResponse;)V // 10e: aload 9 // 110: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 115: return // 116: astore 11 // 118: aload 0 // 119: aload 2 // 11a: sipush 401 // 11d: aload 11 // 11f: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String; // 122: invokevirtual com/l7tech/server/TokenServiceServlet.sendBackNonSoapError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 125: aload 9 // 127: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 12c: return // 12d: aload 8 // 12f: invokevirtual com/l7tech/message/HttpServletResponseKnob.beginResponse ()V // 132: aload 8 // 134: invokevirtual com/l7tech/message/HttpServletResponseKnob.getStatus ()I // 137: ifne 14a // 13a: aload 2 // 13b: sipush 200 // 13e: invokeinterface jakarta/servlet/http/HttpServletResponse.setStatus (I)V 2 // 143: goto 14a // 146: invokestatic com/l7tech/server/TokenServiceServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 149: athrow // 14a: aload 10 // 14c: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus; // 14f: if_acmpeq 161 // 152: aload 0 // 153: aload 9 // 155: aload 2 // 156: invokevirtual com/l7tech/server/TokenServiceServlet.returnFault (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljakarta/servlet/http/HttpServletResponse;)V // 159: aload 9 // 15b: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 160: return // 161: aload 9 // 163: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getResponse ()Lcom/l7tech/message/Message; 1 // 168: invokevirtual com/l7tech/message/Message.getXmlKnob ()Lcom/l7tech/message/XmlKnob; // 16b: invokeinterface com/l7tech/message/XmlKnob.getDocumentReadOnly ()Lorg/w3c/dom/Document; 1 // 170: astore 11 // 172: goto 1ac // 175: astore 12 // 177: aload 12 // 179: invokevirtual org/xml/sax/SAXException.getMessage ()Ljava/lang/String; // 17c: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 17f: astore 15 // 181: aload 15 // 183: bipush 0 // 184: aaload // 185: swap // 186: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 18b: astore 13 // 18d: aload 0 // 18e: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 191: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 194: aload 13 // 196: aload 12 // 198: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 19b: aload 0 // 19c: aload 9 // 19e: aload 12 // 1a0: aload 2 // 1a1: invokevirtual com/l7tech/server/TokenServiceServlet.sendExceptionFault (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljava/lang/Throwable;Ljakarta/servlet/http/HttpServletResponse;)V // 1a4: aload 9 // 1a6: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 1ab: return // 1ac: aload 0 // 1ad: aload 11 // 1af: aload 2 // 1b0: invokevirtual com/l7tech/server/TokenServiceServlet.outputRequestSecurityTokenResponse (Lorg/w3c/dom/Document;Ljakarta/servlet/http/HttpServletResponse;)V // 1b3: aload 0 // 1b4: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 1b7: aload 11 // 1b9: invokestatic com/l7tech/common/io/XmlUtil.nodeToFormattedString (Lorg/w3c/dom/Node;)Ljava/lang/String; // 1bc: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 1bf: astore 15 // 1c1: aload 15 // 1c3: bipush 4 // 1c4: aaload // 1c5: swap // 1c6: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 1cb: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 1ce: goto 200 // 1d1: astore 12 // 1d3: aload 12 // 1d5: invokevirtual java/io/IOException.getMessage ()Ljava/lang/String; // 1d8: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 1db: astore 15 // 1dd: aload 15 // 1df: bipush 5 // 1e0: aaload // 1e1: swap // 1e2: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 1e7: astore 13 // 1e9: aload 0 // 1ea: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 1ed: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 1f0: aload 13 // 1f2: aload 12 // 1f4: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 1f7: aload 0 // 1f8: aload 9 // 1fa: aload 12 // 1fc: aload 2 // 1fd: invokevirtual com/l7tech/server/TokenServiceServlet.sendExceptionFault (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljava/lang/Throwable;Ljakarta/servlet/http/HttpServletResponse;)V // 200: aload 9 // 202: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 207: goto 24b // 20a: astore 10 // 20c: aload 10 // 20e: invokevirtual java/lang/Throwable.getMessage ()Ljava/lang/String; // 211: getstatic com/l7tech/server/TokenServiceServlet.a [Ljava/lang/String; // 214: bipush 2 // 215: aaload // 216: swap // 217: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 21c: astore 11 // 21e: aload 0 // 21f: getfield com/l7tech/server/TokenServiceServlet.logger Ljava/util/logging/Logger; // 222: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 225: aload 11 // 227: aload 10 // 229: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 22c: aload 0 // 22d: aload 9 // 22f: aload 10 // 231: aload 2 // 232: invokevirtual com/l7tech/server/TokenServiceServlet.sendExceptionFault (Lcom/l7tech/server/message/PolicyEnforcementContext;Ljava/lang/Throwable;Ljakarta/servlet/http/HttpServletResponse;)V // 235: aload 9 // 237: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 23c: goto 24b // 23f: astore 14 // 241: aload 9 // 243: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.close ()V 1 // 248: aload 14 // 24a: athrow // 24b: return // try (13 -> 22): 22 com/l7tech/util/InvalidDocumentFormatException // try (11 -> 16): 17 com/l7tech/util/InvalidDocumentFormatException // try (47 -> 71): 72 com/l7tech/util/InvalidDocumentFormatException // try (47 -> 71): 97 com/l7tech/server/TokenServiceImpl$TokenServiceException // try (47 -> 71): 97 com/l7tech/security/xml/processor/ProcessorException // try (47 -> 71): 97 com/l7tech/security/xml/processor/BadSecurityContextException // try (47 -> 71): 97 java/security/GeneralSecurityException // try (47 -> 71): 122 com/l7tech/identity/AuthenticationException // try (153 -> 158): 159 org/xml/sax/SAXException // try (184 -> 200): 201 java/io/IOException // try (47 -> 94): 226 java/lang/Throwable // try (97 -> 119): 226 java/lang/Throwable // try (122 -> 129): 226 java/lang/Throwable // try (132 -> 140): 141 com/l7tech/util/InvalidDocumentFormatException // try (132 -> 150): 226 java/lang/Throwable // try (153 -> 181): 226 java/lang/Throwable // try (184 -> 223): 226 java/lang/Throwable // try (47 -> 94): 249 null // try (97 -> 119): 249 null // try (122 -> 129): 249 null // try (132 -> 150): 249 null // try (153 -> 181): 249 null // try (184 -> 223): 249 null // try (226 -> 246): 249 null // try (249 -> 250): 249 null } private TokenService.CredentialsAuthenticator authenticator(PolicyEnforcementContext var1) { return new a_(this, var1); } private void outputRequestSecurityTokenResponse(Document var1, HttpServletResponse var2) throws IOException { var2.setContentType(a[12]); ServletOutputStream var3 = var2.getOutputStream(); XmlUtil.nodeToOutputStream(var1, var3); var3.close(); } private void sendBackNonSoapError(HttpServletResponse var1, int var2, String var3) throws IOException { ServletOutputStream var4 = null; try { var4 = var1.getOutputStream(); try { var1.setStatus(var2); if (var3 != null) { var4.write(var3.getBytes()); } } catch (IOException var11) { throw a(var11); } } finally { try { if (var4 != null) { var4.close(); } } catch (IOException var10) { throw a(var10); } } } // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) private void returnFault(PolicyEnforcementContext var1, HttpServletResponse var2) throws IOException { ServletOutputStream var3 = null; boolean var9 = false /* VF: Semaphore variable */; try { var9 = true; var3 = var2.getOutputStream(); var2.setStatus(500); SoapFaultLevel var4 = var1.getFaultlevel(); SoapFaultManager.FaultResponse var5 = this.soapFaultManager.constructReturningFault(var4, var1); this.soapFaultManager.sendExtraHeaders(var5, var2); var2.setContentType(var5.getContentType().getFullValue()); var3.write(var5.getContentBytes()); var9 = false; } finally { if (var9) { try { ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/identity/cert/CSRHandler.java ===== package com.l7tech.server.identity.cert; import com.l7tech.common.io.CertUtils; import com.l7tech.gateway.common.security.keystore.SsgKeyEntry; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.IdentityProviderConfigManager; import com.l7tech.identity.User; import com.l7tech.security.prov.JceProvider; import com.l7tech.security.prov.RsaSignerEngine; import com.l7tech.server.AuthenticatableHttpServlet; import com.l7tech.server.DefaultKey; import com.l7tech.util.ExceptionUtils; import com.l7tech.util.IOUtils; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.UnrecoverableKeyException; import org.springframework.context.ApplicationContext; public class CSRHandler extends AuthenticatableHttpServlet { private DefaultKey defaultKey; private IdentityProviderConfigManager providerConfigManager; public static final String AUTH_HEADER_NAME; public static final String ROUTED_FROM_PEER; private static final String PROP_PKIX_CSR_DEFAULT_EXPIRY_AGE; static final long serialVersionUID = -1312528994084368316L; private static final String[] b; @Override public void init(ServletConfig var1) throws ServletException { super.init(var1); ApplicationContext var10001 = this.getApplicationContext(); String[] var2 = b; this.defaultKey = (DefaultKey)var10001.getBean(var2[35], DefaultKey.class); this.providerConfigManager = (IdentityProviderConfigManager)this.getApplicationContext().getBean(var2[29], IdentityProviderConfigManager.class); } @Override protected String getFeature() { return b[23]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.CSRHANDLER; } protected void doPost(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 1 // 001: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1 // 006: ifne 01c // 009: aload 2 // 00a: sipush 403 // 00d: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 010: bipush 1 // 011: aaload // 012: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 017: return // 018: invokestatic com/l7tech/server/identity/cert/CSRHandler.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 01b: athrow // 01c: aload 0 // 01d: aload 1 // 01e: invokevirtual com/l7tech/server/identity/cert/CSRHandler.authenticateRequestBasic (Ljakarta/servlet/http/HttpServletRequest;)[Lcom/l7tech/server/identity/AuthenticationResult; // 021: astore 3 // 022: goto 107 // 025: astore 4 // 027: aload 2 // 028: sipush 401 // 02b: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 02e: astore 15 // 030: aload 15 // 032: bipush 12 // 034: aaload // 035: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 03a: aload 0 // 03b: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 03e: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 041: aload 4 // 043: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 046: aload 15 // 048: bipush 17 // 04a: aaload // 04b: swap // 04c: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 051: aload 4 // 053: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 056: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 059: return // 05a: astore 4 // 05c: aload 2 // 05d: sipush 401 // 060: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 063: astore 15 // 065: aload 15 // 067: bipush 5 // 068: aaload // 069: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 06e: aload 0 // 06f: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 072: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 075: aload 4 // 077: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 07a: aload 15 // 07c: bipush 18 // 07e: aaload // 07f: swap // 080: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 085: aload 4 // 087: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 08a: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 08d: return // 08e: astore 4 // 090: aload 0 // 091: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 094: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 097: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 09a: astore 15 // 09c: aload 15 // 09e: bipush 10 // 0a0: aaload // 0a1: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 0a4: aload 2 // 0a5: sipush 403 // 0a8: aload 15 // 0aa: bipush 22 // 0ac: aaload // 0ad: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 0b2: return // 0b3: astore 4 // 0b5: aload 0 // 0b6: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 0b9: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 0bc: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 0bf: astore 15 // 0c1: aload 15 // 0c3: bipush 8 // 0c5: aaload // 0c6: aload 4 // 0c8: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 0cb: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0ce: aload 2 // 0cf: sipush 503 // 0d2: aload 15 // 0d4: bipush 6 // 0d6: aaload // 0d7: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 0dc: return // 0dd: astore 4 // 0df: aload 0 // 0e0: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 0e3: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 0e6: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 0e9: astore 15 // 0eb: aload 15 // 0ed: bipush 21 // 0ef: aaload // 0f0: aload 4 // 0f2: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 0f5: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0f8: aload 2 // 0f9: sipush 503 // 0fc: aload 15 // 0fe: bipush 15 // 100: aaload // 101: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 106: return // 107: aload 3 // 108: ifnull 118 // 10b: aload 3 // 10c: arraylength // 10d: bipush 1 // 10e: if_icmpge 137 // 111: goto 118 // 114: invokestatic com/l7tech/server/identity/cert/CSRHandler.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 117: athrow // 118: aload 2 // 119: sipush 401 // 11c: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 11f: bipush 5 // 120: aaload // 121: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 126: aload 0 // 127: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 12a: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 12d: bipush 2 // 12e: aaload // 12f: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 132: return // 133: invokestatic com/l7tech/server/identity/cert/CSRHandler.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 136: athrow // 137: aload 3 // 138: arraylength // 139: bipush 1 // 13a: if_icmple 15e // 13d: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 140: astore 15 // 142: aload 15 // 144: bipush 19 // 146: aaload // 147: astore 4 // 149: aload 2 // 14a: sipush 409 // 14d: aload 4 // 14f: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 154: aload 0 // 155: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 158: aload 4 // 15a: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 15d: return // 15e: aload 3 // 15f: bipush 0 // 160: aaload // 161: astore 4 // 163: aload 4 // 165: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User; // 168: astore 5 // 16a: aload 4 // 16c: invokevirtual com/l7tech/server/identity/AuthenticationResult.getAuthenticatedCert ()Ljava/security/cert/X509Certificate; // 16f: astore 6 // 171: aload 0 // 172: getfield com/l7tech/server/identity/cert/CSRHandler.clientCertManager Lcom/l7tech/identity/cert/ClientCertManager; // 175: aload 5 // 177: aload 6 // 179: invokeinterface com/l7tech/identity/cert/ClientCertManager.userCanGenCert (Lcom/l7tech/identity/User;Ljava/security/cert/Certificate;)Z 3 // 17e: ifne 1b2 // 181: aload 0 // 182: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 185: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 188: aload 5 // 18a: invokeinterface com/l7tech/identity/User.getLogin ()Ljava/lang/String; 1 // 18f: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 192: bipush 24 // 194: aaload // 195: swap // 196: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 19b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 19e: aload 2 // 19f: sipush 403 // 1a2: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 1a5: bipush 25 // 1a7: aaload // 1a8: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 1ad: return // 1ae: invokestatic com/l7tech/server/identity/cert/CSRHandler.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1b1: athrow // 1b2: aload 5 // 1b4: invokeinterface com/l7tech/identity/User.getProviderId ()Lcom/l7tech/objectmodel/Goid; 1 // 1b9: astore 7 // 1bb: aload 0 // 1bc: getfield com/l7tech/server/identity/cert/CSRHandler.providerConfigManager Lcom/l7tech/identity/IdentityProviderConfigManager; // 1bf: aload 7 // 1c1: invokeinterface com/l7tech/identity/IdentityProviderConfigManager.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity; 2 // 1c6: checkcast com/l7tech/identity/IdentityProviderConfig // 1c9: astore 8 // 1cb: aload 8 // 1cd: invokevirtual com/l7tech/identity/IdentityProviderConfig.canIssueCertificates ()Z // 1d0: ifne 204 // 1d3: aload 0 // 1d4: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 1d7: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 1da: aload 8 // 1dc: invokevirtual com/l7tech/identity/IdentityProviderConfig.getName ()Ljava/lang/String; // 1df: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 1e2: astore 15 // 1e4: aload 15 // 1e6: bipush 4 // 1e7: aaload // 1e8: swap // 1e9: aload 15 // 1eb: bipush 0 // 1ec: aaload // 1ed: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 1f2: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 1f5: aload 2 // 1f6: sipush 403 // 1f9: aload 15 // 1fb: bipush 25 // 1fd: aaload // 1fe: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 203: return // 204: goto 23d // 207: astore 7 // 209: aload 0 // 20a: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 20d: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 210: aload 5 // 212: invokeinterface com/l7tech/identity/User.getLogin ()Ljava/lang/String; 1 // 217: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 21a: astore 15 // 21c: aload 15 // 21e: bipush 34 // 220: aaload // 221: swap // 222: aload 15 // 224: bipush 3 // 225: aaload // 226: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 22b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 22e: aload 2 // 22f: sipush 403 // 232: aload 15 // 234: bipush 25 // 236: aaload // 237: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 23c: return // 23d: aload 0 // 23e: aload 1 // 23f: invokevirtual com/l7tech/server/identity/cert/CSRHandler.readCSRFromRequest (Ljakarta/servlet/http/HttpServletRequest;)[B // 242: astore 7 // 244: new javax/security/auth/x500/X500Principal // 247: dup // 248: aload 5 // 24a: invokeinterface com/l7tech/identity/User.getLogin ()Ljava/lang/String; 1 // 24f: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 252: astore 15 // 254: aload 15 // 256: bipush 27 // 258: aaload // 259: swap // 25a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 25f: invokespecial javax/security/auth/x500/X500Principal. (Ljava/lang/String;)V // 262: astore 9 // 264: aload 0 // 265: getfield com/l7tech/server/identity/cert/CSRHandler.config Lcom/l7tech/util/Config; // 268: aload 15 // 26a: bipush 30 // 26c: aaload // 26d: sipush 730 // 270: invokeinterface com/l7tech/util/Config.getIntProperty (Ljava/lang/String;I)I 3 // 275: istore 10 // 277: new com/l7tech/common/io/CertGenParams // 27a: dup // 27b: aload 9 // 27d: iload 10 // 27f: bipush 0 // 280: aconst_null // 281: invokespecial com/l7tech/common/io/CertGenParams. (Ljavax/security/auth/x500/X500Principal;IZLjava/lang/String;)V // 284: invokevirtual com/l7tech/common/io/CertGenParams.useUserCertDefaults ()Lcom/l7tech/common/io/CertGenParams; // 287: astore 11 // 289: aload 5 // 28b: instanceof com/l7tech/identity/internal/InternalUser // 28e: ifeq 2b9 // 291: aload 5 // 293: checkcast com/l7tech/identity/internal/InternalUser // 296: invokevirtual com/l7tech/identity/internal/InternalUser.getExpiration ()J // 299: lstore 12 // 29b: lload 12 // 29d: ldc2_w -1 // 2a0: lcmp // 2a1: ifeq 2b9 // 2a4: aload 11 // 2a6: new java/util/Date // 2a9: dup // 2aa: lload 12 // 2ac: invokespecial java/util/Date. (J)V // 2af: invokevirtual com/l7tech/common/io/CertGenParams.setNotAfter (Ljava/util/Date;)V // 2b2: goto 2b9 // 2b5: invokestatic com/l7tech/server/identity/cert/CSRHandler.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 2b8: athrow // 2b9: aload 0 // 2ba: invokevirtual com/l7tech/server/identity/cert/CSRHandler.getSigner ()Lcom/l7tech/security/prov/RsaSignerEngine; // 2bd: aload 7 // 2bf: aload 11 // 2c1: invokeinterface com/l7tech/security/prov/RsaSignerEngine.createCertificate ([BLcom/l7tech/common/io/CertGenParams;)Ljava/security/cert/Certificate; 3 // 2c6: astore 8 // 2c8: goto 312 // 2cb: astore 10 // 2cd: aload 2 // 2ce: sipush 503 // 2d1: getstatic com/l7tech/server/identity/cert/CSRHandler.b [Ljava/lang/String; // 2d4: astore 15 // 2d6: aload 15 // 2d8: bipush 36 // 2da: aaload // 2db: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 2e0: aload 0 // 2e1: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 2e4: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 2e7: aload 15 // 2e9: bipush 37 // 2eb: aaload // 2ec: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 2ef: return // 2f0: astore 10 // 2f2: aload 2 // 2f3: sipush 500 // 2f6: aload 10 // 2f8: invokevirtual java/lang/Exception.getMessage ()Ljava/lang/String; // 2fb: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (ILjava/lang/String;)V 3 // 300: aload 0 // 301: getfield com/l7tech/server/identity/cert/CSRHandler.logger Ljava/util/logging/Logger; // 304: getstatic java/util/logging/Level.SEVERE Ljava/util/logging/Level; // 307: aload 10 // 309: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 30c: aload 10 // 30e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 311: return // 312: invokestatic com/l7tech/server/audit/AuditContextUtils.isSystem ()Z // 315: istore 10 // 317: bipush 1 // 318: invokestatic com/l7tech/server/audit/AuditContextUtils.setSystem (Z)V // 31b: aload 0 // 31c: getfield com/l7tech/server/identity/cert/CSRHandler.clientCertManager Lcom/l7tech/identity/cert/ClientCertManager; // 31f: aload 5 // 321: aload 8 // 323: aload 4 // 325: invokevirtual com/l7tech/server/identity/AuthenticationResult.isCertSignedByStaleCA ()Z // 328: invokeinterface com/l7tech/identity/cert/ClientCertManager.recordNewUserCert (Lcom/l7tech/identity/User;Ljava/security/cert/Certificate;Z)V 4 // 32d: aload 0 // 32e: aload 5 // 330: invokevirtual com/l7tech/server/identity/cert/CSRHandler.buildIssuedMessage (Lcom/l7tech/identity/User;)Ljava/lang/String; ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/pm2/PM2Servlet.java ===== package com.l7tech.server.pm2; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.node.ObjectNode; import com.l7tech.common.http.HttpConstants; import com.l7tech.gateway.common.LicenseException; import com.l7tech.gateway.pm2.graphql.beans.PM2GraphQLRequest; import com.l7tech.gateway.pm2.graphql.service.PM2GraphQLService; import com.l7tech.identity.User; import com.l7tech.server.boot.GatewayBoot; import com.l7tech.server.boot.GatewayBootUtil; import com.l7tech.server.oauth2.OAuth2Exception; import com.l7tech.server.oauth2.OAuth2VerifierResult; import com.l7tech.util.ConfigFactory; import com.l7tech.util.ExceptionUtils; import com.l7tech.util.SyspropUtil; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import javax.security.auth.Subject; import org.jetbrains.annotations.Nullable; public class PM2Servlet extends PM2AbstractServlet { private static final Logger logger; private static final String TOKEN_TYPE_AT_JWT; private static final String ENABLED_PROP; private static final String SESSION_EXTENSION_THRESHOLD_SYS_PROP; private static final String SESSION_EXPIRY_SYS_PROP; private static final int SESSION_EXPIRY_DEFAULT = 1800; private static final int SESSION_EXTENSION_THRESHOLD_DEFAULT = 43200; @Nullable private PM2GraphQLService pm2GraphQLService; static final long serialVersionUID = -5968290025755970901L; private static final String[] c; @Override public void init(ServletConfig var1) throws ServletException { try { super.init(var1); this.initPM2State(); if (!GatewayBoot.Mode.RUNTIME.equals(GatewayBootUtil.getMode())) { this.pm2GraphQLService = PM2GraphQLService.getInstance(this.getApplicationContext()); } } catch (ServletException var2) { throw b(var2); } } public void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { try { this.licenseManager.requireFeature(this.getFeature()); } catch (LicenseException var5) { String[] var4 = c; logger.warning(var4[10]); this.respondError(var2, 503, var4[49]); return; } String var3 = var1.getRequestURI(); try { if (var3.endsWith(c[56])) { this.doManageSession(var1, var2); return; } } catch (LicenseException var7) { throw b(var7); } try { if (var3.endsWith(c[1])) { this.doGraphQLRequest(var1, var2); return; } } catch (LicenseException var6) { throw b(var6); } this.respondError(var2, 404, c[14]); } private void doManageSession(HttpServletRequest param1, HttpServletResponse param2) throws IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 1 // 01: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 04: astore 7 // 06: aload 7 // 08: bipush 50 // 0a: aaload // 0b: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 10: astore 3 // 11: aload 7 // 13: bipush 3 // 14: aaload // 15: aload 3 // 16: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 19: istore 4 // 1b: iload 4 // 1d: ifeq 2a // 20: getstatic com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.BASIC Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType; // 23: goto 2d // 26: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 29: athrow // 2a: getstatic com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.COOKIE Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType; // 2d: astore 5 // 2f: aload 0 // 30: aload 1 // 31: aload 2 // 32: aload 5 // 34: invokevirtual com/l7tech/server/pm2/PM2Servlet.authenticate (Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType;)Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext; // 37: astore 6 // 39: aload 6 // 3b: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.isAuthenticated ()Z // 3e: ifne 46 // 41: return // 42: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 45: athrow // 46: aload 0 // 47: aload 6 // 49: invokevirtual com/l7tech/server/pm2/PM2Servlet.verifyRBAC (Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)Z // 4c: ifne 62 // 4f: aload 0 // 50: aload 2 // 51: sipush 403 // 54: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 57: bipush 40 // 59: aaload // 5a: invokevirtual com/l7tech/server/pm2/PM2Servlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 5d: return // 5e: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 61: athrow // 62: iload 4 // 64: ifeq 75 // 67: aload 0 // 68: aload 2 // 69: aload 6 // 6b: invokevirtual com/l7tech/server/pm2/PM2Servlet.doLogin (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V // 6e: goto df // 71: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 74: athrow // 75: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 78: bipush 48 // 7a: aaload // 7b: aload 3 // 7c: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 7f: ifeq 90 // 82: aload 0 // 83: aload 2 // 84: aload 6 // 86: invokevirtual com/l7tech/server/pm2/PM2Servlet.doLogout (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V // 89: goto df // 8c: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 8f: athrow // 90: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 93: bipush 13 // 95: aaload // 96: aload 3 // 97: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 9a: ifeq ab // 9d: aload 0 // 9e: aload 2 // 9f: aload 6 // a1: invokevirtual com/l7tech/server/pm2/PM2Servlet.doRenewSession (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V // a4: goto df // a7: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // aa: athrow // ab: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // ae: bipush 23 // b0: aaload // b1: aload 3 // b2: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // b5: ifne c3 // b8: aload 3 // b9: ifnonnull d1 // bc: goto c3 // bf: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // c2: athrow // c3: aload 0 // c4: aload 2 // c5: aload 6 // c7: invokevirtual com/l7tech/server/pm2/PM2Servlet.doSessionInfo (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V // ca: goto df // cd: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // d0: athrow // d1: aload 0 // d2: aload 2 // d3: sipush 400 // d6: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // d9: bipush 11 // db: aaload // dc: invokevirtual com/l7tech/server/pm2/PM2Servlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // df: return // try (14 -> 18): 18 java/io/IOException // try (28 -> 32): 32 java/io/IOException // try (34 -> 46): 46 java/io/IOException // try (48 -> 55): 55 java/io/IOException // try (57 -> 68): 68 java/io/IOException // try (70 -> 81): 81 java/io/IOException // try (83 -> 91): 92 java/io/IOException // try (89 -> 99): 99 java/io/IOException } private void doLogin(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException { try { int var3 = this.getSessionExpiry(); HashMap var4 = new HashMap(); String[] var6 = c; var4.put(var6[17], UUID.randomUUID().toString()); var4.put(var6[38], this.getCurrentEpoch()); String var5 = this.ssgOAuth2Issuer.getSigner().generateJwt(var2.getAuthenticatedUser(), var4, var3, var6[42]); var1.setHeader(HttpConstants.HEADER_SET_COOKIE, this.getL7SessionIdCookie(var5)); this.respondSuccess(var1, this.generateTokenResponse(var3)); logger.log(Level.INFO, var6[12], var2.getAuthenticatedUser().getLogin()); } catch (JsonProcessingException | OAuth2Exception var7) { this.respondError(var1, 500, c[54]); } } private void doRenewSession(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException { OAuth2VerifierResult var3 = var2.getOAuthResult(); try { if (var3 == null) { this.respondSuccess(var1, c[45]); return; } } catch (JsonProcessingException var13) { throw b(var13); } int var4 = this.getSessionExpiry(); int var5 = this.getSessionExtensionThreshold(); long var6 = this.getAuthTime(var3); try { if (this.getCurrentEpoch() - var6 > var5) { this.respondError(var1, 403, c[26]); } } catch (JsonProcessingException var12) { throw b(var12); } HashMap var8 = new HashMap(); String[] var10 = c; var8.put(var10[17], var3.getResult().get(var10[17])); var8.put(var10[8], var6); var8.put(var10[2], var3.getResult().get(var10[2])); var8.put(var10[37], var3.getResult().get(var10[37])); var8.put(var10[41], var3.getResult().get(var10[41])); try { String var9 = this.ssgOAuth2Issuer.getSigner().generateJwt(var8, var4, var10[43]); this.ssgOAuth2Issuer.getSigner().revokeJwt(var3.getResult()); var1.setHeader(HttpConstants.HEADER_SET_COOKIE, this.getL7SessionIdCookie(var9)); this.respondSuccess(var1, this.generateTokenResponse(var4)); logger.log(Level.INFO, var10[22], var8.get(var10[37])); } catch (JsonProcessingException | OAuth2Exception var11) { this.respondError(var1, 500, c[24]); } } private void doLogout(HttpServletResponse param1, PM2AbstractServlet.PM2AuthContext param2) throws IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 2 // 01: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.getOAuthResult ()Lcom/l7tech/server/oauth2/OAuth2VerifierResult; // 04: astore 3 // 05: aload 3 // 06: ifnull 4c // 09: aload 0 // 0a: getfield com/l7tech/server/pm2/PM2Servlet.ssgOAuth2Issuer Lcom/l7tech/server/oauth2/SSGOAuth2Issuer; // 0d: invokevirtual com/l7tech/server/oauth2/SSGOAuth2Issuer.getSigner ()Lcom/l7tech/server/oauth2/OAuth2Signer; // 10: aload 3 // 11: invokeinterface com/l7tech/server/oauth2/OAuth2VerifierResult.getResult ()Ljava/util/Map; 1 // 16: invokeinterface com/l7tech/server/oauth2/OAuth2Signer.revokeJwt (Ljava/util/Map;)Z 2 // 1b: ifeq 4c // 1e: goto 25 // 21: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 24: athrow // 25: getstatic com/l7tech/server/pm2/PM2Servlet.logger Ljava/util/logging/Logger; // 28: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 2b: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 2e: bipush 51 // 30: aaload // 31: aload 3 // 32: invokeinterface com/l7tech/server/oauth2/OAuth2VerifierResult.getResult ()Ljava/util/Map; 1 // 37: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 3a: bipush 37 // 3c: aaload // 3d: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2 // 42: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V // 45: goto 4c // 48: invokestatic com/l7tech/server/pm2/PM2Servlet.b (Ljava/lang/Exception;)Ljava/lang/Exception; // 4b: athrow // 4c: goto 66 // 4f: astore 3 // 50: getstatic com/l7tech/server/pm2/PM2Servlet.logger Ljava/util/logging/Logger; // 53: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 56: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 59: astore 4 // 5b: aload 4 // 5d: bipush 5 // 5e: aaload // 5f: aload 3 // 60: invokestatic com/l7tech/util/ExceptionUtils.getMessageWithCause (Ljava/lang/Throwable;)Ljava/lang/String; // 63: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V // 66: aload 0 // 67: aload 1 // 68: ldc "" // 6a: getstatic com/l7tech/server/pm2/PM2Servlet.c [Ljava/lang/String; // 6d: bipush 28 // 6f: aaload // 70: invokevirtual com/l7tech/server/pm2/PM2Servlet.respondSuccess (Ljakarta/servlet/http/HttpServletResponse;Ljava/lang/String;Ljava/lang/String;)V // 73: return // try (5 -> 27): 28 com/l7tech/server/oauth2/OAuth2Exception // try (3 -> 12): 13 com/l7tech/server/oauth2/OAuth2Exception // try (0 -> 30): 31 com/l7tech/server/oauth2/OAuth2Exception } private void doSessionInfo(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException { ObjectNode var3 = this.objectMapper.createObjectNode(); User var4 = var2.getAuthenticatedUser(); OAuth2VerifierResult var5 = var2.getOAuthResult(); if (var5 != null) { Map var10000 = var5.getResult(); String[] var7 = c; Object var6 = var10000.get(var7[31]); var3.put(var7[18], String.valueOf(var6)); var3.put(var7[19], this.getExpiryTime(var5) - this.getCurrentEpoch()); } else { String[] var8 = c; var3.put(var8[0], UUID.randomUUID().toString()); } String[] var9 = c; var3.putObject(var9[27]) .put(var9[29], var4.getName()) .put(var9[47], var4.getLogin()) .put(var9[4], var4.getSubjectDn()) .put(var9[7], var4.getEmail()) .put(var9[33], var4.getFirstName()) .put(var9[55], var4.getLastName()) .put(var9[30], var4.getProviderId().toString()); this.respondSuccess(var1, var3.toString()); } private void doGraphQLRequest(HttpServletRequest var1, HttpServletResponse var2) throws IOException { PM2AbstractServlet.PM2AuthContext var3 = this.authenticate(var1, var2); try { if (!var3.isAuthenticated()) { return; } } catch (IOException var9) { throw b(var9); } try { if (!this.verifyRBAC(var3)) { this.respondError(var2, 403, c[52]); return; } } catch (IOException var6) { throw b(var6); } try { if (this.pm2GraphQLService == null) { this.respondError(var2, 503, ""); return; } } catch (IOException var8) { throw b(var8); } PM2GraphQLRequest var4 = this.getPM2GraphQLRequest(var1); try { if (var4 == null) { this.respondError(var2, 500, c[6]); return; } } catch (IOException var7) { throw b(var7); } Subject var5 = new Subject(); var5.getPrincipals().add(var3.getAuthenticatedUser()); Subject.callAs(var5, () -> { String[] var4x = c; logger.log(Level.FINE, var4x[34], new Object[]{var4.getQuery(), var4.getVariables()}); try { Map var3x = this.pm2GraphQLService.executeGraphQL(var4); this.respondSuccess(var2, this.toJSONString(var3x)); } catch (Exception var5x) { logger.warning(String.format(c[15], var4.getQuery(), var4.getVariables(), ExceptionUtils.getMessage(var5x))); this.respondError(var2, 500, ExceptionUtils.getMessage(var5x)); } return null; }); ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/WsdlProxyServlet.java ===== package com.l7tech.server; import com.l7tech.common.io.XmlUtil; import com.l7tech.common.protocol.SecureSpanConstants.HttpQueryParameters; import com.l7tech.gateway.common.audit.AuditFactory; import com.l7tech.gateway.common.service.PublishedService; import com.l7tech.gateway.common.service.ServiceDocument; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.User; import com.l7tech.objectmodel.FindException; import com.l7tech.objectmodel.Goid; import com.l7tech.policy.PolicyPathBuilder; import com.l7tech.policy.PolicyPathBuilderFactory; import com.l7tech.policy.assertion.Assertion; import com.l7tech.policy.assertion.CustomAssertionHolder; import com.l7tech.policy.assertion.composite.CompositeAssertion; import com.l7tech.policy.assertion.identity.IdentityAssertion; import com.l7tech.server.identity.AuthenticationResult; import com.l7tech.server.policy.filter.FilterManager; import com.l7tech.server.policy.filter.FilteringException; import com.l7tech.server.policy.filter.IdentityRule; import com.l7tech.server.service.ServiceDocumentManager; import com.l7tech.server.service.resolution.ServiceResolutionException; import com.l7tech.server.service.resolution.SoapActionResolver; import com.l7tech.server.service.resolution.UrnResolver; import com.l7tech.util.Functions; import com.l7tech.util.InetAddressUtil; import com.l7tech.util.Pair; import com.l7tech.util.Functions.UnaryVoid; import com.l7tech.wsdl.WsdlUtil; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.StringTokenizer; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class WsdlProxyServlet extends AuthenticatableHttpServlet { private static final String PARAM_ANONYMOUS; private static final String PROPERTY_WSSP_ATTACH; private static final String PROPERTY_CLEARTEXT; private static final String PROPERTY_WSDL_IMPORT_PROXY; private FilterManager wsspFilterManager; private FilterManager clientPolicyFilterManager; private SoapActionResolver sactionResolver; private UrnResolver nsResolver; private ServiceDocumentManager serviceDocumentManager; private PolicyPathBuilder policyPathBuilder; static final long serialVersionUID = -8663703807062391208L; private static final String[] b; @Override public void init(ServletConfig var1) throws ServletException { super.init(var1); WebApplicationContext var2 = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); String[] var5 = b; this.clientPolicyFilterManager = (FilterManager)var2.getBean(var5[37], FilterManager.class); this.wsspFilterManager = (FilterManager)var2.getBean(var5[60], FilterManager.class); this.serviceDocumentManager = (ServiceDocumentManager)var2.getBean(var5[59], ServiceDocumentManager.class); AuditFactory var3 = (AuditFactory)var2.getBean(var5[31], AuditFactory.class); PolicyPathBuilderFactory var4 = (PolicyPathBuilderFactory)var2.getBean(var5[77], PolicyPathBuilderFactory.class); this.policyPathBuilder = var4.makePathBuilder(); this.sactionResolver = new SoapActionResolver(var3); this.nsResolver = new UrnResolver(var3); } @Override protected String getFeature() { return b[50]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.WSDLPROXY; } @Override protected boolean isCleartextAllowed() { return this.config.getBooleanProperty(b[56], false); } protected void doGet(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 2 // 001: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 004: astore 6 // 006: aload 6 // 008: bipush 48 // 00a: aaload // 00b: invokeinterface jakarta/servlet/http/HttpServletResponse.setContentType (Ljava/lang/String;)V 2 // 010: aload 0 // 011: aload 1 // 012: invokevirtual com/l7tech/server/WsdlProxyServlet.getRequestedService (Ljakarta/servlet/http/HttpServletRequest;)Lcom/l7tech/gateway/common/service/PublishedService; // 015: astore 3 // 016: goto 07e // 019: astore 4 // 01b: aload 0 // 01c: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 01f: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 022: aload 4 // 024: invokevirtual com/l7tech/objectmodel/FindException.getMessage ()Ljava/lang/String; // 027: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 02a: astore 6 // 02c: aload 6 // 02e: bipush 95 // 030: aaload // 031: swap // 032: ldc ")" // 034: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 039: aload 4 // 03b: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 03e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 041: aload 0 // 042: aload 2 // 043: sipush 404 // 046: aload 6 // 048: bipush 74 // 04a: aaload // 04b: invokevirtual com/l7tech/server/WsdlProxyServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 04e: return // 04f: astore 4 // 051: aload 0 // 052: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 055: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 058: aload 4 // 05a: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 05d: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 060: astore 6 // 062: aload 6 // 064: bipush 23 // 066: aaload // 067: swap // 068: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 06d: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 070: aload 0 // 071: aload 2 // 072: sipush 300 // 075: aload 6 // 077: bipush 54 // 079: aaload // 07a: invokevirtual com/l7tech/server/WsdlProxyServlet.sendBackError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 07d: return // 07e: aconst_null // 07f: astore 4 // 081: aload 0 // 082: aload 1 // 083: invokevirtual com/l7tech/server/WsdlProxyServlet.credentialsPermittedForTransport (Ljakarta/servlet/http/HttpServletRequest;)Z // 086: ifeq 16d // 089: aload 3 // 08a: ifnull 098 // 08d: aload 0 // 08e: aload 1 // 08f: aload 3 // 090: invokevirtual com/l7tech/server/WsdlProxyServlet.authenticateRequestBasic (Ljakarta/servlet/http/HttpServletRequest;Lcom/l7tech/gateway/common/service/PublishedService;)[Lcom/l7tech/server/identity/AuthenticationResult; // 093: astore 4 // 095: goto 09f // 098: aload 0 // 099: aload 1 // 09a: invokevirtual com/l7tech/server/WsdlProxyServlet.authenticateRequestBasic (Ljakarta/servlet/http/HttpServletRequest;)[Lcom/l7tech/server/identity/AuthenticationResult; // 09d: astore 4 // 09f: goto 16d // 0a2: astore 5 // 0a4: aload 0 // 0a5: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 0a8: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 0ab: aload 5 // 0ad: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 0b0: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 0b3: astore 6 // 0b5: aload 6 // 0b7: bipush 5 // 0b8: aaload // 0b9: swap // 0ba: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 0bf: aload 5 // 0c1: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 0c4: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0c7: aload 2 // 0c8: sipush 403 // 0cb: invokeinterface jakarta/servlet/http/HttpServletResponse.setStatus (I)V 2 // 0d0: aload 2 // 0d1: invokeinterface jakarta/servlet/http/HttpServletResponse.getOutputStream ()Ljakarta/servlet/ServletOutputStream; 1 // 0d6: aload 6 // 0d8: bipush 6 // 0da: aaload // 0db: invokevirtual jakarta/servlet/ServletOutputStream.print (Ljava/lang/String;)V // 0de: aload 2 // 0df: invokeinterface jakarta/servlet/http/HttpServletResponse.flushBuffer ()V 1 // 0e4: return // 0e5: astore 5 // 0e7: aload 0 // 0e8: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 0eb: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 0ee: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 0f1: astore 6 // 0f3: aload 6 // 0f5: bipush 78 // 0f7: aaload // 0f8: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 0fb: aconst_null // 0fc: astore 4 // 0fe: goto 16d // 101: astore 5 // 103: aload 0 // 104: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 107: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 10a: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 10d: astore 6 // 10f: aload 6 // 111: bipush 63 // 113: aaload // 114: aload 5 // 116: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 119: aload 2 // 11a: sipush 503 // 11d: invokeinterface jakarta/servlet/http/HttpServletResponse.setStatus (I)V 2 // 122: aload 2 // 123: invokeinterface jakarta/servlet/http/HttpServletResponse.getOutputStream ()Ljakarta/servlet/ServletOutputStream; 1 // 128: aload 6 // 12a: bipush 16 // 12c: aaload // 12d: invokevirtual jakarta/servlet/ServletOutputStream.print (Ljava/lang/String;)V // 130: aload 2 // 131: invokeinterface jakarta/servlet/http/HttpServletResponse.flushBuffer ()V 1 // 136: return // 137: astore 5 // 139: aload 0 // 13a: getfield com/l7tech/server/WsdlProxyServlet.logger Ljava/util/logging/Logger; // 13d: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 140: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 143: astore 6 // 145: aload 6 // 147: bipush 29 // 149: aaload // 14a: aload 5 // 14c: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 14f: aload 2 // 150: sipush 503 // 153: invokeinterface jakarta/servlet/http/HttpServletResponse.setStatus (I)V 2 // 158: aload 2 // 159: invokeinterface jakarta/servlet/http/HttpServletResponse.getOutputStream ()Ljakarta/servlet/ServletOutputStream; 1 // 15e: aload 6 // 160: bipush 93 // 162: aaload // 163: invokevirtual jakarta/servlet/ServletOutputStream.print (Ljava/lang/String;)V // 166: aload 2 // 167: invokeinterface jakarta/servlet/http/HttpServletResponse.flushBuffer ()V 1 // 16c: return // 16d: aload 4 // 16f: ifnull 19e // 172: aload 4 // 174: arraylength // 175: ifle 19e // 178: goto 17f // 17b: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 17e: athrow // 17f: aload 0 // 180: aload 1 // 181: invokevirtual com/l7tech/server/WsdlProxyServlet.credentialsPermittedForTransport (Ljakarta/servlet/http/HttpServletRequest;)Z // 184: ifeq 19e // 187: goto 18e // 18a: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 18d: athrow // 18e: aload 0 // 18f: aload 1 // 190: aload 2 // 191: aload 3 // 192: aload 4 // 194: invokevirtual com/l7tech/server/WsdlProxyServlet.doAuthenticated (Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/gateway/common/service/PublishedService;[Lcom/l7tech/server/identity/AuthenticationResult;)V // 197: goto 1eb // 19a: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 19d: athrow // 19e: aload 0 // 19f: aload 1 // 1a0: invokevirtual com/l7tech/server/WsdlProxyServlet.credentialsPermittedForTransport (Ljakarta/servlet/http/HttpServletRequest;)Z // 1a3: ifeq 1e4 // 1a6: aload 1 // 1a7: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 1aa: bipush 7 // 1ac: aaload // 1ad: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 1b2: ifnull 1e4 // 1b5: goto 1bc // 1b8: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1bb: athrow // 1bc: aload 1 // 1bd: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 1c0: bipush 89 // 1c2: aaload // 1c3: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 1c8: invokestatic java/lang/Boolean.valueOf (Ljava/lang/String;)Ljava/lang/Boolean; // 1cb: invokevirtual java/lang/Boolean.booleanValue ()Z // 1ce: ifne 1e4 // 1d1: goto 1d8 // 1d4: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1d7: athrow // 1d8: aload 0 // 1d9: aload 2 // 1da: invokevirtual com/l7tech/server/WsdlProxyServlet.doHttpBasicChallenge (Ljakarta/servlet/http/HttpServletResponse;)V // 1dd: goto 1eb // 1e0: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1e3: athrow // 1e4: aload 0 // 1e5: aload 1 // 1e6: aload 2 // 1e7: aload 3 // 1e8: invokevirtual com/l7tech/server/WsdlProxyServlet.doAnonymous (Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/gateway/common/service/PublishedService;)V // 1eb: return // try (7 -> 11): 12 com/l7tech/objectmodel/FindException // try (7 -> 11): 37 com/l7tech/server/WsdlProxyServlet$AmbiguousServiceException // try (65 -> 77): 78 com/l7tech/identity/BadCredentialsException // try (65 -> 77): 78 com/l7tech/identity/IssuedCertNotPresentedException // try (65 -> 77): 106 com/l7tech/identity/MissingCredentialsException // try (65 -> 77): 119 com/l7tech/gateway/common/LicenseException // try (65 -> 77): 142 com/l7tech/server/transport/ListenerException // try (165 -> 170): 171 com/l7tech/objectmodel/FindException // try (167 -> 177): 178 com/l7tech/objectmodel/FindException // try (173 -> 187): 187 com/l7tech/objectmodel/FindException // try (189 -> 199): 200 com/l7tech/objectmodel/FindException // try (193 -> 210): 211 com/l7tech/objectmodel/FindException // try (202 -> 217): 217 com/l7tech/objectmodel/FindException } private boolean credentialsPermittedForTransport(HttpServletRequest param1) { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 1 // 01: invokeinterface jakarta/servlet/http/HttpServletRequest.isSecure ()Z 1 // 06: ifne 17 // 09: aload 0 // 0a: invokevirtual com/l7tech/server/WsdlProxyServlet.isCleartextAllowed ()Z // 0d: ifeq 1f // 10: goto 17 // 13: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 16: athrow // 17: bipush 1 // 18: goto 20 // 1b: invokestatic com/l7tech/server/WsdlProxyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1e: athrow // 1f: bipush 0 // 20: ireturn // try (0 -> 6): 7 java/lang/IllegalArgumentException // try (3 -> 11): 11 java/lang/IllegalArgumentException } private PublishedService getRequestedService(HttpServletRequest param1) throws WsdlProxyServlet.AmbiguousServiceException, FindException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 0 // 001: aload 1 // 002: invokevirtual com/l7tech/server/WsdlProxyServlet.systemAllowsDisabledServiceDownloads (Ljakarta/servlet/http/HttpServletRequest;)Z // 005: istore 2 // 006: aload 1 // 007: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_SERVICEOID Ljava/lang/String; // 00a: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 00f: astore 3 // 010: aload 3 // 011: ifnull 0a9 // 014: aconst_null // 015: astore 5 // 017: aconst_null // 018: astore 6 // 01a: aload 3 // 01b: invokestatic com/l7tech/objectmodel/Goid.parseGoid (Ljava/lang/String;)Lcom/l7tech/objectmodel/Goid; // 01e: astore 5 // 020: goto 04e // 023: astore 7 // 025: aload 3 // 026: invokestatic java/lang/Long.parseLong (Ljava/lang/String;)J // 029: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long; // 02c: astore 6 // 02e: goto 04e // 031: astore 8 // 033: new com/l7tech/objectmodel/FindException // 036: dup // 037: aload 3 // 038: getstatic com/l7tech/server/WsdlProxyServlet.b [Ljava/lang/String; // 03b: astore 11 // 03d: aload 11 // 03f: bipush 65 // 041: aaload // 042: swap // 043: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 048: aload 7 // 04a: invokespecial com/l7tech/objectmodel/FindException. (Ljava/lang/String;Ljava/lang/Throwable;)V // 04d: athrow // 04e: aload 5 // 050: ifnull 060 // 053: aload 0 // 054: aload 5 // 056: invokevirtual com/l7tech/server/WsdlProxyServlet.resolveService (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/gateway/common/service/PublishedService; ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/policy/PolicyServlet.java ===== package com.l7tech.server.policy; import com.l7tech.common.http.HttpHeader; import com.l7tech.common.io.XmlUtil; import com.l7tech.common.mime.ByteArrayStashManager; import com.l7tech.common.mime.ContentTypeHeader; import com.l7tech.common.protocol.SecureSpanConstants.HttpHeaders; import com.l7tech.gateway.common.Component; import com.l7tech.gateway.common.audit.SystemAuditRecord; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.User; import com.l7tech.identity.UserBean; import com.l7tech.message.HttpServletRequestKnob; import com.l7tech.message.HttpServletResponseKnob; import com.l7tech.message.Message; import com.l7tech.objectmodel.FindException; import com.l7tech.objectmodel.Goid; import com.l7tech.policy.PolicyPathBuilder; import com.l7tech.policy.PolicyPathBuilderFactory; import com.l7tech.server.AuthenticatableHttpServlet; import com.l7tech.server.DefaultKey; import com.l7tech.server.audit.AuditContextFactory; import com.l7tech.server.message.PolicyEnforcementContext; import com.l7tech.server.message.PolicyEnforcementContextFactory; import com.l7tech.server.util.SoapFaultManager; import com.l7tech.util.InetAddressUtil; import com.l7tech.util.ResourceUtils; import com.l7tech.xml.SoapFaultLevel; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.util.Collection; import java.util.StringTokenizer; import java.util.logging.Level; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.w3c.dom.Document; public class PolicyServlet extends AuthenticatableHttpServlet { private static final String DUMMY_ID_PROVIDER_OID; private AuditContextFactory auditContextFactory; private SoapFaultManager soapFaultManager; private byte[] serverCertificate; private PolicyPathBuilder policyPathBuilder; private PolicyCache policyCache; private SecureRandom secureRandom; private String nodeId; static final long serialVersionUID = 8804225192424689127L; private static final String[] b; @Override public void init(ServletConfig var1) throws ServletException { super.init(var1); try { ApplicationContext var2 = this.getApplicationContext(); String[] var5 = b; this.auditContextFactory = (AuditContextFactory)var2.getBean(var5[31], AuditContextFactory.class); this.soapFaultManager = (SoapFaultManager)var2.getBean(var5[15], SoapFaultManager.class); DefaultKey var3 = (DefaultKey)var2.getBean(var5[44], DefaultKey.class); this.nodeId = (String)var2.getBean(var5[48], String.class); this.serverCertificate = var3.getServerSslInfo().getCertificate().getEncoded(); PolicyPathBuilderFactory var4 = (PolicyPathBuilderFactory)var2.getBean(var5[17], PolicyPathBuilderFactory.class); this.policyPathBuilder = var4.makePathBuilder(); this.policyCache = (PolicyCache)var2.getBean(var5[50], PolicyCache.class); this.secureRandom = this.getBean(var5[14], SecureRandom.class); } catch (BeansException var6) { throw new ServletException(var6); } catch (IOException var7) { throw new ServletException(var7); } catch (CertificateException var8) { throw new ServletException(var8); } } @Override protected String getFeature() { return b[0]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.POLICYDISCO; } protected void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { PolicyEnforcementContext var3 = null; try { String var10000 = var1.getContentType(); String[] var10 = b; if (var10000.startsWith(var10[39])) { Message var4 = new Message(); var4.initialize(new ByteArrayStashManager(), ContentTypeHeader.parseValue(var1.getContentType()), var1.getInputStream(), Message.getMaxBytes()); var4.attachHttpRequestKnob(new HttpServletRequestKnob(var1)); Message var5 = new Message(); var5.attachHttpResponseKnob(new HttpServletResponseKnob(var2)); var3 = PolicyEnforcementContextFactory.createPolicyEnforcementContext(var4, var5, true); boolean[] var6 = new boolean[]{false}; PolicyEnforcementContext var7 = var3; var10 = b; SystemAuditRecord var8 = new SystemAuditRecord( Level.INFO, this.nodeId, Component.GW_POLICY_SERVICE, var10[23], false, null, null, null, var10[5], var1.getRemoteAddr() ); this.auditContextFactory.doWithNewAuditContext(var8, new ab(this, var1, var7, var2, var5, var6)); return; } this.logger.warning(var10[9] + var1.getContentType()); } catch (Exception var13) { this.logger.log(Level.SEVERE, b[11], var13); this.sendExceptionFault(var3, var13, var2); return; } finally { ResourceUtils.closeQuietly(var3); } } protected PolicyService getPolicyService() { return (PolicyService)this.getApplicationContext().getBean(b[35]); } protected PolicyService.PolicyGetter normalPolicyGetter(boolean var1, boolean var2, boolean var3) { return new ac(this, var2, var1, var3); } protected void doGet(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 1 // 001: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_SERVICEOID Ljava/lang/String; // 004: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 009: astore 3 // 00a: aload 1 // 00b: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_GETCERT Ljava/lang/String; // 00e: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 013: astore 4 // 015: aload 1 // 016: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_USERNAME Ljava/lang/String; // 019: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 01e: astore 5 // 020: aload 1 // 021: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_NONCE Ljava/lang/String; // 024: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 029: astore 6 // 02b: aload 1 // 02c: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_FULLDOC Ljava/lang/String; // 02f: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 034: astore 7 // 036: aload 1 // 037: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_INLINE Ljava/lang/String; // 03a: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 03f: astore 8 // 041: aload 1 // 042: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_INCLUDE_COMMENTS Ljava/lang/String; // 045: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 04a: astore 9 // 04c: aload 4 // 04e: ifnull 085 // 051: aload 0 // 052: aload 2 // 053: aload 5 // 055: aload 6 // 057: invokevirtual com/l7tech/server/policy/PolicyServlet.doCertDownload (Ljakarta/servlet/http/HttpServletResponse;Ljava/lang/String;Ljava/lang/String;)V // 05a: goto 084 // 05d: astore 10 // 05f: aload 0 // 060: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 063: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 066: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 069: astore 18 // 06b: aload 18 // 06d: bipush 57 // 06f: aaload // 070: aload 10 // 072: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 075: new jakarta/servlet/ServletException // 078: dup // 079: aload 18 // 07b: bipush 22 // 07d: aaload // 07e: aload 10 // 080: invokespecial jakarta/servlet/ServletException. (Ljava/lang/String;Ljava/lang/Throwable;)V // 083: athrow // 084: return // 085: aload 0 // 086: aload 1 // 087: invokevirtual com/l7tech/server/policy/PolicyServlet.authenticateRequestBasic (Ljakarta/servlet/http/HttpServletRequest;)[Lcom/l7tech/server/identity/AuthenticationResult; // 08a: astore 10 // 08c: goto 0ff // 08f: astore 11 // 091: aload 0 // 092: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 095: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level; // 098: aload 11 // 09a: invokevirtual com/l7tech/identity/AuthenticationException.getMessage ()Ljava/lang/String; // 09d: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 0a0: astore 18 // 0a2: aload 18 // 0a4: bipush 16 // 0a6: aaload // 0a7: swap // 0a8: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 0ad: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 0b0: bipush 0 // 0b1: anewarray 104 // 0b4: astore 10 // 0b6: goto 0ff // 0b9: astore 11 // 0bb: aload 0 // 0bc: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 0bf: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 0c2: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 0c5: astore 18 // 0c7: aload 18 // 0c9: bipush 49 // 0cb: aaload // 0cc: aload 11 // 0ce: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0d1: aload 0 // 0d2: aload 2 // 0d3: aload 18 // 0d5: bipush 54 // 0d7: aaload // 0d8: invokevirtual com/l7tech/server/policy/PolicyServlet.returnError (Ljakarta/servlet/http/HttpServletResponse;Ljava/lang/String;)V // 0db: return // 0dc: astore 11 // 0de: aload 0 // 0df: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 0e2: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 0e5: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 0e8: astore 18 // 0ea: aload 18 // 0ec: bipush 55 // 0ee: aaload // 0ef: aload 11 // 0f1: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0f4: aload 0 // 0f5: aload 2 // 0f6: aload 18 // 0f8: bipush 10 // 0fa: aaload // 0fb: invokevirtual com/l7tech/server/policy/PolicyServlet.returnError (Ljakarta/servlet/http/HttpServletResponse;Ljava/lang/String;)V // 0fe: return // 0ff: bipush 0 // 100: istore 11 // 102: aload 7 // 104: ifnull 17e // 107: aload 7 // 109: invokevirtual java/lang/String.length ()I // 10c: ifle 17e // 10f: goto 116 // 112: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 115: athrow // 116: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 119: bipush 58 // 11b: aaload // 11c: aload 7 // 11e: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 121: ifne 13a // 124: goto 12b // 127: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 12a: athrow // 12b: aload 7 // 12d: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z // 130: ifeq 142 // 133: goto 13a // 136: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 139: athrow // 13a: bipush 1 // 13b: goto 143 // 13e: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 141: athrow // 142: bipush 0 // 143: istore 11 // 145: aload 0 // 146: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 149: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_FULLDOC Ljava/lang/String; // 14c: aload 7 // 14e: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 151: bipush 24 // 153: aaload // 154: dup_x2 // 155: pop // 156: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 159: bipush 51 // 15b: aaload // 15c: swap // 15d: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ] // 162: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 165: iload 11 // 167: ifeq 17e // 16a: aload 0 // 16b: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 16e: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 171: bipush 6 // 173: aaload // 174: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 177: goto 17e // 17a: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 17d: athrow // 17e: bipush 0 // 17f: istore 12 // 181: aload 9 // 183: ifnull 1fc // 186: aload 9 // 188: invokevirtual java/lang/String.length ()I // 18b: ifle 1fc // 18e: goto 195 // 191: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 194: athrow // 195: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 198: bipush 1 // 199: aaload // 19a: aload 9 // 19c: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 19f: ifne 1b8 // 1a2: goto 1a9 // 1a5: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1a8: athrow // 1a9: aload 7 // 1ab: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z // 1ae: ifeq 1c0 // 1b1: goto 1b8 // 1b4: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1b7: athrow // 1b8: bipush 1 // 1b9: goto 1c1 // 1bc: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1bf: athrow // 1c0: bipush 0 // 1c1: istore 12 // 1c3: aload 0 // 1c4: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 1c7: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_INCLUDE_COMMENTS Ljava/lang/String; // 1ca: aload 9 // 1cc: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 1cf: bipush 56 // 1d1: aaload // 1d2: dup_x2 // 1d3: pop // 1d4: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 1d7: bipush 25 // 1d9: aaload // 1da: swap // 1db: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ] // 1e0: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 1e3: iload 12 // 1e5: ifeq 1fc // 1e8: aload 0 // 1e9: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 1ec: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 1ef: bipush 30 // 1f1: aaload // 1f2: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 1f5: goto 1fc // 1f8: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1fb: athrow // 1fc: bipush 0 // 1fd: istore 13 // 1ff: aload 8 // 201: ifnull 27a // 204: aload 8 // 206: invokevirtual java/lang/String.length ()I // 209: ifle 27a // 20c: goto 213 // 20f: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 212: athrow // 213: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 216: bipush 1 // 217: aaload // 218: aload 8 // 21a: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 21d: ifne 236 // 220: goto 227 // 223: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 226: athrow // 227: aload 8 // 229: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z // 22c: ifeq 23e // 22f: goto 236 // 232: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 235: athrow // 236: bipush 1 // 237: goto 23f // 23a: invokestatic com/l7tech/server/policy/PolicyServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 23d: athrow // 23e: bipush 0 // 23f: istore 13 // 241: aload 0 // 242: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 245: getstatic com/l7tech/common/protocol/SecureSpanConstants$HttpQueryParameters.PARAM_INLINE Ljava/lang/String; // 248: aload 8 // 24a: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 24d: bipush 56 // 24f: aaload // 250: dup_x2 // 251: pop // 252: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 255: bipush 25 // 257: aaload // 258: swap // 259: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ] // 25e: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V // 261: iload 13 // 263: ifeq 27a // 266: aload 0 // 267: getfield com/l7tech/server/policy/PolicyServlet.logger Ljava/util/logging/Logger; // 26a: getstatic com/l7tech/server/policy/PolicyServlet.b [Ljava/lang/String; // 26d: bipush 20 ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/FileDownloadServlet.java ===== package com.l7tech.server; import com.l7tech.common.mime.ContentTypeHeader; import com.l7tech.util.HexUtils; import com.l7tech.util.IOUtils; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.SecureRandom; import java.util.Timer; import org.apache.commons.collections.map.LRUMap; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class FileDownloadServlet extends HttpServlet { private final int INITIAL_TASK_DELAY = 30000; private final int NORMAL_TASK_DELAY = 90000; private final int FILE_EXPIRY_PERIOD = 60000; private static final SecureRandom random; private final LRUMap fileMap = new LRUMap(10); private WebApplicationContext applicationContext; private Timer timer; static final long serialVersionUID = 2383879360811632234L; private static final String[] a; public void init(ServletConfig var1) throws ServletException { try { super.init(var1); this.applicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); if (this.applicationContext == null) { throw new ServletException(a[4]); } } catch (ServletException var2) { throw a(var2); } this.timer = (Timer)this.applicationContext.getBean(a[3], Timer.class); this.timer.schedule(new b3(this), 30000L, 90000L); } public void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { String var3 = var1.getParameter(a[5]); byte[] var4 = IOUtils.slurpStream(var1.getInputStream(), 100000); byte[] var5 = new byte[20]; random.nextBytes(var5); String var6 = HexUtils.hexDump(var5); synchronized (this.fileMap) { this.fileMap.put(var6, new z(var4, var3)); } var2.setContentType(ContentTypeHeader.TEXT_DEFAULT.getFullValue()); var2.getWriter().write(var6); } protected void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { String[] var7 = a; String var3 = var1.getParameter(var7[6]); z var4; synchronized (this.fileMap) { var4 = (z)this.fileMap.get(var3); } try { if (var4 == null) { var2.sendError(404, a[0]); return; } } catch (ServletException var9) { throw a(var9); } var2.reset(); var7 = a; var2.addHeader(var7[2], var7[1] + var4.b + "\""); var2.setContentType(var7[7]); ServletOutputStream var10 = var2.getOutputStream(); var10.write(var4.a); var10.flush(); var10.close(); } private void removeExpiredFiles() { synchronized (this.fileMap) { if (!this.fileMap.isEmpty()) { for (Object var2 = this.fileMap.firstKey(); var2 != null; var2 = this.fileMap.nextKey(var2)) { z var3 = (z)this.fileMap.get(var2); long var4 = var3.a(); long var6 = System.currentTimeMillis(); if (var6 - var4 >= 60000L) { this.fileMap.remove(var2); } if (this.fileMap.isEmpty()) { return; } } } } } static { String[] var5 = new String[8]; int var3 = 0; String var2 = "bm%r2\u001b\u001cBv4df\bJk=y|\u0019\u001eI"; int var4 = "bm%r2\u001b\u001cBv4df\bJk=y|\u0019\u001eI" .length(); char var1 = 21; int var7 = -1; label24: while (true) { byte var10000 = 125; String var10001 = var2.substring(++var7, var7 + var1); byte var10002 = -1; while (true) { String var8 = a(var10000, a(var10001)); switch (var10002) { case 0: var5[var3++] = var8; if ((var7 += var1) >= var4) { a = var5; random = new SecureRandom(); return; } var1 = var2.charAt(var7); break; default: var5[var3++] = var8; if ((var7 += var1) < var4) { var1 = var2.charAt(var7); continue label24; } var2 = "tT\u001b\u0018~A\u0012CH(!kX\rA\u000e$#kT\u0016\u0002R?2zP\u000f"; var4 = "tT\u001b\u0018~A\u0012CH(!kX\rA\u000e$#kT\u0016\u0002R?2zP\u000f".length(); var1 = 3; var7 = -1; } var10000 = 78; var10001 = var2.substring(++var7, var7 + var1); var10002 = 0; } } } private static ServletException a(ServletException var0) { return var0; } private static char[] a(String var0) { char[] var10000 = var0.toCharArray(); if (var10000.length < 2) { var10000[0] = (char)(var10000[0] ^ 14); } return var10000; } private static String a(int var0, char[] var1) { int var10003 = var1.length; int var10002 = var0; char[] var10001 = var1; int var10000 = var10003; for (int var2 = 0; var10000 > var2; var2++) { var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) { case 0 -> 81; case 1 -> 127; case 2 -> 44; case 3 -> 97; case 4 -> 111; case 5 -> 5; default -> 14; }); } return new String(var10001).intern(); } } ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/BackupServlet.java ===== package com.l7tech.server; import com.l7tech.common.http.GenericHttpClientFactory; import com.l7tech.common.http.GenericHttpHeader; import com.l7tech.common.http.GenericHttpRequest; import com.l7tech.common.http.GenericHttpRequestParams; import com.l7tech.common.http.GenericHttpResponse; import com.l7tech.common.http.HttpHeader; import com.l7tech.common.http.HttpMethod; import com.l7tech.common.protocol.SecureSpanConstants; import com.l7tech.gateway.common.LicenseException; import com.l7tech.gateway.common.audit.AuditDetail; import com.l7tech.gateway.common.audit.AuditDetailMessage; import com.l7tech.gateway.common.audit.ServiceMessages; import com.l7tech.gateway.common.cluster.ClusterNodeInfo; import com.l7tech.gateway.common.security.rbac.Role; import com.l7tech.gateway.common.security.rbac.Role.Tag; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.BadCredentialsException; import com.l7tech.identity.IssuedCertNotPresentedException; import com.l7tech.identity.MissingCredentialsException; import com.l7tech.identity.User; import com.l7tech.objectmodel.FindException; import com.l7tech.policy.assertion.credential.LoginCredentials; import com.l7tech.server.cluster.ClusterInfoManager; import com.l7tech.server.event.system.BackupEvent; import com.l7tech.server.identity.AuthenticationResult; import com.l7tech.server.security.rbac.RoleManager; import com.l7tech.server.transport.ListenerException; import com.l7tech.util.ExceptionUtils; import com.l7tech.util.ResourceUtils; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.net.PasswordAuthentication; import java.net.URL; import java.util.Arrays; import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class BackupServlet extends AuthenticatableHttpServlet { private static final Logger _logger; private WebApplicationContext _webApplicationContext; private ClusterInfoManager _clusterInfoManager; private RoleManager _roleManager; private GenericHttpClientFactory _httpClientFactory; static final long serialVersionUID = -5821429193704728158L; private static final String[] b; @Override protected String getFeature() { return b[2]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.ADMIN_REMOTE_SSM; } @Override public void init(ServletConfig var1) throws ServletException { try { super.init(var1); this._webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); if (this._webApplicationContext == null) { throw new ServletException(b[16]); } } catch (ServletException var3) { throw a(var3); } String[] var2 = b; this._clusterInfoManager = (ClusterInfoManager)this._webApplicationContext.getBean(var2[80]); this._roleManager = (RoleManager)this._webApplicationContext.getBean(var2[56]); this._httpClientFactory = (GenericHttpClientFactory)this._webApplicationContext.getBean(var2[88]); } public void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { try { if (!var1.isSecure()) { this.logAndAudit(this.getOriginalClientAddr(var1), null, b[73], ServiceMessages.BACKUP_NOT_SSL, null); this.respondError(var2, 403, b[45]); return; } } catch (BadCredentialsException var14) { throw a(var14); } try { if (this.findCredentialsBasic(var1) == null) { _logger.fine(b[6]); this.doHttpBasicChallenge(var2); return; } } catch (BadCredentialsException var19) { throw a(var19); } AuthenticationResult[] var3; try { var3 = this.authenticateRequestBasic(var1, true); } catch (BadCredentialsException var9) { String var31 = this.getOriginalClientAddr(var1); String[] var25 = b; this.logAndAudit(var31, null, var25[57], ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException(var9)); this.respondError(var2, 403, var25[22]); return; } catch (MissingCredentialsException var10) { String var30 = this.getOriginalClientAddr(var1); String[] var24 = b; this.logAndAudit(var30, null, var24[57], ServiceMessages.BACKUP_BAD_CREDENTIALS, ExceptionUtils.getDebugException(var10)); this.respondError(var2, 403, var24[43]); return; } catch (IssuedCertNotPresentedException var11) { String var29 = this.getOriginalClientAddr(var1); String[] var23 = b; this.logAndAudit(var29, null, var23[57], ServiceMessages.BACKUP_NO_CLIENT_CERT, ExceptionUtils.getDebugException(var11)); this.respondError(var2, 403, var23[32]); return; } catch (LicenseException var12) { String var28 = this.getOriginalClientAddr(var1); String[] var22 = b; this.logAndAudit(var28, null, var22[57], ServiceMessages.BACKUP_NOT_LICENSED, var12); this.respondError(var2, 403, var22[53]); return; } catch (ListenerException var13) { String var10001 = this.getOriginalClientAddr(var1); String[] var8 = b; this.logAndAudit(var10001, null, var8[57], ServiceMessages.BACKUP_BAD_CONNECTOR, var13); this.respondError(var2, 403, var8[39]); return; } try { if (var3.length <= 0) { this.logAndAudit(this.getOriginalClientAddr(var1), null, b[57], ServiceMessages.BACKUP_NO_AUTHENTICATED_USER, null); this.respondError(var2, 403, b[87]); return; } } catch (BadCredentialsException var18) { throw a(var18); } User var4 = var3[0].getUser(); try { boolean var5 = false; for (Role var7 : this._roleManager.getAssignedRoles(var4)) { if (var7.getTag() == Tag.ADMIN) { var5 = true; break; } } if (!var5) { String var33 = this.getOriginalClientAddr(var1); String[] var27 = b; this.logAndAudit(var33, var4, var27[57], ServiceMessages.BACKUP_NO_PERMISSION, null, var4.getName()); this.respondError(var2, 403, var27[24]); return; } } catch (FindException var17) { String var32 = this.getOriginalClientAddr(var1); String[] var26 = b; this.logAndAudit(var32, var4, var26[15], ServiceMessages.BACKUP_PERMISSION_CHECK_FAILED, var17); this.respondError(var2, 500, var26[27]); return; } String var20 = var1.getParameter(b[48]); try { if (var20 == null) { this.doMainPage(var2); return; } } catch (BadCredentialsException var16) { throw a(var16); } String var21 = this._clusterInfoManager.getSelfNodeInf().getName(); try { if (var20.equals(var21)) { this.doBackup(var1, var2, var21, var4); return; } } catch (BadCredentialsException var15) { throw a(var15); } this.routeBackup(var1, var2, var20, var4); } private void doMainPage(HttpServletResponse var1) throws IOException { Collection var2; try { var2 = this._clusterInfoManager.retrieveClusterStatus(); } catch (FindException var10) { Logger var10000 = _logger; String var10001 = var10.toString(); String[] var7 = b; var10000.warning(var7[12] + var10001); this.respondError(var1, 500, var7[8]); return; } String[] var12 = b; var1.setContentType(var12[35]); PrintWriter var3 = var1.getWriter(); try { var3.println(var12[47]); var3.println(var12[69]); var3.println(var12[29]); var3.println(var12[41]); var3.println(var12[51]); var3.println(var12[82]); var3.println(var12[64]); var3.println(var12[25]); var3.println(var12[44]); var3.println(var12[42]); var3.println(var12[59]); var3.println(var12[11]); var3.println("}"); var3.println(var12[70]); var3.println(var12[1]); var3.println(var12[61]); var3.println(var12[66]); var3.println(var12[9]); var3.println(var12[10]); var3.println(var12[52]); for (ClusterNodeInfo var5 : var2) { var12 = b; var3.println(var12[67]); var3.println(var12[60]); var3.println(var12[46] + var5.getName() + var12[83]); var3.println(var12[85] + var5.getName() + var12[4]); var3.println(var12[71]); } var12 = b; var3.println(var12[20]); var3.println(var12[7]); } finally { var3.close(); } } private void doBackup(HttpServletRequest param1, HttpServletResponse param2, String param3, User param4) throws IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aconst_null // 001: astore 5 // 003: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 006: astore 23 // 008: aload 23 // 00a: bipush 75 // 00c: aaload // 00d: aload 23 // 00f: bipush 33 // 011: aaload // 012: aconst_null // 013: bipush 0 // 014: invokestatic com/l7tech/util/FileUtils.createTempDirectory (Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)Ljava/io/File; // 017: astore 5 // 019: aload 23 // 01b: bipush 30 // 01d: aaload // 01e: astore 6 // 020: aload 23 // 022: bipush 81 // 024: aaload // 025: invokestatic com/l7tech/util/ConfigFactory.getProperty (Ljava/lang/String;)Ljava/lang/String; // 028: astore 7 // 02a: new java/io/File // 02d: dup // 02e: aload 7 // 030: aload 23 // 032: bipush 77 // 034: aaload // 035: invokespecial java/io/File. (Ljava/lang/String;Ljava/lang/String;)V // 038: astore 8 // 03a: aload 1 // 03b: aload 23 // 03d: bipush 74 // 03f: aaload // 040: invokeinterface jakarta/servlet/http/HttpServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 045: astore 9 // 047: aload 9 // 049: ifnull 068 // 04c: aload 9 // 04e: aload 23 // 050: bipush 23 // 052: aaload // 053: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z // 056: ifeq 068 // 059: goto 060 // 05c: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 05f: athrow // 060: bipush 1 // 061: goto 069 // 064: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 067: athrow // 068: bipush 0 // 069: istore 10 // 06b: new java/util/ArrayList // 06e: dup // 06f: invokespecial java/util/ArrayList. ()V // 072: astore 11 // 074: aload 11 // 076: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 079: bipush 19 // 07b: aaload // 07c: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2 // 081: pop // 082: aload 11 // 084: new java/io/File // 087: dup // 088: aload 5 // 08a: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 08d: bipush 76 // 08f: aaload // 090: invokespecial java/io/File. (Ljava/io/File;Ljava/lang/String;)V // 093: invokevirtual java/io/File.getCanonicalPath ()Ljava/lang/String; // 096: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2 // 09b: pop // 09c: iload 10 // 09e: ifeq 0b6 // 0a1: aload 11 // 0a3: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 0a6: bipush 14 // 0a8: aaload // 0a9: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2 // 0ae: pop // 0af: goto 0b6 // 0b2: invokestatic com/l7tech/server/BackupServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 0b5: athrow // 0b6: aload 8 // 0b8: new java/io/File // 0bb: dup // 0bc: aload 8 // 0be: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 0c1: astore 23 // 0c3: aload 23 // 0c5: bipush 54 // 0c7: aaload // 0c8: invokespecial java/io/File. (Ljava/io/File;Ljava/lang/String;)V // 0cb: aload 11 // 0cd: aload 11 // 0cf: invokeinterface java/util/List.size ()I 1 // 0d4: anewarray 562 // 0d7: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2 // 0dc: checkcast [Ljava/lang/String; // 0df: aconst_null // 0e0: checkcast [B // 0e3: bipush 0 // 0e4: invokestatic com/l7tech/common/io/ProcUtils.exec (Ljava/io/File;Ljava/io/File;[Ljava/lang/String;[BZ)Lcom/l7tech/common/io/ProcResult; // 0e7: astore 12 // 0e9: aload 0 // 0ea: getfield com/l7tech/server/BackupServlet.logger Ljava/util/logging/Logger; // 0ed: getstatic java/util/logging/Level.INFO Ljava/util/logging/Level; // 0f0: aload 23 // 0f2: bipush 78 // 0f4: aaload // 0f5: new java/lang/String // 0f8: dup // 0f9: aload 12 // 0fb: invokevirtual com/l7tech/common/io/ProcResult.getOutput ()[B // 0fe: invokespecial java/lang/String. ([B)V // 101: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V // 104: goto 16b // 107: astore 9 // 109: aload 0 // 10a: aload 0 // 10b: aload 1 // 10c: invokevirtual com/l7tech/server/BackupServlet.getOriginalClientAddr (Ljakarta/servlet/http/HttpServletRequest;)Ljava/lang/String; // 10f: aload 4 // 111: getstatic com/l7tech/server/BackupServlet.b [Ljava/lang/String; // 114: astore 23 // 116: aload 23 // 118: bipush 28 // 11a: aaload // 11b: getstatic com/l7tech/gateway/common/audit/ServiceMessages.BACKUP_CANT_CREATE_IMAGE Lcom/l7tech/gateway/common/audit/Messages$M; // 11e: aload 9 // 120: bipush 1 // 121: anewarray 562 // 124: dup // 125: bipush 0 // 126: aload 3 // 127: aastore // 128: invokevirtual com/l7tech/server/BackupServlet.logAndAudit (Ljava/lang/String;Lcom/l7tech/identity/User;Ljava/lang/String;Lcom/l7tech/gateway/common/audit/AuditDetailMessage;Ljava/lang/Throwable;[Ljava/lang/String;)V // 12b: aload 0 // 12c: aload 2 // 12d: sipush 500 // 130: aload 23 // 132: bipush 17 // 134: aaload // 135: invokevirtual com/l7tech/server/BackupServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 138: aload 5 // 13a: ifnull 16a // 13d: aload 5 // 13f: invokestatic com/l7tech/util/FileUtils.deleteDir (Ljava/io/File;)Z // 142: istore 10 // 144: iload 10 ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/PingServlet.java ===== package com.l7tech.server; import com.l7tech.common.http.GenericHttpClientFactory; import com.l7tech.common.http.GenericHttpHeader; import com.l7tech.common.http.GenericHttpRequest; import com.l7tech.common.http.GenericHttpRequestParams; import com.l7tech.common.http.GenericHttpResponse; import com.l7tech.common.http.HttpHeader; import com.l7tech.common.http.HttpMethod; import com.l7tech.common.io.ProcResult; import com.l7tech.common.io.ProcUtils; import com.l7tech.common.protocol.SecureSpanConstants; import com.l7tech.gateway.common.LicenseException; import com.l7tech.gateway.common.cluster.ClusterNodeInfo; import com.l7tech.gateway.common.security.rbac.OperationType; import com.l7tech.gateway.common.transport.SsgConnector.Endpoint; import com.l7tech.identity.AuthenticationException; import com.l7tech.identity.BadCredentialsException; import com.l7tech.identity.IssuedCertNotPresentedException; import com.l7tech.identity.MissingCredentialsException; import com.l7tech.identity.User; import com.l7tech.objectmodel.EntityType; import com.l7tech.objectmodel.FindException; import com.l7tech.policy.assertion.credential.LoginCredentials; import com.l7tech.server.cluster.ClusterInfoManager; import com.l7tech.server.identity.AuthenticationResult; import com.l7tech.server.security.rbac.RoleManager; import com.l7tech.server.transport.ListenerException; import com.l7tech.util.BuildInfo; import com.l7tech.util.SudoUtils; import com.l7tech.util.SyspropUtil; import com.l7tech.util.TextUtils; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.net.InetAddress; import java.net.PasswordAuthentication; import java.net.URL; import java.util.Collection; import java.util.EnumSet; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.transaction.CannotCreateTransactionException; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class PingServlet extends AuthenticatableHttpServlet { private static final Logger _logger; private static final String MODE_PROP_NAME; private static final PingServlet.Mode DEFAULT_MODE; private static final String SYSTEM_INFO_SCRIPT_NAME; private static final String MAIN_REQUEST_URI; private static final String SYSTEM_INFO_REQUEST_URI; private ClusterInfoManager _clusterInfoManager; private RoleManager _roleManager; private GenericHttpClientFactory _httpClientFactory; private File _ssgApplianceLibexecDir; static final long serialVersionUID = -4160547507963615711L; private static final String[] b; @Override protected String getFeature() { return b[141]; } @Override protected Endpoint getRequiredEndpoint() { return Endpoint.PING; } @Override protected boolean isCleartextAllowed() { return true; } @Override public void init(ServletConfig var1) throws ServletException { super.init(var1); WebApplicationContext var2 = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); try { if (var2 == null) { throw new ServletException(b[90]); } } catch (ServletException var4) { throw a(var4); } String[] var3 = b; this._clusterInfoManager = (ClusterInfoManager)var2.getBean(var3[140]); this._roleManager = (RoleManager)var2.getBean(var3[33]); this._httpClientFactory = (GenericHttpClientFactory)var2.getBean(var3[95]); this._ssgApplianceLibexecDir = new File(this.config.getProperty(var3[78]) + File.separator + var3[79]); } public void doGet(HttpServletRequest param1, HttpServletResponse param2) throws ServletException, IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: getstatic com/l7tech/server/PingServlet.DEFAULT_MODE Lcom/l7tech/server/PingServlet$Mode; // 003: astore 3 // 004: aload 0 // 005: getfield com/l7tech/server/PingServlet.config Lcom/l7tech/util/Config; // 008: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 00b: astore 6 // 00d: aload 6 // 00f: bipush 15 // 011: aaload // 012: invokeinterface com/l7tech/util/Config.getProperty (Ljava/lang/String;)Ljava/lang/String; 2 // 017: astore 4 // 019: aload 4 // 01b: ifnonnull 057 // 01e: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 021: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level; // 024: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z // 027: ifeq 0bd // 02a: goto 031 // 02d: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 030: athrow // 031: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 034: getstatic com/l7tech/server/PingServlet.DEFAULT_MODE Lcom/l7tech/server/PingServlet$Mode; // 037: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String; // 03a: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 03d: sipush 144 // 040: aaload // 041: swap // 042: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 045: bipush 94 // 047: aaload // 048: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 04d: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V // 050: goto 0bd // 053: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 056: athrow // 057: aload 4 // 059: invokevirtual java/lang/String.trim ()Ljava/lang/String; // 05c: invokestatic com/l7tech/server/PingServlet$Mode.valueOf (Ljava/lang/String;)Lcom/l7tech/server/PingServlet$Mode; // 05f: astore 3 // 060: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 063: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level; // 066: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z // 069: ifeq 089 // 06c: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 06f: aload 3 // 070: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String; // 073: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 076: bipush 115 // 078: aaload // 079: swap // 07a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 07f: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V // 082: goto 089 // 085: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 088: athrow // 089: goto 0bd // 08c: astore 5 // 08e: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 091: aload 4 // 093: getstatic com/l7tech/server/PingServlet.DEFAULT_MODE Lcom/l7tech/server/PingServlet$Mode; // 096: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String; // 099: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 09c: astore 6 // 09e: aload 6 // 0a0: sipush 162 // 0a3: aaload // 0a4: dup_x2 // 0a5: pop // 0a6: aload 6 // 0a8: bipush 88 // 0aa: aaload // 0ab: swap // 0ac: aload 6 // 0ae: bipush 94 // 0b0: aaload // 0b1: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001\u0001" ] // 0b6: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V // 0b9: getstatic com/l7tech/server/PingServlet.DEFAULT_MODE Lcom/l7tech/server/PingServlet$Mode; // 0bc: astore 3 // 0bd: aload 1 // 0be: invokeinterface jakarta/servlet/http/HttpServletRequest.getRequestURI ()Ljava/lang/String; 1 // 0c3: astore 5 // 0c5: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 0c8: bipush 13 // 0ca: aaload // 0cb: aload 5 // 0cd: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z // 0d0: ifeq 0e1 // 0d3: aload 0 // 0d4: aload 1 // 0d5: aload 2 // 0d6: aload 3 // 0d7: invokevirtual com/l7tech/server/PingServlet.doMainPage (Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/PingServlet$Mode;)V // 0da: goto 131 // 0dd: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 0e0: athrow // 0e1: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 0e4: bipush 4 // 0e5: aaload // 0e6: aload 5 // 0e8: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z // 0eb: ifeq 0fc // 0ee: aload 0 // 0ef: aload 1 // 0f0: aload 2 // 0f1: aload 3 // 0f2: invokevirtual com/l7tech/server/PingServlet.doSystemInfo (Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/PingServlet$Mode;)V // 0f5: goto 131 // 0f8: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 0fb: athrow // 0fc: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 0ff: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level; // 102: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z // 105: ifeq 123 // 108: getstatic com/l7tech/server/PingServlet._logger Ljava/util/logging/Logger; // 10b: aload 5 // 10d: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 110: bipush 111 // 112: aaload // 113: swap // 114: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ] // 119: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V // 11c: goto 123 // 11f: invokestatic com/l7tech/server/PingServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 122: athrow // 123: aload 0 // 124: aload 2 // 125: sipush 404 // 128: getstatic com/l7tech/server/PingServlet.b [Ljava/lang/String; // 12b: bipush 52 // 12d: aaload // 12e: invokevirtual com/l7tech/server/PingServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V // 131: return // try (39 -> 52): 53 java/lang/IllegalArgumentException // try (13 -> 33): 33 java/lang/IllegalArgumentException // try (11 -> 17): 18 java/lang/IllegalArgumentException // try (35 -> 55): 56 java/lang/IllegalArgumentException // try (82 -> 94): 94 java/lang/IllegalArgumentException // try (96 -> 108): 108 java/lang/IllegalArgumentException // try (110 -> 122): 123 java/lang/IllegalArgumentException } private void doMainPage(HttpServletRequest var1, HttpServletResponse var2, PingServlet.Mode var3) throws IOException { int var4 = var1.getServerPort(); boolean var5 = var1.isSecure(); String var10000; label98: { try { if (var5) { var10000 = b[122]; break label98; } } catch (AuthenticationException var50) { throw a(var50); } String[] var41 = b; var10000 = var41[165]; } String var6 = var10000; label112: { label113: { try { switch (var3) { case OFF: this.respondNone(var1, b[157] + var3); return; case REQUIRE_CREDS: break; case OPEN: break label113; case MONITOR: break label112; default: throw new IllegalStateException(b[19]); } } catch (AuthenticationException var49) { throw a(var49); } if (!var5) { String var65 = String.valueOf(var3); int var11 = var4; String var12 = var6; String var13 = var65; String[] var55 = b; this.respondNone(var1, var55[157] + var13 + var55[59] + var12 + var55[137] + var11); return; } label72: { try { if (this.findCredentialsBasic(var1) != null) { var61 = true; break label72; } } catch (AuthenticationException var48) { throw a(var48); } var61 = false; } boolean var7 = var61; if (!var7) { String var69 = String.valueOf(var3); boolean var14 = var7; int var15 = var4; String var16 = var6; String var17 = var69; String[] var60 = b; this.respondChallenge(var2, var60[157] + var17 + var60[142] + var16 + var60[117] + var15 + var60[132] + var14); return; } boolean var8 = false; try { AuthenticationResult[] var51 = this.authenticateRequestBasic(var1, true); if (var51.length > 0) { User var10 = var51[0].getUser(); var8 = this._roleManager.isPermittedForAnyEntityOfType(var10, OperationType.READ, EntityType.CLUSTER_INFO); } } catch (AuthenticationException var43) { var8 = false; } catch (LicenseException var44) { String[] var57 = b; _logger.warning(var57[12]); this.respondError(var2, 503, var57[145]); return; } catch (FindException var45) { var8 = false; } catch (CannotCreateTransactionException var46) { CannotCreateTransactionException var9 = var46; PingServlet var62 = this; HttpServletResponse var10001 = var2; String var66 = String.valueOf(var3); boolean var18 = var7; int var19 = var4; String var20 = var6; String var21 = var66; try { var62.respondDatabaseFailureMinimal(var10001, b[157] + var21 + b[142] + var20 + b[117] + var19 + b[172] + var18); if (_logger.isLoggable(Level.FINE)) { _logger.fine(b[128] + var9.getMessage()); } return; } catch (AuthenticationException var42) { throw a(var42); } } catch (ListenerException var47) { String[] var56 = b; _logger.warning(var56[161]); this.respondError(var2, 503, var56[150]); return; } if (var8) { String var67 = String.valueOf(var3); boolean var22 = var8; boolean var23 = var7; int var24 = var4; String var25 = var6; String var26 = var67; String[] var58 = b; this.respondFull(var2, var58[157] + var26 + var58[142] + var25 + var58[117] + var24 + var58[172] + var23 + var58[16] + var22); } else { String var68 = String.valueOf(var3); boolean var27 = var8; boolean var28 = var7; int var29 = var4; String var30 = var6; String var31 = var68; String[] var59 = b; this.respondNone(var1, var59[157] + var31 + var59[142] + var30 + var59[117] + var29 + var59[172] + var28 + var59[123] + var27); } return; } if (!var5) { String var63 = String.valueOf(var3); int var32 = var4; String var33 = var6; String var34 = var63; String[] var53 = b; this.respondMinimal(var2, var53[157] + var34 + var53[142] + var33 + var53[117] + var32); } else { String var64 = String.valueOf(var3); int var35 = var4; String var36 = var6; String var37 = var64; String[] var54 = b; this.respondFull(var2, var54[157] + var37 + var54[142] + var36 + var54[117] + var35); } return; } String var10002 = String.valueOf(var3); int var38 = var4; String var39 = var6; String var40 = var10002; String[] var52 = b; this.respondMinimal(var2, var52[157] + var40 + var52[142] + var39 + var52[117] + var38); } ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/HealthServlet.java ===== package com.l7tech.server; // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.NullPointerException // at java.base/java.util.Objects.requireNonNull(Objects.java:233) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.rename(VarDefinitionHelper.java:2035) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.iterateClashingExprent(VarDefinitionHelper.java:1822) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.iterateClashingExprent(VarDefinitionHelper.java:2029) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.iterateClashingNames(VarDefinitionHelper.java:1619) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.iterateClashingNames(VarDefinitionHelper.java:1739) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.iterateClashingNames(VarDefinitionHelper.java:1739) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarDefinitionHelper.remapClashingNames(VarDefinitionHelper.java:1584) // at org.jetbrains.java.decompiler.modules.decompiler.vars.VarProcessor.rerunClashing(VarProcessor.java:99) // at org.jetbrains.java.decompiler.main.ClassWriter.invokeProcessors(ClassWriter.java:145) // at org.jetbrains.java.decompiler.main.ClassWriter.writeClass(ClassWriter.java:379) // at org.jetbrains.java.decompiler.main.ClassesProcessor.writeClass(ClassesProcessor.java:521) // at org.jetbrains.java.decompiler.main.Fernflower.getClassContent(Fernflower.java:200) // at org.jetbrains.java.decompiler.struct.ContextUnit.lambda$save$3(ContextUnit.java:221) ===== work/source-derived/layer7-gateway-11.2.1-decompiled/Gateway/com/l7tech/server/admin/SSGLoginFormServlet.java ===== package com.l7tech.server.admin; import com.l7tech.util.Charsets; import com.l7tech.util.IOUtils; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintStream; import java.text.MessageFormat; public class SSGLoginFormServlet extends HttpServlet { private static final String NORMAL_MESSAGE; private static final String INCORRECT_USR_PWD_MESSAGE; private static final String LOCK_OUT_MESSAGE; private static final String CREDS_EXPIRED_MESSAGE; private static final String REQUIRE_CERT_TO_LOGIN; private static final String LOGIN_PAGE; static final long serialVersionUID = -79104025708043756L; private static final String[] a; protected void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { String[] var12 = a; var2.setContentType(var12[12]); var2.setStatus(200); ServletOutputStream var3 = var2.getOutputStream(); PrintStream var4 = new PrintStream(var3); String var5 = new String(IOUtils.slurpUrl(SSGLoginFormServlet.class.getResource(this.getServletConfig().getInitParameter(var12[17]))), Charsets.UTF8); String var6 = new String(IOUtils.slurpUrl(SSGLoginFormServlet.class.getResource(var12[6])), Charsets.UTF8); try { String var7 = ""; String var8 = var12[16]; if (var1.getAttribute(var12[23]) != null) { String var22 = (String)var1.getAttribute(var12[21]); if (var22.equalsIgnoreCase(var12[24])) { var8 = var12[5]; } else { var12 = a; var8 = var12[20]; } } else { label122: { label120: { try { if (var1.getAttribute(a[1]) == null && var1.getAttribute(a[8]) == null) { break label120; } } catch (ServletException var19) { throw a(var19); } var12 = a; String var9 = (String)var1.getAttribute(var12[7]); String var10 = (String)var1.getAttribute(var12[0]); label101: { label121: { try { if (var9 != null && var9.equalsIgnoreCase(var12[18])) { break label121; } } catch (ServletException var18) { throw a(var18); } try { if (var10 == null || !var10.equalsIgnoreCase(a[18])) { break label101; } } catch (ServletException var17) { throw a(var17); } var12 = a; var8 = (String)var1.getAttribute(var12[13]); break label101; } var12 = a; var8 = var12[4]; } var12 = a; var7 = (String)var1.getAttribute(var12[14]); break label122; } var12 = a; if (var1.getAttribute(var12[19]) != null) { String var21 = (String)var1.getAttribute(var12[9]); if (var21.equalsIgnoreCase(var12[18])) { var8 = var12[2]; } } } } var4.print(MessageFormat.format(var5, var6, var8, var7)); } finally { var4.close(); } } protected void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { this.doGet(var1, var2); } private static ServletException a(ServletException var0) { return var0; } static { String[] var5 = new String[26]; int var3 = 0; String var2 = "f<@![AP\u0014=Y+\u001c\\Q\u00140B8]DWPy\\/O[I[+H`\"f<@![AP\u0014=Y+\u001c\\Q\u0014UZ[PyOInEGKFy\\/O[I[+H`3`1InI[[FyB/QM\u001e[+\f>][MC6^*\u001cAM\u00140B-SZLQ:X`\u001c\bjF \f/[IWZw)\u001b:C#\u0013D\t@UZ[PyOInEGKFy\\/O[I[+H`\t@UZ[PyOInEGKFy\\/O[I[+H`3`1InI[[FyB/QM\u001e[+\f>][MC6^*\u001cAM\u00140B-SZLQ:X`\u001c\bjF \f/[IWZw)\u001b:C#\u0013D\t@UZ[PyOInEGKFy\\/O[I[+H`\t@= var4) { a = var5; String[] var9 = a; NORMAL_MESSAGE = a[15]; LOGIN_PAGE = var9[3]; INCORRECT_USR_PWD_MESSAGE = var9[25]; LOCK_OUT_MESSAGE = var9[10]; CREDS_EXPIRED_MESSAGE = var9[11]; REQUIRE_CERT_TO_LOGIN = var9[22]; return; } var1 = var2.charAt(var7); break; default: var5[var3++] = var8; if ((var7 += var1) < var4) { var1 = var2.charAt(var7); continue label24; } var2 = "\u0016g\u00043\u001bJ2\u00152 =\u00029T*6e PwE& 68M%Qg:6oK9V(!7*A#\u001bgs\u0011=[wT 2,!\f"; var4 = "\u0016g\u00043\u001bJ2\u00152 =\u00029T*6e PwE& 68M%Qg:6oK9V(!7*A#\u001bgs\u0011=[wT 2,!\f".length(); var1 = 3; var7 = -1; } var10000 = 124; var10001 = var2.substring(++var7, var7 + var1); var10002 = 0; } } } private static char[] a(String var0) { char[] var10000 = var0.toCharArray(); if (var10000.length < 2) { var10000[0] = (char)(var10000[0] ^ 57); } return var10000; } private static String a(int var0, char[] var1) { int var10003 = var1.length; int var10002 = var0; char[] var10001 = var1; int var10000 = var10003; for (int var2 = 0; var10000 > var2; var2++) { var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) { case 0 -> 51; case 1 -> 94; case 2 -> 43; case 3 -> 73; case 4 -> 59; case 5 -> 47; default -> 57; }); } return new String(var10001).intern(); } } ===== work/source-derived/layer7-gateway-11.2.1-decompiled/layer7-gateway-common/com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.java ===== package com.l7tech.gateway.common.spring.remoting.http; import com.l7tech.gateway.common.transport.http.FeatureFilter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import java.io.IOException; import java.util.logging.Logger; public class SecureHttpFilter extends FeatureFilter { private static final Logger d; private static final String e; private static final String f; private static final String[] h; @Override protected void doFilterInternal(ServletRequest param1, ServletResponse param2, FilterChain param3) throws IOException, ServletException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 000: aload 1 // 001: checkcast jakarta/servlet/http/HttpServletRequest // 004: astore 4 // 006: aload 2 // 007: checkcast jakarta/servlet/http/HttpServletResponse // 00a: astore 5 // 00c: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.d Ljava/util/logging/Logger; // 00f: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level; // 012: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z // 015: ifeq 040 // 018: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.d Ljava/util/logging/Logger; // 01b: getstatic java/util/logging/Level.FINEST Ljava/util/logging/Level; // 01e: aload 4 // 020: invokeinterface jakarta/servlet/http/HttpServletRequest.getRequestURI ()Ljava/lang/String; 1 // 025: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 028: bipush 7 // 02a: aaload // 02b: swap // 02c: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 02f: bipush 0 // 030: aaload // 031: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 036: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V // 039: goto 040 // 03c: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 03f: athrow // 040: new javax/security/auth/Subject // 043: dup // 044: invokespecial javax/security/auth/Subject. ()V // 047: astore 6 // 049: aload 4 // 04b: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 04e: astore 10 // 050: aload 10 // 052: bipush 4 // 053: aaload // 054: invokeinterface jakarta/servlet/http/HttpServletRequest.getHeader (Ljava/lang/String;)Ljava/lang/String; 2 // 059: astore 7 // 05b: aload 7 // 05d: ifnonnull 06d // 060: aload 1 // 061: aload 10 // 063: bipush 6 // 065: aaload // 066: invokeinterface jakarta/servlet/ServletRequest.getParameter (Ljava/lang/String;)Ljava/lang/String; 2 // 06b: astore 7 // 06d: aload 7 // 06f: ifnull 086 // 072: aload 6 // 074: invokevirtual javax/security/auth/Subject.getPublicCredentials ()Ljava/util/Set; // 077: aload 7 // 079: invokeinterface java/util/Set.add (Ljava/lang/Object;)Z 2 // 07e: pop // 07f: goto 086 // 082: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 085: athrow // 086: aload 6 // 088: aload 0 // 089: aload 1 // 08a: aload 4 // 08c: aload 3 // 08d: aload 2 // 08e: invokedynamic call (Lcom/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter;Ljakarta/servlet/ServletRequest;Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/FilterChain;Ljakarta/servlet/ServletResponse;)Ljava/util/concurrent/Callable; bsm=java/lang/invoke/LambdaMetafactory.metafactory (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; args=[ ()Ljava/lang/Object;, com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.lambda$doFilterInternal$0 (Ljakarta/servlet/ServletRequest;Ljakarta/servlet/http/HttpServletRequest;Ljakarta/servlet/FilterChain;Ljakarta/servlet/ServletResponse;)Ljava/lang/Object;, ()Ljava/lang/Object; ] // 093: invokestatic javax/security/auth/Subject.callAs (Ljavax/security/auth/Subject;Ljava/util/concurrent/Callable;)Ljava/lang/Object; // 096: pop // 097: goto 124 // 09a: astore 8 // 09c: aload 8 // 09e: invokevirtual java/util/concurrent/CompletionException.getCause ()Ljava/lang/Throwable; // 0a1: astore 9 // 0a3: aload 9 // 0a5: instanceof java/io/ObjectStreamException // 0a8: ifeq 0f1 // 0ab: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.d Ljava/util/logging/Logger; // 0ae: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level; // 0b1: aload 9 // 0b3: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String; // 0b6: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 0b9: bipush 8 // 0bb: aaload // 0bc: swap // 0bd: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 0c0: bipush 5 // 0c1: aaload // 0c2: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ] // 0c7: aload 9 // 0c9: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable; // 0cc: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V // 0cf: aload 5 // 0d1: invokeinterface jakarta/servlet/http/HttpServletResponse.isCommitted ()Z 1 // 0d6: ifne 124 // 0d9: goto 0e0 // 0dc: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 0df: athrow // 0e0: aload 5 // 0e2: sipush 500 // 0e5: invokeinterface jakarta/servlet/http/HttpServletResponse.sendError (I)V 2 // 0ea: goto 124 // 0ed: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 0f0: athrow // 0f1: aload 9 // 0f3: instanceof java/io/IOException // 0f6: ifeq 103 // 0f9: aload 9 // 0fb: checkcast java/io/IOException // 0fe: athrow // 0ff: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 102: athrow // 103: aload 9 // 105: instanceof jakarta/servlet/ServletException // 108: ifeq 115 // 10b: aload 9 // 10d: checkcast jakarta/servlet/ServletException // 110: athrow // 111: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 114: athrow // 115: new java/lang/RuntimeException // 118: dup // 119: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpFilter.h [Ljava/lang/String; // 11c: bipush 1 // 11d: aaload // 11e: aload 8 // 120: invokespecial java/lang/RuntimeException. (Ljava/lang/String;Ljava/lang/Throwable;)V // 123: athrow // 124: return // try (46 -> 53): 54 java/util/concurrent/CompletionException // try (6 -> 23): 24 java/util/concurrent/CompletionException // try (56 -> 65): 66 java/util/concurrent/CompletionException // try (70 -> 91): 92 java/util/concurrent/CompletionException // try (73 -> 98): 98 java/util/concurrent/CompletionException // try (100 -> 106): 106 java/util/concurrent/CompletionException // try (108 -> 114): 114 java/util/concurrent/CompletionException } static { String[] var5 = new String[9]; int var3 = 0; String var2 = "(\u0007\"ZGl\u0001$JY{LmY1WYjY}\u0010;A\u001ai[f\u0014tKUI@e\r1]\t|Lz\n=@TFM\u0012W\u0004E\u0018-JH8\u0004Z\u001c'\\S`G@\u001d\u0012W\u0004E\u0018-JH8\u0004Z\u001c'\\S`G@\u001d\u0002(\u0007\t|Lz\n=@TFM"; int var4 = "(\u0007\"ZGl\u0001$JY{LmY1WYjY}\u0010;A\u001ai[f\u0014tKUI@e\r1]\t|Lz\n=@TFM\u0012W\u0004E\u0018-JH8\u0004Z\u001c'\\S`G@\u001d\u0012W\u0004E\u0018-JH8\u0004Z\u001c'\\S`G@\u001d\u0002(\u0007\t|Lz\n=@TFM" .length(); char var1 = 2; int var7 = -1; label24: while (true) { byte var10000 = 57; String var10001 = var2.substring(++var7, var7 + var1); byte var10002 = -1; while (true) { String var8 = b(var10000, c(var10001)); switch (var10002) { case 0: var5[var3++] = var8; if ((var7 += var1) >= var4) { h = var5; String[] var9 = h; e = h[3]; f = var9[2]; d = Logger.getLogger(SecureHttpFilter.class.getName()); return; } var1 = var2.charAt(var7); break; default: var5[var3++] = var8; if ((var7 += var1) < var4) { var1 = var2.charAt(var7); continue label24; } var2 = "\u0016\u0007/]k\r\u001f#B#Q|\u0001\u00027B$]mD$\u0016+b\u0015\u001e\u0001\u00100]mD\u00016\r!Wl\u0017\u0018*\u0005b@z\t\u001e0\u0007bQ~\b\u001ddE"; var4 = "\u0016\u0007/]k\r\u001f#B#Q|\u0001\u00027B$]mD$\u0016+b\u0015\u001e\u0001\u00100]mD\u00016\r!Wl\u0017\u0018*\u0005b@z\t\u001e0\u0007bQ~\b\u001ddE" .length(); var1 = 25; var7 = -1; } var10000 = 114; var10001 = var2.substring(++var7, var7 + var1); var10002 = 0; } } } private static Exception a(Exception var0) { return var0; } private static char[] c(String var0) { char[] var10000 = var0.toCharArray(); if (var10000.length < 2) { var10000[0] = (char)(var10000[0] ^ 3); } return var10000; } private static String b(int var0, char[] var1) { int var10003 = var1.length; int var10002 = var0; char[] var10001 = var1; int var10000 = var10003; for (int var2 = 0; var10000 > var2; var2++) { var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) { case 0 -> 54; case 1 -> 16; case 2 -> 48; case 3 -> 64; case 4 -> 109; case 5 -> 22; default -> 3; }); } return new String(var10001).intern(); } } ===== work/source-derived/layer7-gateway-11.2.1-decompiled/layer7-gateway-common/com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.java ===== package com.l7tech.gateway.common.spring.remoting.http; import com.l7tech.gateway.common.admin.security.DeserializeClassFilter; import com.l7tech.util.ArrayUtils; import com.l7tech.util.ClassFilter; import com.l7tech.util.ClassNotPermittedException; import com.l7tech.util.CompositeClassFilter; import com.l7tech.util.ConfigFactory; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.util.Set; import java.util.logging.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter; import org.springframework.remoting.support.RemoteInvocation; import org.springframework.remoting.support.RemoteInvocationResult; public class SecureHttpInvokerServiceExporter extends HttpInvokerServiceExporter { private static final Logger a; private static final boolean b; private static final String[] c; private static final boolean d; private Set e; private SecureHttpInvokerServiceExporter.SecurityCallback f; private ClassLoader g; @Nullable private Boolean h; private static final String[] i; public Set getPermittedClassNames() { return this.e; } public void setPermittedClassNames(Set var1) { this.e = var1; } public SecureHttpInvokerServiceExporter.SecurityCallback getSecurityCallback() { return this.f; } public void setSecurityCallback(SecureHttpInvokerServiceExporter.SecurityCallback var1) { this.f = var1; } public void setBypassDeserializationClassFilter(@Nullable Boolean var1) { this.h = var1; } public boolean isDeserializationClassFilterDisabled() { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 0 // 01: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.h Ljava/lang/Boolean; // 04: ifnull 20 // 07: aload 0 // 08: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.h Ljava/lang/Boolean; // 0b: invokevirtual java/lang/Boolean.booleanValue ()Z // 0e: ifeq 20 // 11: goto 18 // 14: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 17: athrow // 18: bipush 1 // 19: goto 21 // 1c: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 1f: athrow // 20: bipush 0 // 21: ireturn // try (0 -> 7): 8 com/l7tech/util/ClassNotPermittedException // try (3 -> 12): 12 com/l7tech/util/ClassNotPermittedException } public void setModuleClassLoader(ClassLoader var1) { this.g = var1; } public void handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException { try { super.handleRequest(var1, var2); } catch (SecureHttpInvokerServiceExporter.SecurityIOException var5) { RemoteInvocationResult var7 = new RemoteInvocationResult(var5.getCause()); this.writeRemoteInvocationResult(var1, var2, var7); } catch (ClassNotPermittedException var6) { RemoteInvocationResult var4 = new RemoteInvocationResult(var6); this.writeRemoteInvocationResult(var1, var2, var4); } } protected RemoteInvocation doReadRemoteInvocation(ObjectInputStream var1) throws IOException, ClassNotFoundException { RemoteInvocation var2 = super.doReadRemoteInvocation(var1); this.a(var2); return var2; } protected ClassLoader getBeanClassLoader() { try { if (this.g != null) { return this.g; } } catch (ClassNotPermittedException var1) { throw a(var1); } return super.getBeanClassLoader(); } protected ObjectInputStream createObjectInputStream(InputStream param1) throws IOException { // $VF: Couldn't be decompiled // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) // java.lang.RuntimeException: parsing failure! // at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211) // at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174) // // Bytecode: // 00: aload 0 // 01: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.e Ljava/util/Set; // 04: ifnull 1a // 07: aload 0 // 08: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.e Ljava/util/Set; // 0b: invokeinterface java/util/Set.isEmpty ()Z 1 // 10: ifeq 71 // 13: goto 1a // 16: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 19: athrow // 1a: aload 0 // 1b: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.f Lcom/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter$SecurityCallback; // 1e: ifnonnull 39 // 21: goto 28 // 24: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 27: athrow // 28: new java/io/IOException // 2b: dup // 2c: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.i [Ljava/lang/String; // 2f: bipush 4 // 30: aaload // 31: invokespecial java/io/IOException. (Ljava/lang/String;)V // 34: athrow // 35: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 38: athrow // 39: aload 0 // 3a: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.f Lcom/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter$SecurityCallback; // 3d: invokeinterface com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter$SecurityCallback.checkSecured ()V 1 // 42: goto 4f // 45: astore 2 // 46: new com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter$SecurityIOException // 49: dup // 4a: aload 2 // 4b: invokespecial com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter$SecurityIOException. (Ljava/io/IOException;)V // 4e: athrow // 4f: aload 0 // 50: invokevirtual com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.isDeserializationClassFilterDisabled ()Z // 53: ifeq 60 // 56: aload 0 // 57: aload 1 // 58: invokespecial org/springframework/remoting/httpinvoker/HttpInvokerServiceExporter.createObjectInputStream (Ljava/io/InputStream;)Ljava/io/ObjectInputStream; // 5b: areturn // 5c: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 5f: athrow // 60: new com/l7tech/gateway/common/spring/remoting/http/q // 63: dup // 64: aload 1 // 65: aload 0 // 66: invokevirtual com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.getBeanClassLoader ()Ljava/lang/ClassLoader; // 69: aload 0 // 6a: invokevirtual com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a ()Lcom/l7tech/util/ClassFilter; // 6d: invokespecial com/l7tech/gateway/common/spring/remoting/http/q. (Ljava/io/InputStream;Ljava/lang/ClassLoader;Lcom/l7tech/util/ClassFilter;)V // 70: areturn // 71: getstatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.d Z // 74: ifeq 8c // 77: new com/l7tech/gateway/common/spring/remoting/http/r // 7a: dup // 7b: aload 1 // 7c: aload 0 // 7d: invokevirtual com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.getBeanClassLoader ()Ljava/lang/ClassLoader; // 80: aload 0 // 81: getfield com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.e Ljava/util/Set; // 84: invokespecial com/l7tech/gateway/common/spring/remoting/http/r. (Ljava/io/InputStream;Ljava/lang/ClassLoader;Ljava/util/Set;)V // 87: areturn // 88: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpInvokerServiceExporter.a (Ljava/lang/Exception;)Ljava/lang/Exception; // 8b: athrow // 8c: aload 0 // 8d: aload 1 // 8e: invokespecial org/springframework/remoting/httpinvoker/HttpInvokerServiceExporter.createObjectInputStream (Ljava/io/InputStream;)Ljava/io/ObjectInputStream; // 91: areturn // try (10 -> 23): 23 java/io/IOException // try (3 -> 13): 14 java/io/IOException // try (0 -> 7): 8 java/io/IOException // try (25 -> 28): 29 java/io/IOException // try (35 -> 42): 42 java/io/IOException // try (53 -> 64): 64 java/io/IOException } @NotNull ClassFilter a() { ClassFilter var1 = DeserializeClassFilter.getInstance(); if (this.g instanceof ClassFilter var2) { return new CompositeClassFilter(new ClassFilter[]{var1, var2}); } else { try { if (var1 == null) { a(0); } return var1; } catch (ClassNotPermittedException var4) { throw a(var4); } } } private void a(RemoteInvocation var1) throws IOException { try { if (var1 == null || !b) { return; } } catch (IOException var4) { throw a(var4); } String var2 = var1.getMethodName(); try { if (ArrayUtils.contains(c, var2)) { a.warning(i[3] + var2 + i[1]); throw new IOException(i[8] + var2 + i[5]); } } catch (IOException var3) { throw a(var3); } } static { String[] var5 = new String[13]; int var3 = 0; String var2 = "\u0014`\u0010x[)5\u0012l\u0015xP\u007f5\u0012x\u001c/\u0019}.\u001ab\u00128\u0019m1\u0005f\u00131\u0019l$\u001a`\t?Yyo\u001f{\t&\u0019l$\u0004{\u000f?Tj\u0002\u001bn\u000e%Rm\u0002P!\u001d\u0010j\t\u0012Rm$\u0005f\u001c:^d \u0003f\u00128tr \u0004|;?[j$\u0005%6{\t3Zn5W{\u0012v^p7\u0018d\u0018vE{2\u0003}\u00145C{%Wb\u0018\"_q%W('\"a\u001c4[{a\u0003`]5_{\"\u001c/\u000e3Tk3\u0012kQvV}\"\u0012|\u000evS{/\u001ej\u0019x\u0002P!*7A\u0012\"yk-\u001b/\u00103Cv.\u0013/X%\u0019;2Wb\b%C>/\u0018{]$Rj4\u0005a]8Br-\b\u001fn\u000e>tq%\u0012\u0012:j\t>Xza\u0011`\u000f4^z%\u0012a]q\b\u0003`.\"Ew/\u0010\b\u0010j\t\u0015[\u007f2\u0004"; int var4 = "\u0014`\u0010x[)5\u0012l\u0015xP\u007f5\u0012x\u001c/\u0019}.\u001ab\u00128\u0019m1\u0005f\u00131\u0019l$\u001a`\t?Yyo\u001f{\t&\u0019l$\u0004{\u000f?Tj\u0002\u001bn\u000e%Rm\u0002P!\u001d\u0010j\t\u0012Rm$\u0005f\u001c:^d \u0003f\u00128tr \u0004|;?[j$\u0005%6{\t3Zn5W{\u0012v^p7\u0018d\u0018vE{2\u0003}\u00145C{%Wb\u0018\"_q%W('\"a\u001c4[{a\u0003`]5_{\"\u001c/\u000e3Tk3\u0012kQvV}\"\u0012|\u000evS{/\u001ej\u0019x\u0002P!*7A\u0012\"yk-\u001b/\u00103Cv.\u0013/X%\u0019;2Wb\b%C>/\u0018{]$Rj4\u0005a]8Br-\b\u001fn\u000e>tq%\u0012\u0012:j\t>Xza\u0011`\u000f4^z%\u0012a]q\b\u0003`.\"Ew/\u0010\b\u0010j\t\u0015[\u007f2\u0004" .length(); char var1 = '>'; int var7 = -1; label24: while (true) { byte var10000 = 97; String var10001 = var2.substring(++var7, var7 + var1); byte var10002 = -1; while (true) { String var9 = a(var10000, a(var10001)); switch (var10002) { case 0: var5[var3++] = var9; if ((var7 += var1) >= var4) { i = var5; a = Logger.getLogger(SecureHttpInvokerServiceExporter.class.getName()); String[] var8 = i; b = ConfigFactory.getBooleanProperty(var8[11], true); c = new String[]{var8[10], var8[7], var8[9]}; d = ConfigFactory.getBooleanProperty(var8[0], true); return; } var1 = var2.charAt(var7); break; default: var5[var3++] = var9; if ((var7 += var1) < var4) { var1 = var2.charAt(var7); continue label24; } var2 = "v\u0002r\u001a9KWp\u000ew\u001a2\u001dWp\u001a~M{\u001fLx\u0000pZ{\u000fSg\u0004qS{\u000eFx\u0002k];\u001b\r}\u0019kD{\u000eFf\u0019m]6\bnp\u0019w[1\u000fOv\u0002r\u001b9KWp\u000ew\u001b2\u001dWp\u001a~Mz\u001fLx\u0000pZz\u000fSg\u0004qSz\u000eFx\u0002k];\u001b\f}\u0019kDz/Fv\u0018mQ\u001d\bWe$qB:\u0017Fg>zF#\u0015@p(gD:\u000eWp\u001f"; var4 = "v\u0002r\u001a9KWp\u000ew\u001a2\u001dWp\u001a~M{\u001fLx\u0000pZ{\u000fSg\u0004qS{\u000eFx\u0002k];\u001b\r}\u0019kD{\u000eFf\u0019m]6\bnp\u0019w[1\u000fOv\u0002r\u001b9KWp\u000ew\u001b2\u001dWp\u001a~Mz\u001fLx\u0000pZz\u000fSg\u0004qSz\u000eFx\u0002k];\u001b\f}\u0019kDz/Fv\u0018mQ\u001d\bWe$qB:\u0017Fg>zF#\u0015@p(gD:\u000eWp\u001f" .length(); var1 = '>'; var7 = -1; } var10000 = 3; var10001 = var2.substring(++var7, var7 + var1); var10002 = 0; } } } private static Exception a(Exception var0) { return var0; } private static char[] a(String var0) { char[] var10000 = var0.toCharArray(); if (var10000.length < 2) { var10000[0] = (char)(var10000[0] ^ 32); } return var10000; } private static String a(int var0, char[] var1) { int var10003 = var1.length; int var10002 = var0; char[] var10001 = var1; int var10000 = var10003; for (int var2 = 0; var10000 > var2; var2++) { var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) { case 0 -> 22; case 1 -> 110; case 2 -> 28; case 3 -> 55; case 4 -> 86; case 5 -> 127; default -> 32; }); } return new String(var10001).intern(); } public interface SecurityCallback { void checkSecured() throws IOException; } private static class SecurityIOException extends IOException { static final long serialVersionUID = 8925508867122254463L; private SecurityIOException(IOException var1) { super(var1); } } } ===== work/source-derived/layer7-gateway-11.2.1-decompiled/layer7-gateway-common/com/l7tech/gateway/common/spring/remoting/http/SecureRemoteInvocationExecutor.java ===== package com.l7tech.gateway.common.spring.remoting.http; import com.l7tech.gateway.common.spring.remoting.RemoteUtils; import com.l7tech.gateway.common.spring.remoting.RemotingProvider; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.springframework.remoting.support.RemoteInvocation; import org.springframework.remoting.support.RemoteInvocationExecutor; public final class SecureRemoteInvocationExecutor implements RemoteInvocationExecutor { private final String a; private final Class b; private final RemotingProvider c; private static final String d; public SecureRemoteInvocationExecutor(String var1, Class var2, RemotingProvider var3) { if (var3 == null) { throw new IllegalArgumentException(d); } this.a = var1; this.b = var2; this.c = var3; } public Object invoke(RemoteInvocation var1, Object var2) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Annotation var3 = this.a(var1.getMethodName(), var1.getParameterTypes(), var2.getClass()); this.c.checkPermitted((T)var3, this.a, var1.getClass().getName() + "#" + var1.getMethodName()); RemoteUtils.setFacility(this.a); try { return var1.invoke(var2); } finally { RemoteUtils.setFacility(null); } } private T a(String var1, Class[] var2, Class var3) { Annotation var4 = null; if (this.b != null) { try { Method var5 = var3.getMethod(var1, var2); var4 = var5.getAnnotation(this.b); if (var4 == null) { Class[] var6 = var3.getInterfaces(); for (Class var10 : var6) { try { var5 = var10.getMethod(var1, var2); var4 = var5.getAnnotation(this.b); if (var4 != null) { break; } } catch (NoSuchMethodException var12) { } } } } catch (NoSuchMethodException var13) { } } return (T)var4; } static { String var10002 = a(89, a("2H\u001ewo-;'}\u0001wm-1%_Sqhd'%\\\u0006qi!1")); byte var10001 = -1; d = var10002; } private static char[] a(String var0) { char[] var10000 = var0.toCharArray(); if (var10000.length < 2) { var10000[0] = (char)(var10000[0] ^ 12); } return var10000; } private static String a(int var0, char[] var1) { int var10003 = var1.length; int var10002 = var0; char[] var10001 = var1; int var10000 = var10003; for (int var2 = 0; var10000 > var2; var2++) { var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) { case 0 -> 25; case 1 -> 116; case 2 -> 42; case 3 -> 65; case 4 -> 66; case 5 -> 29; default -> 12; }); } return new String(var10001).intern(); } }