/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2013-2015 ForgeRock AS. */ package org.opends.server.tools.upgrade; import java.io.File; import java.io.FileReader; import java.io.IOException; import org.opends.server.util.StaticUtils; /** * Represents information about the license file. * * NOTE: the license file location must be kept in sync with build.xml and * org.opends.quicksetup.LicenseFile. */ class LicenseFile { private static final String INSTALL_ROOT_SYSTEM_PROPERTY = "INSTALL_ROOT"; /** * The license file name in Legal directory. */ private static final String LICENSE_FILE_NAME = "Forgerock_License.txt"; /** * The Legal folder which contains license file. */ private static final String LEGAL_FOLDER_NAME = "legal-notices"; /** * The accepted license file name. */ private static final String ACCEPTED_LICENSE_FILE_NAME = "licenseAccepted"; /** * Try to find the local instance path from system property or environment. If * both are null, return the provided fallback value. */ private static String getInstallRootPathFromSystem(final String fallBackValue) { final String[] possibleValues = new String[] { System.getProperty(INSTALL_ROOT_SYSTEM_PROPERTY), System.getenv(INSTALL_ROOT_SYSTEM_PROPERTY) }; for (final String value : possibleValues ) { if (value != null) { return value; } } return fallBackValue; } /** Get the directory in which legal files are stored. */ private static String getLegalDirectory() { return getInstallRootPathFromSystem(".") + File.separator + LEGAL_FOLDER_NAME; } /** * Get the directory in which legal files are stored. */ private static String getInstanceLegalDirectory() { final String instanceDirname = UpgradeUtils.getInstancePathFromInstallPath(getInstallRootPathFromSystem(".")); final String instanceLegalDirName = instanceDirname + File.separator + LEGAL_FOLDER_NAME; final File instanceLegalDir = new File(instanceLegalDirName); if (!instanceLegalDir.exists()) { instanceLegalDir.mkdir(); } return instanceLegalDirName; } /** * The File object related to the license file. */ private static File licFile; /** * The license file approval state. */ private static boolean approved; /** * Returns the license file name. */ private static String getName() { return getLegalDirectory() + File.separator + LICENSE_FILE_NAME; } /** * Returns the license file object. */ private static File getFile() { if (licFile == null) { licFile = new File(getName()); } return licFile; } /** * Checks if the license file exists. * * @return true a license file exists in * the Legal directory in the top level installation directory * false otherwise. */ static boolean exists() { return getFile().exists(); } /** * Get the textual contents of the license file. * * @return the textual contents of the license file. */ static String getText() { FileReader reader; try { reader = new FileReader(getFile()); } catch (Exception e) { return ""; } int fileLen = (int) getFile().length(); char[] charArray = new char[fileLen]; try { reader.read(charArray); } catch (IOException ioe) { System.out.println("Could not read license file"); } finally { StaticUtils.close(reader); } return new String(charArray); } /** * Get the license approval status. * * @return true if the license has been accepted by the user * false otherwise. */ static boolean getApproval() { return approved; } /** * Sets the license approval status. * * @param p_approved * the license approval status */ static void setApproval(boolean p_approved) { approved = p_approved; } /** * Create a file which indicates that the license has been approved. */ static void createFileLicenseApproved() { if (getApproval()) { try { new File(getInstanceLegalDirectory(), ACCEPTED_LICENSE_FILE_NAME).createNewFile(); } catch (IOException e) { // do nothing } } } /** * Indicate if the license had already been approved.. * * @return true if the license had already been approved by the * user false otherwise. */ public static boolean isAlreadyApproved() { return new File(getInstanceLegalDirectory(), ACCEPTED_LICENSE_FILE_NAME).exists(); } }