package com.l7tech.server.transport.ftp;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.ftpserver.ftplet.Authentication;
import org.apache.ftpserver.ftplet.AuthenticationFailedException;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.usermanager.AnonymousAuthentication;
import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
import org.apache.ftpserver.usermanager.impl.TransferRatePermission;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.jetbrains.annotations.Nullable;

class g implements UserManager {
   private static final Logger a;
   private static final String b;
   private final int c;
   private final List<Authority> d;
   private static final String[] e;

   public g(int var1, int var2, int var3) {
      this.c = var3;
      this.d = Collections.unmodifiableList(
         Arrays.asList(new ConcurrentLoginPermission(var1, var2), new TransferRatePermission(0, 0), new WritePermission("/"))
      );
   }

   public User authenticate(Authentication var1) throws AuthenticationFailedException {
      label29: {
         User var2;
         if (var1 instanceof AnonymousAuthentication) {
            String[] var6 = e;
            var2 = this.a(var6[5], null);
            a.log(Level.FINE, var6[6]);
         } else {
            if (!(var1 instanceof UsernamePasswordAuthentication var3)) {
               throw new AuthenticationFailedException(e[8]);
            }

            String var4 = var3.getUsername();
            String var5 = var3.getPassword();

            try {
               if (var4 == null || var5 == null) {
                  break label29;
               }
            } catch (AuthenticationFailedException var7) {
               throw a(var7);
            }

            var2 = this.a(var4, var5);
            String[] var8 = e;
            a.log(Level.FINE, var8[15], var4);
         }

         return var2;
      }

      String[] var9 = e;
      throw new AuthenticationFailedException(var9[7]);
   }

   public void delete(String var1) throws FtpException {
      throw new FtpException(e[11]);
   }

   public boolean doesExist(String var1) throws FtpException {
      a.log(Level.FINER, e[2], var1);
      return true;
   }

   public String getAdminName() throws FtpException {
      a.log(Level.FINER, e[0]);
      return null;
   }

   public String[] getAllUserNames() throws FtpException {
      a.log(Level.FINER, e[13]);
      return null;
   }

   public User getUserByName(String var1) throws FtpException {
      User var2 = null;
      String[] var3 = e;
      if (var3[12].equals(var1)) {
         var2 = this.a(var3[12], null);
         a.log(Level.FINER, var3[4]);
      } else if (var1 != null) {
         var2 = this.a(var1, null);
         var3 = e;
         a.log(Level.FINER, var3[10], var1);
      }

      try {
         if (var2 == null) {
            throw new FtpException(e[14] + var1 + e[3]);
         } else {
            return var2;
         }
      } catch (FtpException var4) {
         throw a(var4);
      }
   }

   public boolean isAdmin(String var1) throws FtpException {
      a.log(Level.FINER, e[1], var1);
      return false;
   }

   public void save(User var1) throws FtpException {
      throw new FtpException(e[9]);
   }

   private User a(String var1, @Nullable String var2) {
      BaseUser var3 = new BaseUser();
      var3.setEnabled(true);
      var3.setName(var1);
      var3.setPassword(var2);
      var3.setHomeDirectory("/");
      var3.setMaxIdleTime(this.c);
      var3.setAuthorities(this.d);
      return var3;
   }

   static {
      String[] var5 = new String[16];
      int var3 = 0;
      String var2 = "}\u00188zHNuH\u000e4gIU&R\u001d8v\u0006UcM\t0`RBb\u0012\"i\u000f0a\u0006Nu\u001c\u0012:g\u0006FbQ\u0015;zUSt]\b:a\u0006\u0000!GL(4\u0001\t\u0014i\u000f0a\u0006B~U\u000f!`\u0006\u0000!GL(4\u0001\t\u0002\u001bR\u0017{\u0019!gOIa\u001c\u001d;|H^kS\t&3STcNR\t]\u0012:}_JiI\u000f\u001d}\t!{CIrU\u001f4gCC&]\u0012:}_JiI\u000fufUBt\u0012'}\t!{CIrU\u001f4gOHh\u001c\u001a4zJBb\u001cT;|\u0006DtY\u00180}RNgP\u000f|=\u001ei\u0012&fVWiN\b0w\u0006DtY\u00180}RNgP\\3|TJgHR\u0013o\u001d#v\u0006IiH\\&fVWiN\b0w\b\u0015{\u0019!gOIa\u001c\t&vT\u0007!\u001b\u0007en\u0001\u0000(\u0015x\u00199vRB&R\u0013!3URvL\u0013'gCC(\t]\u0012:}_JiI\u000f\u0018i\u000f0aHFkY\\9zUS&N\u0019$fCTrY\u0018{";
      int var4 = "}\u00188zHNuH\u000e4gIU&R\u001d8v\u0006UcM\t0`RBb\u0012\"i\u000f0a\u0006Nu\u001c\u0012:g\u0006FbQ\u0015;zUSt]\b:a\u0006\u0000!GL(4\u0001\t\u0014i\u000f0a\u0006B~U\u000f!`\u0006\u0000!GL(4\u0001\t\u0002\u001bR\u0017{\u0019!gOIa\u001c\u001d;|H^kS\t&3STcNR\t]\u0012:}_JiI\u000f\u001d}\t!{CIrU\u001f4gCC&]\u0012:}_JiI\u000fufUBt\u0012'}\t!{CIrU\u001f4gOHh\u001c\u001a4zJBb\u001cT;|\u0006DtY\u00180}RNgP\u000f|=\u001ei\u0012&fVWiN\b0w\u0006DtY\u00180}RNgP\\3|TJgHR\u0013o\u001d#v\u0006IiH\\&fVWiN\b0w\b\u0015{\u0019!gOIa\u001c\t&vT\u0007!\u001b\u0007en\u0001\u0000(\u0015x\u00199vRB&R\u0013!3URvL\u0013'gCC(\t]\u0012:}_JiI\u000f\u0018i\u000f0aHFkY\\9zUS&N\u0019$fCTrY\u0018{"
         .length();
      char var1 = 29;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 97;
         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) {
                     e = var5;
                     b = e[12];
                     a = Logger.getLogger(g.class.getName());
                     return;
                  }

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

                  var2 = "\u000bmR\u0003d+\u000b*>Q\u001e1+\u0000~9\u001b\u001fkC\u0019!+\u00107}V\u0005!!D+mR\u0003dbC%.JVck";
                  var4 = "\u000bmR\u0003d+\u000b*>Q\u001e1+\u0000~9\u001b\u001fkC\u0019!+\u00107}V\u0005!!D+mR\u0003dbC%.JVck".length();
                  var1 = 16;
                  var7 = -1;
            }

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

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

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

      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 -> 93;
            case 1 -> 29;
            case 2 -> 52;
            case 3 -> 114;
            case 4 -> 71;
            case 5 -> 70;
            default -> 103;
         });
      }

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