package com.github.markusbernhardt.proxy.util; import com.github.markusbernhardt.proxy.util.Logger.LogLevel; /***************************************************************************** * Defines some helper methods to find the correct platform. * * @author Markus Bernhardt, Copyright 2016 * @author Bernd Rosstauscher, Copyright 2009 ****************************************************************************/ public class PlatformUtil { public static final String OVERRIDE_HOME_DIR = "com.btr.proxy.user.home"; public enum Platform { WIN, LINUX, MAC_OS, SOLARIS, OTHER } public enum Desktop { WIN, KDE, GNOME, MAC_OS, OTHER } public enum Browser { IE, FIREFOX } /************************************************************************* * Gets the platform we are currently running on. * * @return a platform code. ************************************************************************/ public static Platform getCurrentPlattform() { String osName = System.getProperty("os.name"); Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detecting platform. Name is: {0}", osName); if (osName.toLowerCase().contains("windows")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows platform: {0}", osName); return Platform.WIN; } if (osName.toLowerCase().contains("linux")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Linux platform: {0}", osName); return Platform.LINUX; } if (osName.startsWith("Mac OS")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS platform: {0}", osName); return Platform.MAC_OS; } if (osName.startsWith("SunOS")) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Solaris platform: {0}", osName); return Platform.SOLARIS; } return Platform.OTHER; } /************************************************************************* * Gets the ID for the platform default browser. * * @return a browser ID, null if no supported browser was detected. ************************************************************************/ public static Browser getDefaultBrowser() { // Use better logic to detect default browser? if (getCurrentPlattform() == Platform.WIN) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Browser is InternetExplorer"); return Browser.IE; } else { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Browser Firefox. Fallback?"); return Browser.FIREFOX; } } /************************************************************************* * Gets the desktop that we are running on. * * @return the desktop identifier. ************************************************************************/ public static Desktop getCurrentDesktop() { Platform platf = getCurrentPlattform(); if (platf == Platform.WIN) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows desktop"); return Desktop.WIN; } if (platf == Platform.MAC_OS) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS desktop"); return Desktop.MAC_OS; } if (platf == Platform.LINUX || platf == Platform.SOLARIS || platf == Platform.OTHER) { if (isKDE()) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected KDE desktop"); return Desktop.KDE; } if (isGnome()) { Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Gnome desktop"); return Desktop.GNOME; } } Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop"); return Desktop.OTHER; } /************************************************************************* * Checks if we are currently running under Gnome desktop. * * @return true if it is a Gnome else false. ************************************************************************/ private static boolean isGnome() { return System.getenv("GNOME_DESKTOP_SESSION_ID") != null; } /************************************************************************* * Checks if we are currently running under KDE desktop. * * @return true if it is a KDE else false. ************************************************************************/ private static boolean isKDE() { return System.getenv("KDE_SESSION_VERSION") != null; } /************************************************************************* * Gets the user home directory where normally all the settings are stored. * * @return the path to the home directory. ************************************************************************/ public static String getUserHomeDir() { String result = System.getProperty("user.home"); String override = System.getProperty(OVERRIDE_HOME_DIR); if (override != null && override.trim().length() > 0) { result = override; } return result; } }