package com.l7tech.server.util;

import com.l7tech.message.HeadersKnob;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.HttpPassthroughRuleSet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.security.cert.X509Certificate;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;

public class ServletUtils {
   public static final String PARAM_HTTP_X509CERT;
   private static final Logger a;
   private static final String[] b;

   public static X509Certificate getRequestCert(HttpServletRequest var0) {
      try {
         if (!var0.isSecure()) {
            throw new IllegalArgumentException(b[12]);
         }
      } catch (IllegalArgumentException var7) {
         throw a(var7);
      }

      String[] var3 = b;
      Object var1 = var0.getAttribute(var3[6]);

      try {
         if (var1 == null) {
            a.fine(var3[5]);
            return null;
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      if (var1 instanceof Object[] var2) {
         try {
            if (var2[0] instanceof X509Certificate) {
               return (X509Certificate)var2[0];
            }
         } catch (IllegalArgumentException var5) {
            throw a(var5);
         }

         Logger var10000 = a;
         String var10001 = var2[0].getClass().getName();
         var3 = b;
         var10000.info(var3[9] + var10001);
         return null;
      } else {
         try {
            if (var1 instanceof X509Certificate) {
               a.fine(b[10]);
               return (X509Certificate)var1;
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }

         a.info(b[2] + var1.getClass().getName());
         return null;
      }
   }

   public static void loadHeaders(@NotNull HttpServletRequest var0, @NotNull Message var1) {
      try {
         if (var0 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var7) {
         throw a(var7);
      }

      try {
         if (var1 == null) {
            a(1);
         }
      } catch (IllegalArgumentException var11) {
         throw a(var11);
      }

      HeadersKnob var2 = var1.getHeadersKnob();
      Enumeration var3 = var0.getHeaderNames();

      while (var3.hasMoreElements()) {
         String var4 = (String)var3.nextElement();

         boolean var10000;
         label57: {
            try {
               if (!HttpPassthroughRuleSet.HEADERS_NOT_TO_IMPLICITLY_FORWARD.contains(var4.toLowerCase())) {
                  var10000 = true;
                  break label57;
               }
            } catch (IllegalArgumentException var10) {
               throw a(var10);
            }

            var10000 = false;
         }

         boolean var5 = var10000;

         try {
            if (!var5) {
               a.log(Level.FINEST, b[14] + var4);
            }
         } catch (IllegalArgumentException var9) {
            throw a(var9);
         }

         Enumeration var6 = var0.getHeaders(var4);

         try {
            while (var6.hasMoreElements()) {
               var2.addHeader(var4, var6.nextElement(), b[13], var5);
            }
         } catch (IllegalArgumentException var8) {
            throw a(var8);
         }
      }
   }

   public static void loadHeaders(@NotNull HttpServletResponse var0, @NotNull Message var1) {
      try {
         if (var0 == null) {
            a(2);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var1 == null) {
            a(3);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      HeadersKnob var2 = var1.getHeadersKnob();
      var2.getHeaders(b[8]).stream().filter(var0x -> {
         try {
            if (!HttpPassthroughRuleSet.HEADERS_NOT_TO_IMPLICITLY_FORWARD.contains(((String)var0x.getKey()).toLowerCase())) {
               a.log(Level.FINEST, b[11] + (String)var0x.getKey());
            }

            return true;
         } catch (IllegalArgumentException var1x) {
            throw a(var1x);
         }
      }).forEach(var1x -> var0.addHeader((String)var1x.getKey(), var1x.getValue().toString()));
   }

   static {
      String[] var5 = new String[17];
      int var3 = 0;
      String var2 = "53\u000bpS6*\u0000a\njLs\u0004:.\u0018KK?(T1\rw_>!\u0000$\u001e%\u0019v7Sa\u0003c\u001ev7Zd\u001f%S&7\u0000a\u0002jJs&\u0011a\u0002pR?\u0007\u0019$\u001fv_4!*7$\u001eq\u001e#%\u0006 \u0001%N!!\u0007$\u0002q\u001e11\u0000a\u0018|N6d\u001a.\u0018%M&4\u0004.\u001eq[7d\r\u0007.\u0019w]6\u0016\u00110\u0019`M''\u001e \u0007dL'%Z2\twH?!\u0000o\u001e`O&!\u00075B]\u000bc}7$\u001eqW5-\u0017 \u0018`\u001f:.LfR:!\u001a5Lf[!0T(\u0002%J;%\u0000a\u001e`O&!\u00075B'\u001e \u0007dL'%Z2\twH?!\u0000o\u001e`O&!\u00075B]\u000bc}7$\u001eqW5-\u0017 \u0018`\u000b\u0018.\rav6%\u0010$\u001ev\u000b<\u00158U\u001e\u001b!\u0015%\tw9:.\u0002(f}qDxLF[!0\u001d'\u0005f_'!T'\u0003pP7d\u001d/LfR:!\u001a5Lf[!0\u001d'\u0005f_'!T\"\u0004dW=~T\"2.\u0019kZs\u001cZt\\<\u001e0!\u00065\u0005cW0%\u0000$LlPs6\u00110\u0019`M'\u001a2(\u0000q[!-\u001a&Lw[ 4\u001b/\u001f`\u001e;!\u0015%\tw\u001e$7 \u0002kQ'd\u0013$\u0018%]66\u0000a\nwQ>d\u001a.\u0002(m\u0000\bT3\ttK67\u0000\u000b<\u00158U\u001e\u001b!\u0015%\tw\u00192(\u0000q[!-\u001a&Lw[\"1\u00112\u0018%V6%\u0010$\u001e%";
      int var4 = "53\u000bpS6*\u0000a\njLs\u0004:.\u0018KK?(T1\rw_>!\u0000$\u001e%\u0019v7Sa\u0003c\u001ev7Zd\u001f%S&7\u0000a\u0002jJs&\u0011a\u0002pR?\u0007\u0019$\u001fv_4!*7$\u001eq\u001e#%\u0006 \u0001%N!!\u0007$\u0002q\u001e11\u0000a\u0018|N6d\u001a.\u0018%M&4\u0004.\u001eq[7d\r\u0007.\u0019w]6\u0016\u00110\u0019`M''\u001e \u0007dL'%Z2\twH?!\u0000o\u001e`O&!\u00075B]\u000bc}7$\u001eqW5-\u0017 \u0018`\u001f:.LfR:!\u001a5Lf[!0T(\u0002%J;%\u0000a\u001e`O&!\u00075B'\u001e \u0007dL'%Z2\twH?!\u0000o\u001e`O&!\u00075B]\u000bc}7$\u001eqW5-\u0017 \u0018`\u000b\u0018.\rav6%\u0010$\u001ev\u000b<\u00158U\u001e\u001b!\u0015%\tw9:.\u0002(f}qDxLF[!0\u001d'\u0005f_'!T'\u0003pP7d\u001d/LfR:!\u001a5Lf[!0\u001d'\u0005f_'!T\"\u0004dW=~T\"2.\u0019kZs\u001cZt\\<\u001e0!\u00065\u0005cW0%\u0000$LlPs6\u00110\u0019`M'\u001a2(\u0000q[!-\u001a&Lw[ 4\u001b/\u001f`\u001e;!\u0015%\tw\u001e$7 \u0002kQ'd\u0013$\u0018%]66\u0000a\nwQ>d\u001a.\u0002(m\u0000\bT3\ttK67\u0000\u000b<\u00158U\u001e\u001b!\u0015%\tw\u00192(\u0000q[!-\u001a&Lw[\"1\u00112\u0018%V6%\u0010$\u001e%"
         .length();
      char var1 = '>';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 123;
         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) {
                     b = var5;
                     PARAM_HTTP_X509CERT = b[4];
                     a = Logger.getLogger(ServletUtils.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "\u0006&\u0018d]!\u0010\u00174\u001alV&'#\u0011(\u0007,Tb6\u0017$\u0002,K00\u0004\"\u0018,M!+\u001eh9fJ#.\u00173?wQ91";
                  var4 = "\u0006&\u0018d]!\u0010\u00174\u001alV&'#\u0011(\u0007,Tb6\u0017$\u0002,K00\u0004\"\u0018,M!+\u001eh9fJ#.\u00173?wQ91".length();
                  var1 = 14;
                  var7 = -1;
            }

            var10000 = 125;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static IllegalArgumentException a(IllegalArgumentException var0) {
      return var0;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 63);
      }

      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 -> 15;
            case 1 -> 58;
            case 2 -> 23;
            case 3 -> 126;
            case 4 -> 69;
            case 5 -> 40;
            default -> 63;
         });
      }

      return new String(var10001).intern();
   }
}
