com.liferay.portal.util.RobotsUtil Maven / Gradle / Ivy
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.util;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.LayoutSet;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import java.io.IOException;
import java.util.TreeMap;
/**
* @author David Truong
* @author Jesse Rao
*/
public class RobotsUtil {
public static String getRobots(LayoutSet layoutSet, boolean secure)
throws PortalException {
if (layoutSet == null) {
try {
return com.liferay.petra.string.StringUtil.read(
RobotsUtil.class.getClassLoader(),
PropsValues.ROBOTS_TXT_WITHOUT_SITEMAP);
}
catch (IOException ioException) {
_log.error(
"Unable to read the content for " +
PropsValues.ROBOTS_TXT_WITHOUT_SITEMAP,
ioException);
}
}
int portalServerPort = PortalUtil.getPortalServerPort(secure);
TreeMap virtualHostnames =
PortalUtil.getVirtualHostnames(layoutSet);
String virtualHostname = StringPool.BLANK;
if (!virtualHostnames.isEmpty()) {
virtualHostname = virtualHostnames.firstKey();
}
String robotsTxt = null;
try {
robotsTxt = GetterUtil.getString(
layoutSet.getSettingsProperty(
layoutSet.isPrivateLayout() + "-robots.txt"),
StringUtil.read(
RobotsUtil.class.getClassLoader(),
PropsValues.ROBOTS_TXT_WITH_SITEMAP));
}
catch (IOException ioException) {
_log.error(
"Unable to read the content for " +
PropsValues.ROBOTS_TXT_WITH_SITEMAP,
ioException);
}
return _replaceWildcards(
robotsTxt, virtualHostname, secure, portalServerPort);
}
private static String _replaceWildcards(
String robotsTxt, String virtualHostname, boolean secure, int port) {
if (Validator.isNotNull(virtualHostname)) {
robotsTxt = StringUtil.replace(
robotsTxt, "[$HOST$]", virtualHostname);
}
else if (_log.isWarnEnabled()) {
_log.warn(
"Placeholder [$HOST$] could not be replaced with the actual " +
"host");
}
robotsTxt = StringUtil.replace(
robotsTxt, "[$PORT$]", String.valueOf(port));
if (secure) {
return StringUtil.replace(robotsTxt, "[$PROTOCOL$]", "https");
}
return StringUtil.replace(robotsTxt, "[$PROTOCOL$]", "http");
}
private static final Log _log = LogFactoryUtil.getLog(RobotsUtil.class);
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy