package com.l7tech.gateway.common.transport.ftp;

import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.util.GoidUpgradeMapper;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.PrintStream;

public class FtpClientConfigImpl implements FtpClientConfig, Cloneable {
   private static final long serialVersionUID = 8783020368179729829L;
   private FtpSecurity security = FtpSecurity.FTP_UNSECURED;
   private String host;
   private int port = -1;
   private int timeout = 10000;
   private String user;
   private String pass;
   private String directory;
   private boolean isVerifyServerCert;
   private transient PrintStream debugStream;
   private boolean enabled;
   private boolean useClientCert;
   private FtpCredentialsSource credentialsSource;
   private long clientCertKeystoreId;
   private Goid clientCertKeystoreGoid;
   private String clientCertKeyAlias;
   private static final String a;

   private FtpClientConfigImpl() {
      this.user = a;
      this.pass = "";
      this.isVerifyServerCert = false;
      this.enabled = true;
      this.useClientCert = false;
      this.credentialsSource = FtpCredentialsSource.SPECIFIED;
      this.clientCertKeystoreId = -1L;
      this.clientCertKeystoreGoid = PersistentEntity.DEFAULT_GOID;
   }

   public static FtpClientConfig newFtpConfig(String var0) {
      FtpClientConfigImpl var1 = new FtpClientConfigImpl();
      var1.setHost(var0);
      return var1;
   }

   @Override
   public FtpClientConfig setHost(String var1) {
      this.host = var1;
      return this;
   }

   @Override
   public String getHost() {
      return this.host;
   }

   @Override
   public FtpClientConfig setPort(int var1) {
      this.port = var1;
      return this;
   }

   @Override
   public int getPort() {
      return this.port != -1 ? this.port : (FtpSecurity.FTP_UNSECURED == this.security ? 21 : 990);
   }

   @Override
   public FtpClientConfig setTimeout(int var1) {
      this.timeout = var1;
      return this;
   }

   @Override
   public int getTimeout() {
      return this.timeout;
   }

   @Override
   public FtpClientConfig setUser(String var1) {
      this.user = var1;
      return this;
   }

   @Override
   public String getUser() {
      return this.user;
   }

   @Override
   public FtpClientConfig setPass(String var1) {
      this.pass = var1;
      return this;
   }

   @Override
   public String getPass() {
      return this.pass;
   }

   @Override
   public FtpClientConfig setDirectory(String var1) {
      this.directory = var1;
      return this;
   }

   @Override
   public String getDirectory() {
      return this.directory;
   }

   @Override
   public FtpClientConfig setDebugStream(PrintStream var1) {
      this.debugStream = var1;
      return this;
   }

   @Override
   public PrintStream getDebugStream() {
      return this.debugStream;
   }

   @Override
   public FtpClientConfig setSecurity(FtpSecurity var1) {
      this.security = var1;
      return this;
   }

   @Override
   public FtpSecurity getSecurity() {
      return this.security;
   }

   @Override
   public FtpClientConfig setVerifyServerCert(boolean var1) {
      this.isVerifyServerCert = var1;
      return this;
   }

   @Override
   public boolean isVerifyServerCert() {
      return this.isVerifyServerCert;
   }

   @Override
   public FtpClientConfig setUseClientCert(boolean var1) {
      this.useClientCert = var1;
      return this;
   }

   @Override
   public boolean isUseClientCert() {
      return this.useClientCert;
   }

   @Override
   public FtpClientConfig setCredentialsSource(FtpCredentialsSource var1) {
      this.credentialsSource = var1;
      return this;
   }

   @Override
   public FtpCredentialsSource getCredentialsSource() {
      return this.credentialsSource;
   }

   @Deprecated
   @Override
   public FtpClientConfig setClientCertId(long var1) {
      this.clientCertKeystoreGoid = GoidUpgradeMapper.mapOid(EntityType.SSG_KEYSTORE, var1);
      return this;
   }

   @Override
   public FtpClientConfig setClientCertId(Goid var1) {
      this.clientCertKeystoreGoid = var1;
      return this;
   }

   @Override
   public Goid getClientCertId() {
      return this.clientCertKeystoreGoid;
   }

   @Override
   public FtpClientConfig setClientCertAlias(String var1) {
      this.clientCertKeyAlias = var1;
      return this;
   }

   @Override
   public String getClientCertAlias() {
      return this.clientCertKeyAlias;
   }

   @Override
   public FtpClientConfig setEnabled(boolean var1) {
      this.enabled = var1;
      return this;
   }

   @Override
   public boolean isEnabled() {
      return this.enabled;
   }

   private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
      this.enabled = true;
      var1.defaultReadObject();
   }

   @Override
   public Object clone() throws CloneNotSupportedException {
      return super.clone();
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();
      var1 = 31 * var1 + this.security.hashCode();
      var1 = 31 * var1 + this.host.hashCode();
      var1 = 31 * var1 + this.port;
      var1 = 31 * var1 + this.timeout;
      var1 = 31 * var1 + (this.user != null ? this.user.hashCode() : 0);
      var1 = 31 * var1 + this.pass.hashCode();
      var1 = 31 * var1 + (this.directory != null ? this.directory.hashCode() : 0);
      var1 = 31 * var1 + (this.isVerifyServerCert ? 1 : 0);
      return 31 * var1 + (this.enabled ? 1 : 0);
   }

   static {
      String var10002 = a(93, a("m\u0003q"));
      byte var10001 = -1;
      a = var10002;
   }

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

      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 -> 86;
            case 1 -> 42;
            case 2 -> 92;
            case 3 -> 34;
            case 4 -> 26;
            case 5 -> 126;
            default -> 89;
         });
      }

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