/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.spring.remoting.RemoteUtils
 *  com.l7tech.identity.IdentityProviderConfig
 *  com.l7tech.identity.User
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.IdentityHeader
 *  com.l7tech.util.InetAddressUtil
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.event;

import com.l7tech.gateway.common.spring.remoting.RemoteUtils;
import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.server.event.a;
import com.l7tech.server.event.b;
import com.l7tech.util.InetAddressUtil;
import java.rmi.server.ServerNotActiveException;
import java.security.AccessController;
import java.security.Principal;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.Subject;
import org.jetbrains.annotations.Nullable;

public class AdminInfo {
    public static final Logger logger;
    public static final String LOCALHOST_IP;
    public static final String LOCALHOST_SUBJECT;
    public final String login;
    public final String id;
    public final Goid identityProviderOid;
    public final String ip;
    @Nullable
    public final User user;
    private final Subject a;
    private static final String[] b;

    private AdminInfo(String string, String string2, Goid goid, String string3, @Nullable User user, Subject subject) {
        this.ip = string3;
        this.id = string2;
        this.identityProviderOid = goid;
        this.login = string;
        this.user = user;
        this.a = subject;
    }

    public static AdminInfo find() {
        return AdminInfo.find(true);
    }

    public static AdminInfo find(boolean bl2) {
        User user;
        String[] stringArray;
        String string;
        Goid goid;
        Object object;
        String string2;
        Subject subject;
        block14: {
            subject = null;
            string2 = null;
            object = null;
            goid = IdentityProviderConfig.DEFAULT_GOID;
            try {
                string = RemoteUtils.getClientHost();
                subject = Subject.getSubject(AccessController.getContext());
            }
            catch (ServerNotActiveException serverNotActiveException) {
                try {
                    if (bl2) {
                        logger.log(Level.WARNING, b[5] + LOCALHOST_IP + b[6]);
                    }
                }
                catch (ServerNotActiveException serverNotActiveException2) {
                    throw AdminInfo.a(serverNotActiveException2);
                }
                string = LOCALHOST_IP;
                stringArray = b;
                string2 = stringArray[1];
            }
            user = null;
            if (subject != null) {
                Set<Principal> set = subject.getPrincipals();
                try {
                    if (set == null || set.isEmpty()) break block14;
                }
                catch (ServerNotActiveException serverNotActiveException) {
                    throw AdminInfo.a(serverNotActiveException);
                }
                Principal principal = set.iterator().next();
                if (principal instanceof User) {
                    user = (User)principal;
                    string2 = user.getLogin();
                    object = user.getId();
                    goid = user.getProviderId();
                }
                if (string2 == null) {
                    string2 = principal.getName();
                }
                if (object == null) {
                    stringArray = b;
                    object = stringArray[3] + string2;
                }
            }
        }
        if (string2 == null) {
            stringArray = b;
            string2 = stringArray[2];
        }
        if (object == null) {
            object = b[0] + string2;
        }
        if (string == null) {
            string = LOCALHOST_IP;
        }
        return new AdminInfo(string2, (String)object, goid, string, user, subject);
    }

    public <OUT> Callable<OUT> wrapCallable(Callable<OUT> callable) {
        return AdminInfo.a(this.a, AdminInfo.a(this.ip, callable));
    }

    private static <OUT> Callable<OUT> a(Subject subject, Callable<OUT> callable) {
        if (subject == null) {
            return callable;
        }
        return new a(subject, callable);
    }

    private static <OUT> Callable<OUT> a(String string, Callable<OUT> callable) {
        if (string == null) {
            return callable;
        }
        return new b(string, callable);
    }

    public IdentityHeader getIdentityHeader() {
        return new IdentityHeader(this.identityProviderOid, this.id, EntityType.USER, this.login, "", null, null);
    }

    public <OUT> OUT invokeCallable(Callable<OUT> callable) throws Exception {
        Callable<OUT> callable2 = AdminInfo.a(this.a, AdminInfo.a(this.ip, callable));
        return callable2.call();
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[7];
                var3_1 = 0;
                var2_2 = "K'<$]AhZ9o\u000bW:6+R[aH!0'\u0014N;>$Q_vx9</P\\KN7?/]\\\nK'<$]AhZ9o\u000bW:6+R[aH!0'";
                var4_3 = "K'<$]AhZ9o\u000bW:6+R[aH!0'\u0014N;>$Q_vx9</P\\KN7?/]\\\nK'<$]AhZ9o\u000bW:6+R[aH!0'".length();
                var1_4 = 10;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 127;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AdminInfo.a(v0, AdminInfo.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "|.#yL_fA(/*YIj\\/0<\r^}M(2yNZ~[#\"yLH+D)%8A\u001bhI**u\rT~\\5/=H\u001bdNf5<_MbK/(>\rZe\b'\"4DUx\\4'-DMn\b4#4BOn\b%'5A\u0015\\A**yXHn\b/6vXHnZ\f\u0007*):LWxQ52<@";
                    var4_3 = "|.#yL_fA(/*YIj\\/0<\r^}M(2yNZ~[#\"yLH+D)%8A\u001bhI**u\rT~\\5/=H\u001bdNf5<_MbK/(>\rZe\b'\"4DUx\\4'-DMn\b4#4BOn\b%'5A\u0015\\A**yXHn\b/6vXHnZ\f\u0007*):LWxQ52<@".length();
                    var1_4 = 113;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 108;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AdminInfo.a(v0, AdminInfo.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        AdminInfo.b = var5;
        AdminInfo.LOCALHOST_SUBJECT = AdminInfo.b[4];
        AdminInfo.logger = Logger.getLogger(AdminInfo.class.getName());
        AdminInfo.LOCALHOST_IP = InetAddressUtil.getLocalHostAddress();
    }

    private static ServerNotActiveException a(ServerNotActiveException serverNotActiveException) {
        return serverNotActiveException;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x67);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 68;
                    case 1 -> 42;
                    case 2 -> 42;
                    case 3 -> 53;
                    case 4 -> 65;
                    case 5 -> 87;
                    default -> 103;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

