package com.l7tech.server.log;

import com.l7tech.common.mime.NoSuchPartException;
import com.l7tech.message.Message;
import com.l7tech.message.MimeKnob;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.util.SoapFaultManager;
import com.l7tech.util.Config;
import com.l7tech.util.IOUtils;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class TrafficLogger implements ApplicationContextAware, PropertyChangeListener {
   public static final String SERVCFG_DETAIL;
   public static final String SERVCFG_ADDREQ;
   public static final String SERVCFG_ADDRES;
   public static final String SERVCFG_SELECTIVE;
   public static final String CONTEXT_VAR_SELECT;
   private static final Logger a;
   private static final Logger b;
   private final Config c;
   private final SoapFaultManager d;
   private final AtomicBoolean e = new AtomicBoolean(false);
   private Auditor f;
   private final ReentrantReadWriteLock g = new ReentrantReadWriteLock();
   private String h;
   private String[] i;
   private boolean j;
   private boolean k;
   private boolean l;
   private static final String[] m;

   public TrafficLogger(Config var1, SoapFaultManager var2) {
      this.h = m[0];
      this.i = Syntax.getReferencedNames(this.h);
      this.j = false;
      this.k = false;
      this.l = false;
      this.c = var1;
      this.d = var2;
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      try {
         if (this.f == null) {
            this.f = new Auditor(this, var1, a);
         }
      } catch (BeansException var2) {
         throw a(var2);
      }
   }

   @Override
   public void propertyChange(PropertyChangeEvent var1) {
      a.log(Level.CONFIG, m[12], new Object[]{var1.getPropertyName(), var1.getOldValue(), var1.getNewValue()});
      this.a();
   }

   public void setEnabled(boolean 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 0
      // 01: getfield com/l7tech/server/log/TrafficLogger.e Ljava/util/concurrent/atomic/AtomicBoolean;
      // 04: iload 1
      // 05: invokevirtual java/util/concurrent/atomic/AtomicBoolean.getAndSet (Z)Z
      // 08: istore 2
      // 09: iload 2
      // 0a: ifne 23
      // 0d: iload 1
      // 0e: ifeq 23
      // 11: goto 18
      // 14: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 17: athrow
      // 18: aload 0
      // 19: invokevirtual com/l7tech/server/log/TrafficLogger.a ()V
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: return
      // try (5 -> 9): 10 org/springframework/beans/BeansException
      // try (7 -> 14): 15 org/springframework/beans/BeansException
   }

   public void log(PolicyEnforcementContext 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:
      // 000: aload 0
      // 001: getfield com/l7tech/server/log/TrafficLogger.e Ljava/util/concurrent/atomic/AtomicBoolean;
      // 004: invokevirtual java/util/concurrent/atomic/AtomicBoolean.get ()Z
      // 007: ifne 00f
      // 00a: return
      // 00b: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00e: athrow
      // 00f: aload 0
      // 010: getfield com/l7tech/server/log/TrafficLogger.g Ljava/util/concurrent/locks/ReentrantReadWriteLock;
      // 013: invokevirtual java/util/concurrent/locks/ReentrantReadWriteLock.readLock ()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
      // 016: astore 7
      // 018: aload 7
      // 01a: invokevirtual java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock.lock ()V
      // 01d: aload 0
      // 01e: getfield com/l7tech/server/log/TrafficLogger.h Ljava/lang/String;
      // 021: astore 2
      // 022: aload 0
      // 023: getfield com/l7tech/server/log/TrafficLogger.i [Ljava/lang/String;
      // 026: astore 3
      // 027: aload 0
      // 028: getfield com/l7tech/server/log/TrafficLogger.j Z
      // 02b: istore 4
      // 02d: aload 0
      // 02e: getfield com/l7tech/server/log/TrafficLogger.k Z
      // 031: istore 5
      // 033: aload 0
      // 034: getfield com/l7tech/server/log/TrafficLogger.l Z
      // 037: istore 6
      // 039: aload 7
      // 03b: invokevirtual java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock.unlock ()V
      // 03e: goto 04b
      // 041: astore 8
      // 043: aload 7
      // 045: invokevirtual java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock.unlock ()V
      // 048: aload 8
      // 04a: athrow
      // 04b: bipush 0
      // 04c: istore 8
      // 04e: aload 1
      // 04f: getstatic com/l7tech/server/log/TrafficLogger.m [Ljava/lang/String;
      // 052: astore 13
      // 054: aload 13
      // 056: bipush 9
      // 058: aaload
      // 059: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariable (Ljava/lang/String;)Ljava/lang/Object; 2
      // 05e: checkcast java/lang/String
      // 061: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z
      // 064: istore 8
      // 066: goto 06b
      // 069: astore 9
      // 06b: iload 6
      // 06d: ifeq 081
      // 070: iload 8
      // 072: ifne 081
      // 075: goto 07c
      // 078: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 07b: athrow
      // 07c: return
      // 07d: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 080: athrow
      // 081: new java/lang/StringBuilder
      // 084: dup
      // 085: invokespecial java/lang/StringBuilder.<init> ()V
      // 088: astore 9
      // 08a: aload 3
      // 08b: arraylength
      // 08c: ifle 0af
      // 08f: aload 9
      // 091: aload 2
      // 092: aload 1
      // 093: aload 3
      // 094: aload 0
      // 095: getfield com/l7tech/server/log/TrafficLogger.f Lcom/l7tech/server/audit/Auditor;
      // 098: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getVariableMap ([Ljava/lang/String;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/util/Map; 3
      // 09d: aload 0
      // 09e: getfield com/l7tech/server/log/TrafficLogger.f Lcom/l7tech/server/audit/Auditor;
      // 0a1: invokestatic com/l7tech/server/policy/variable/ExpandVariables.process (Ljava/lang/String;Ljava/util/Map;Lcom/l7tech/gateway/common/audit/Audit;)Ljava/lang/String;
      // 0a4: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 0a7: pop
      // 0a8: goto 0b6
      // 0ab: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0ae: athrow
      // 0af: aload 9
      // 0b1: aload 2
      // 0b2: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 0b5: pop
      // 0b6: iload 4
      // 0b8: ifeq 0e9
      // 0bb: aload 0
      // 0bc: aload 1
      // 0bd: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getRequest ()Lcom/l7tech/message/Message; 1
      // 0c2: getstatic com/l7tech/server/log/TrafficLogger.m [Ljava/lang/String;
      // 0c5: astore 13
      // 0c7: aload 13
      // 0c9: bipush 7
      // 0cb: aaload
      // 0cc: invokevirtual com/l7tech/server/log/TrafficLogger.a (Lcom/l7tech/message/Message;Ljava/lang/String;)Ljava/lang/String;
      // 0cf: astore 10
      // 0d1: aload 10
      // 0d3: ifnonnull 0dc
      // 0d6: aload 13
      // 0d8: bipush 5
      // 0d9: aaload
      // 0da: astore 10
      // 0dc: aload 9
      // 0de: ldc " "
      // 0e0: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 0e3: aload 10
      // 0e5: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 0e8: pop
      // 0e9: iload 5
      // 0eb: ifeq 17c
      // 0ee: aload 1
      // 0ef: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getResponse ()Lcom/l7tech/message/Message; 1
      // 0f4: astore 11
      // 0f6: aload 11
      // 0f8: invokevirtual com/l7tech/message/Message.isInitialized ()Z
      // 0fb: ifeq 124
      // 0fe: aload 11
      // 100: ldc com/l7tech/message/MimeKnob
      // 102: invokevirtual com/l7tech/message/Message.getKnob (Ljava/lang/Class;)Ljava/lang/Object;
      // 105: ifnull 124
      // 108: goto 10f
      // 10b: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10e: athrow
      // 10f: aload 0
      // 110: aload 11
      // 112: getstatic com/l7tech/server/log/TrafficLogger.m [Ljava/lang/String;
      // 115: astore 13
      // 117: aload 13
      // 119: bipush 10
      // 11b: aaload
      // 11c: invokevirtual com/l7tech/server/log/TrafficLogger.a (Lcom/l7tech/message/Message;Ljava/lang/String;)Ljava/lang/String;
      // 11f: astore 10
      // 121: goto 162
      // 124: aload 1
      // 125: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getPolicyResult ()Lcom/l7tech/policy/assertion/AssertionStatus; 1
      // 12a: astore 12
      // 12c: aload 12
      // 12e: ifnull 156
      // 131: aload 12
      // 133: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 136: if_acmpeq 156
      // 139: goto 140
      // 13c: invokestatic com/l7tech/server/log/TrafficLogger.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 13f: athrow
      // 140: aload 0
      // 141: getfield com/l7tech/server/log/TrafficLogger.d Lcom/l7tech/server/util/SoapFaultManager;
      // 144: aload 1
      // 145: invokeinterface com/l7tech/server/message/PolicyEnforcementContext.getFaultlevel ()Lcom/l7tech/xml/SoapFaultLevel; 1
      // 14a: aload 1
      // 14b: invokevirtual com/l7tech/server/util/SoapFaultManager.constructReturningFault (Lcom/l7tech/xml/SoapFaultLevel;Lcom/l7tech/server/message/PolicyEnforcementContext;)Lcom/l7tech/server/util/SoapFaultManager$FaultResponse;
      // 14e: invokevirtual com/l7tech/server/util/SoapFaultManager$FaultResponse.getContent ()Ljava/lang/String;
      // 151: astore 10
      // 153: goto 162
      // 156: getstatic com/l7tech/server/log/TrafficLogger.m [Ljava/lang/String;
      // 159: astore 13
      // 15b: aload 13
      // 15d: bipush 17
      // 15f: aaload
      // 160: astore 10
      // 162: aload 10
      // 164: ifnonnull 16f
      // 167: getstatic com/l7tech/server/log/TrafficLogger.m [Ljava/lang/String;
      // 16a: bipush 19
      // 16c: aaload
      // 16d: astore 10
      // 16f: aload 9
      // 171: ldc " "
      // 173: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 176: aload 10
      // 178: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 17b: pop
      // 17c: getstatic com/l7tech/server/log/TrafficLogger.b Ljava/util/logging/Logger;
      // 17f: aload 9
      // 181: invokevirtual java/lang/StringBuilder.toString ()Ljava/lang/String;
      // 184: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 187: return
      // try (0 -> 5): 5 com/l7tech/policy/variable/NoSuchVariableException
      // try (13 -> 28): 31 null
      // try (31 -> 32): 31 null
      // try (38 -> 48): 49 com/l7tech/policy/variable/NoSuchVariableException
      // try (50 -> 54): 55 com/l7tech/policy/variable/NoSuchVariableException
      // try (52 -> 58): 58 com/l7tech/policy/variable/NoSuchVariableException
      // try (64 -> 80): 80 com/l7tech/policy/variable/NoSuchVariableException
      // try (115 -> 122): 123 com/l7tech/policy/variable/NoSuchVariableException
      // try (138 -> 143): 144 com/l7tech/policy/variable/NoSuchVariableException
   }

   private String a(Message var1, String var2) {
      String var3 = null;

      try {
         try {
            if (!var1.isInitialized() || var1.getKnob(MimeKnob.class) == null) {
               return var3;
            }
         } catch (IOException var7) {
            throw a(var7);
         }

         byte[] var4 = IOUtils.slurpStream(var1.getMimeKnob().getFirstPart().getInputStream(false));
         Charset var5 = var1.getMimeKnob().getFirstPart().getContentType().getEncoding();
         var3 = new String(var4, var5);
      } catch (IOException var8) {
         String[] var10 = m;
         a.log(Level.WARNING, var10[11] + var2 + var10[14], var8);
      } catch (NoSuchPartException var9) {
         String[] var6 = m;
         a.log(Level.WARNING, var6[6] + var2 + var6[4], var9);
      }

      return var3;
   }

   private void a() {
      try {
         if (a.isLoggable(Level.CONFIG)) {
            a.log(Level.CONFIG, m[13]);
         }
      } catch (BeansException var11) {
         throw a(var11);
      }

      String[] var7 = m;
      String var1 = this.c.getProperty(var7[1]);
      boolean var2 = this.c.getBooleanProperty(var7[2], false);
      boolean var3 = this.c.getBooleanProperty(var7[21], false);
      boolean var4 = this.c.getBooleanProperty(var7[16], false);
      WriteLock var5 = this.g.writeLock();
      var5.lock();

      try {
         this.j = var2;
         this.k = var3;
         this.h = var1;
         this.l = var4;
         this.i = Syntax.getReferencedNames(this.h);
         if (this.i == null) {
            this.i = new String[0];
         }
      } finally {
         var5.unlock();
      }
   }

   static {
      String[] var5 = new String[23];
      int var3 = 0;
      String var2 = "\u0012p\u00168~+rE\u007fJ)f3rK'Dyt,rG~\u0001.{pdYj\u0014sa?zSx\u0014<l;j\u001a+@&};fCn\u0017)!-xW{J2\u007f;eW\u007f\r2a0v[n\u0019q/zlDn\u0017-`0dS%\f){.9E\u007f\u0005)z-j\u0013By\u0005;i7tzd\u0003:j,SS\u007f\u00054c\u0016By\u0005;i7tzd\u0003:j,ESh\u000b/k\frG\u0016By\u0005;i7tzd\u0003:j,DSg\u0001>{7aS\t\u0016h\u000b3{;yBx\u001edn\u0015(j-c\u0016h\u000b3{;yBxD3`*7W}\u00054c?uZn\u000eud\u00111k~yY\u007fD:j*7\u0007Dn\u0015(j-c\u0016By\u0005;i7tzd\u0003:j,ESh\u000b/k\frE\u0014By\u0005;i7tZd\u0003:j,9En\b8l*\bDn\u0017-`0dS\u000eud\u00111k~yY\u007fD:j*7<fy\u000b-j,cO+\u001fmr~t^j\n:j:,\u0016d\b9/(vZ~\u0001g/y0M:\u0019z(r7Xn\u0013}y?{Cn^}(yl\u0004vCz c{\u0000<{7yQ+\u0010/n8q_hD1`9pSyD.j*c_e\u0003.\t\u0016h\u000b3{;yBx\u0014By\u0005;i7tZd\u0003:j,9En\b8l*\u0016By\u0005;i7tzd\u0003:j,DSg\u0001>{7aS\u000bxdD/j-gYe\u00178\u0013By\u0005;i7tzd\u0003:j,SS\u007f\u00054c\u001fdn\u0017-`0dS+\u00072a*rX\u007f\u0017}a1c\u0016j\u0012<f2vTg\u0001\u0012Ud\tscicSh\fs{,vPm\r>";
      int var4 = "\u0012p\u00168~+rE\u007fJ)f3rK'Dyt,rG~\u0001.{pdYj\u0014sa?zSx\u0014<l;j\u001a+@&};fCn\u0017)!-xW{J2\u007f;eW\u007f\r2a0v[n\u0019q/zlDn\u0017-`0dS%\f){.9E\u007f\u0005)z-j\u0013By\u0005;i7tzd\u0003:j,SS\u007f\u00054c\u0016By\u0005;i7tzd\u0003:j,ESh\u000b/k\frG\u0016By\u0005;i7tzd\u0003:j,DSg\u0001>{7aS\t\u0016h\u000b3{;yBx\u001edn\u0015(j-c\u0016h\u000b3{;yBxD3`*7W}\u00054c?uZn\u000eud\u00111k~yY\u007fD:j*7\u0007Dn\u0015(j-c\u0016By\u0005;i7tzd\u0003:j,ESh\u000b/k\frE\u0014By\u0005;i7tZd\u0003:j,9En\b8l*\bDn\u0017-`0dS\u000eud\u00111k~yY\u007fD:j*7<fy\u000b-j,cO+\u001fmr~t^j\n:j:,\u0016d\b9/(vZ~\u0001g/y0M:\u0019z(r7Xn\u0013}y?{Cn^}(yl\u0004vCz c{\u0000<{7yQ+\u0010/n8q_hD1`9pSyD.j*c_e\u0003.\t\u0016h\u000b3{;yBx\u0014By\u0005;i7tZd\u0003:j,9En\b8l*\u0016By\u0005;i7tzd\u0003:j,DSg\u0001>{7aS\u000bxdD/j-gYe\u00178\u0013By\u0005;i7tzd\u0003:j,SS\u007f\u00054c\u001fdn\u0017-`0dS+\u00072a*rX\u007f\u0017}a1c\u0016j\u0012<f2vTg\u0001\u0012Ud\tscicSh\fs{,vPm\r>"
         .length();
      char var1 = 'b';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 37;
         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) {
                     m = var5;
                     String[] var9 = m;
                     SERVCFG_ADDRES = m[8];
                     SERVCFG_ADDREQ = var9[22];
                     CONTEXT_VAR_SELECT = var9[15];
                     SERVCFG_SELECTIVE = var9[3];
                     SERVCFG_DETAIL = var9[18];
                     a = Logger.getLogger(TrafficLogger.class.getName());
                     b = Logger.getLogger(m[20]);
                     return;
                  }

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

                  var2 = "\u001a!]c1o,\"<[b2t\u001d\u000b0Sw3T*\u001d\u0016\u001a!]c1o,\"<[b2t\u001d\u000b0Sw3T*\u001f";
                  var4 = "\u001a!]c1o,\"<[b2t\u001d\u000b0Sw3T*\u001d\u0016\u001a!]c1o,\"<[b2t\u001d\u000b0Sw3T*\u001f".length();
                  var1 = 22;
                  var7 = -1;
            }

            var10000 = 125;
            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] ^ 50);
      }

      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 -> 19;
            case 1 -> 46;
            case 2 -> 65;
            case 3 -> 120;
            case 4 -> 42;
            case 5 -> 123;
            default -> 50;
         });
      }

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