org.zaproxy.zap.utils.ZapSupportUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.zaproxy.zap.utils.ZapSupportUtils.java

Source

/*
 * Zed Attack Proxy (ZAP) and its related class files.
 *
 * ZAP is an HTTP/HTTPS proxy for assessing web application security.
 * 
 * Copyright 2017 The ZAP Development Team
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.zaproxy.zap.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;

import javax.swing.LookAndFeel;
import javax.swing.UIManager;

import org.apache.commons.lang.WordUtils;
import org.parosproxy.paros.Constant;
import org.zaproxy.zap.control.AddOn;
import org.zaproxy.zap.control.AddOnLoader;
import org.zaproxy.zap.control.ExtensionFactory;

/**
 * A class containing utility methods that can be used for support purposes.
 * The functions in this class return details relevant for support and tickets
 * prefixed with labels.
 * 
 * @since 2.7.0
 */
public final class ZapSupportUtils {

    private static final String NEWLINE = System.lineSeparator();

    private ZapSupportUtils() {

    }

    public static String getProductName() {
        return Constant.PROGRAM_NAME;
    }

    public static String getVersion() {
        return Constant.messages.getString("support.version.label") + " " + Constant.PROGRAM_VERSION;
    }

    public static String getZapHomeDirectory() {
        return Constant.messages.getString("support.home.directory.label") + " " + Constant.getZapHome();
    }

    public static String getOperatingSystem() {
        return Constant.messages.getString("support.operating.system.label") + " " + System.getProperty("os.name");
    }

    public static String getJavaVersionVendor() {
        String javaVersion = System.getProperty("java.version");
        String javaVendor = System.getProperty("java.vendor");
        return Constant.messages.getString("support.java.version.label") + " " + javaVendor + " " + javaVersion;
    }

    public static String getLocaleDisplay() {
        return Constant.messages.getString("support.locale.display.label") + " "
                + Locale.getDefault(Locale.Category.DISPLAY);
    }

    public static String getLocaleFormat() {
        return Constant.messages.getString("support.locale.format.label") + " "
                + Locale.getDefault(Locale.Category.FORMAT);
    }

    public static String getLocaleSystem() {
        return Constant.messages.getString("support.locale.system.label") + " " + Constant.getSystemsLocale();
    }

    public static String getLookAndFeel() {
        LookAndFeel laf = UIManager.getLookAndFeel();
        String strLaf;
        if (laf != null) {
            strLaf = laf.getName() + " (" + laf.getClass().getCanonicalName() + ")";
        } else {
            strLaf = "[null]";
        }
        return Constant.messages.getString("support.laf.label") + " " + strLaf;
    }

    public static String getInstalledAddons() {
        AddOnLoader addOnLoader = ExtensionFactory.getAddOnLoader();
        List<AddOn> sortedAddOns = new ArrayList<>(addOnLoader.getAddOnCollection().getInstalledAddOns());
        Collections.sort(sortedAddOns, new Comparator<AddOn>() {

            @Override
            public int compare(AddOn addOn, AddOn otherAddOn) {
                return addOn.getId().compareTo(otherAddOn.getId());
            }
        });
        return Constant.messages.getString("support.installed.addons.label") + " " + sortedAddOns;
    }

    public static String getAll(boolean formatted) {
        StringBuilder installedAddons = new StringBuilder(200);
        if (formatted) {
            installedAddons.append("---").append(NEWLINE);
            installedAddons.append(WordUtils.wrap(getInstalledAddons(), 60)).append(NEWLINE);
            installedAddons.append("---").append(NEWLINE);
        } else {
            installedAddons.append(getInstalledAddons()).append(NEWLINE);
        }

        StringBuilder supportDetailsBuilder = new StringBuilder(300);

        supportDetailsBuilder.append(getProductName()).append(NEWLINE);
        supportDetailsBuilder.append(getVersion()).append(NEWLINE);
        supportDetailsBuilder.append(installedAddons);
        supportDetailsBuilder.append(getOperatingSystem()).append(NEWLINE);
        supportDetailsBuilder.append(getJavaVersionVendor()).append(NEWLINE);
        supportDetailsBuilder.append(getLocaleSystem()).append(NEWLINE);
        supportDetailsBuilder.append(getLocaleDisplay()).append(NEWLINE);
        supportDetailsBuilder.append(getLocaleFormat()).append(NEWLINE);
        supportDetailsBuilder.append(getZapHomeDirectory()).append(NEWLINE);
        supportDetailsBuilder.append(getLookAndFeel()).append(NEWLINE);

        return supportDetailsBuilder.toString();
    }

}