From 0dfa8b62e22fcc5927cd8782d428b155b66ffdec Mon Sep 17 00:00:00 2001 From: theli Date: Tue, 30 Aug 2005 13:41:47 +0000 Subject: [PATCH] *) Changing Proxy-Useragent string according to thread http://www.yacy-forum.de/viewtopic.php?p=8183#8183 A typical useragent string now e.g. looks like: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10; YaCy 0.401/00602; yacy.net) Gecko/20050716 Firefox/1.0.6 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@607 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/http/httpdProxyHandler.java | 32 +++++++++++++++++--- source/yacy.java | 1 + 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/source/de/anomic/http/httpdProxyHandler.java b/source/de/anomic/http/httpdProxyHandler.java index e70abc361..00bc1457b 100644 --- a/source/de/anomic/http/httpdProxyHandler.java +++ b/source/de/anomic/http/httpdProxyHandler.java @@ -116,7 +116,7 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt private static htmlFilterTransformer transformer = null; - public static final String userAgent = "yacy (" + httpc.systemOST +") yacy.net"; + public static final String userAgent = "yacy (" + httpc.systemOST +") yacy.net"; private File htRootPath = null; private static boolean doAccessLogging = false; @@ -179,6 +179,11 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt */ private final StringBuffer logMessage = new StringBuffer(); + /** + * Reusable {@link StringBuffer} to generate the useragent string + */ + private final StringBuffer userAgentStr = new StringBuffer(); + // class methods public httpdProxyHandler(serverSwitch sb) { @@ -351,7 +356,7 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt // set another userAgent, if not yellowlisted if ((yellowList != null) && (!(yellowList.contains(domain(hostlow))))) { // change the User-Agent - requestHeader.put(httpHeader.USER_AGENT, userAgent); + requestHeader.put(httpHeader.USER_AGENT, generateUserAgent(requestHeader)); } // decide wether to use a cache entry or connect to the network @@ -852,7 +857,7 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt // set another userAgent, if not yellowlisted if (!(yellowList.contains(domain(hostlow)))) { // change the User-Agent - requestHeader.put(httpHeader.USER_AGENT, userAgent); + requestHeader.put(httpHeader.USER_AGENT, generateUserAgent(requestHeader)); } // resolve yacy and yacyh domains @@ -930,7 +935,7 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt // set another userAgent, if not yellowlisted if (!(yellowList.contains(domain(host).toLowerCase()))) { // change the User-Agent - requestHeader.put(httpHeader.USER_AGENT, userAgent); + requestHeader.put(httpHeader.USER_AGENT, generateUserAgent(requestHeader)); } // resolve yacy and yacyh domains @@ -1169,6 +1174,25 @@ public final class httpdProxyHandler extends httpdAbstractHandler implements htt out.flush(); } + private String generateUserAgent(httpHeader requestHeaders) { + this.userAgentStr.setLength(0); + + String browserUserAgent = (String) requestHeaders.get(httpHeader.USER_AGENT, userAgent); + int pos = browserUserAgent.lastIndexOf(')'); + if (pos >= 0) { + this.userAgentStr + .append(browserUserAgent.substring(0,pos)) + .append("; YaCy ") + .append(switchboard.getConfig("vString","0.1")) + .append("; yacy.net") + .append(browserUserAgent.substring(pos)); + } else { + this.userAgentStr.append(browserUserAgent); + } + + return this.userAgentStr.toString(); + } + /** * This function is used to generate a logging message according to the * squid logging format.

diff --git a/source/yacy.java b/source/yacy.java index 6476564d9..c6dff22ac 100644 --- a/source/yacy.java +++ b/source/yacy.java @@ -236,6 +236,7 @@ public final class yacy { } sb.setConfig("version", Float.toString(version)); + sb.setConfig("vString", combinedVersionString2PrettyString(Float.toString(version))); sb.setConfig("vdate", vDATE); sb.setConfig("applicationRoot", homePath); sb.setConfig("startupTime", Long.toString(startup));