/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.XmlUtil
 *  com.l7tech.gateway.common.cluster.ClusterNodeInfo
 *  com.l7tech.objectmodel.FindException
 *  jakarta.servlet.ServletConfig
 *  jakarta.servlet.ServletContext
 *  jakarta.servlet.ServletException
 *  jakarta.servlet.http.HttpServlet
 *  jakarta.servlet.http.HttpServletRequest
 *  jakarta.servlet.http.HttpServletResponse
 *  org.springframework.web.context.WebApplicationContext
 *  org.springframework.web.context.support.WebApplicationContextUtils
 */
package com.l7tech.server;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.gateway.common.cluster.ClusterNodeInfo;
import com.l7tech.objectmodel.FindException;
import com.l7tech.server.cluster.ClusterInfoManager;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class StatusPingServlet
extends HttpServlet {
    private WebApplicationContext applicationContext;
    private final Logger logger = Logger.getLogger(((Object)((Object)this)).getClass().getName());
    static final long serialVersionUID = -2937952207005252896L;
    private static final String[] a;

    public void init(ServletConfig servletConfig) throws ServletException {
        try {
            super.init(servletConfig);
            this.applicationContext = WebApplicationContextUtils.getWebApplicationContext((ServletContext)this.getServletContext());
            if (this.applicationContext == null) {
                throw new ServletException(a[2]);
            }
        }
        catch (ServletException servletException) {
            throw StatusPingServlet.a((Exception)((Object)servletException));
        }
    }

    public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        Collection<ClusterNodeInfo> collection;
        block6: {
            collection = null;
            try {
                String[] stringArray = a;
                ClusterInfoManager clusterInfoManager = (ClusterInfoManager)this.applicationContext.getBean(stringArray[4]);
                collection = clusterInfoManager.retrieveClusterStatus();
            }
            catch (FindException findException) {
                String[] stringArray = a;
                this.logger.log(Level.SEVERE, stringArray[5], findException);
                this.outputError(httpServletResponse, findException.getMessage());
            }
            try {
                try {
                    if (collection != null && !collection.isEmpty()) break block6;
                }
                catch (FindException findException) {
                    throw StatusPingServlet.a((Exception)((Object)findException));
                }
                this.outputError(httpServletResponse, a[1]);
            }
            catch (FindException findException) {
                throw StatusPingServlet.a((Exception)((Object)findException));
            }
        }
        this.outputStatuses(httpServletResponse, collection);
    }

    public void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
        this.doGet(httpServletRequest, httpServletResponse);
    }

    private void outputStatuses(HttpServletResponse httpServletResponse, Collection collection) throws IOException {
        httpServletResponse.setContentType(XmlUtil.TEXT_XML);
        httpServletResponse.setStatus(200);
        PrintWriter printWriter = httpServletResponse.getWriter();
        String[] stringArray = a;
        printWriter.println(stringArray[17]);
        printWriter.println(stringArray[19]);
        for (ClusterNodeInfo clusterNodeInfo : collection) {
            stringArray = a;
            printWriter.println(stringArray[16]);
            printWriter.println(stringArray[22] + clusterNodeInfo.getName() + stringArray[3]);
            printWriter.println(stringArray[21] + clusterNodeInfo.getMac() + stringArray[6]);
            printWriter.println(stringArray[8] + clusterNodeInfo.getAddress() + stringArray[10]);
            printWriter.println(stringArray[9] + this.humanReadableTime(clusterNodeInfo.getUptime()) + stringArray[11]);
            printWriter.println(stringArray[12] + clusterNodeInfo.getAvgLoad() + stringArray[13]);
            printWriter.println(stringArray[14] + this.humanReadableTime(clusterNodeInfo.getLastUpdateTimeStamp()) + stringArray[7]);
            printWriter.println(stringArray[23]);
        }
        printWriter.println(a[18]);
        printWriter.close();
    }

    private void outputError(HttpServletResponse httpServletResponse, String string) throws IOException {
        httpServletResponse.setContentType(XmlUtil.TEXT_XML);
        httpServletResponse.setStatus(500);
        PrintWriter printWriter = httpServletResponse.getWriter();
        String[] stringArray = a;
        printWriter.println(stringArray[24]);
        printWriter.println(stringArray[0]);
        printWriter.println("\t" + string);
        printWriter.println(stringArray[20]);
        printWriter.close();
    }

    private String humanReadableTime(long l2) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(l2);
        String string = this.twoDigInt(calendar.get(13));
        String string2 = this.twoDigInt(calendar.get(12));
        String string3 = this.twoDigInt(calendar.get(11));
        String string4 = this.twoDigInt(calendar.get(5));
        String string5 = this.twoDigInt(calendar.get(2) + 1);
        String string6 = calendar.get(1) + "/" + string5 + "/" + string4 + a[15] + string3 + ":" + string2 + ":" + string;
        return string6;
    }

    private String twoDigInt(int n2) {
        if (n2 < 10) {
            return "0" + n2;
        }
        return "" + n2;
    }

    private static Exception a(Exception exception) {
        return exception;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[25];
                var3_1 = 0;
                var2_2 = "gs\u001eT?\n}e\u00178a\u0004\u0012?_i>tJF.\rx>rJF?\u001ez.s6\u0018o\u0004S\"\u0018{)a\u001e\\$\u0011.>r\u0018Z9D.8o\u001fY/_`4tJR.\u000b.:p\u001aY\"\u001co/i\u0005[k\u001ca5t\u000fM?\u0007g/\u0004T&\u001a0\u00128l\u001fF?\u001a|\u0012n\fZ\u0006\u001e`:g\u000fG\u0015>r\u0018Z9_i>t\u001e\\%\u0018.(t\u000bA>\f.\u0005g/\u0003Qu\u000eg/\u0006T8\u000b[+d\u000bA.\u001b0\u000bR\tVT/\u001b|>s\u0019\u000b\nR\tV@;\u000bg6eT\ng/\u000bQ/\rk(sT\tg/\u001fE?\u0016c>>\u000bR\tVT=\u0018b4a\u000e\u000b\ng/\u000bC,\u0013a:dT\u000fR\tVY*\fz\u000ep\u000eT?\u001aje\u0003{-J\tR<\u0019P9\tk)>&g?\u0012X'_x>r\u0019\\$\u00113y1D\u0005i_k5c\u0005Q\"\u0011if\"?a\rR6y?T\tg/\u0019A*\u000b{(>\bgs\u001eT?\n}e\tg/\u0019A*\u000b{(>\u0006R\tV\\/A\bR\tV[*\u0012ke";
                var4_3 = "gs\u001eT?\n}e\u00178a\u0004\u0012?_i>tJF.\rx>rJF?\u001ez.s6\u0018o\u0004S\"\u0018{)a\u001e\\$\u0011.>r\u0018Z9D.8o\u001fY/_`4tJR.\u000b.:p\u001aY\"\u001co/i\u0005[k\u001ca5t\u000fM?\u0007g/\u0004T&\u001a0\u00128l\u001fF?\u001a|\u0012n\fZ\u0006\u001e`:g\u000fG\u0015>r\u0018Z9_i>t\u001e\\%\u0018.(t\u000bA>\f.\u0005g/\u0003Qu\u000eg/\u0006T8\u000b[+d\u000bA.\u001b0\u000bR\tVT/\u001b|>s\u0019\u000b\nR\tV@;\u000bg6eT\ng/\u000bQ/\rk(sT\tg/\u001fE?\u0016c>>\u000bR\tVT=\u0018b4a\u000e\u000b\ng/\u000bC,\u0013a:dT\u000fR\tVY*\fz\u000ep\u000eT?\u001aje\u0003{-J\tR<\u0019P9\tk)>&g?\u0012X'_x>r\u0019\\$\u00113y1D\u0005i_k5c\u0005Q\"\u0011if\"?a\rR6y?T\tg/\u0019A*\u000b{(>\bgs\u001eT?\n}e\tg/\u0019A*\u000b{(>\u0006R\tV\\/A\bR\tV[*\u0012ke".length();
                var1_4 = 8;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = StatusPingServlet.a(v0, StatusPingServlet.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = ",B;8Ps\u0006@\f*&\u0019Al&Y!\u0006@\fg\"ZoM\u0007O:{\u0017!\u0015K\u001d{/\\o\u0017\u0018\\A\u001fs,H\u0007A*";
                    var4_3 = ",B;8Ps\u0006@\f*&\u0019Al&Y!\u0006@\fg\"ZoM\u0007O:{\u0017!\u0015K\u001d{/\\o\u0017\u0018\\A\u001fs,H\u0007A*".length();
                    var1_4 = 10;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 39;
                        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++] = StatusPingServlet.a(v0, StatusPingServlet.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;
            }
        }
        StatusPingServlet.a = var5;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x57);
        }
        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 -> 2;
                    case 1 -> 89;
                    case 2 -> 51;
                    case 3 -> 108;
                    case 4 -> 18;
                    case 5 -> 38;
                    default -> 87;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

