diff --git a/defaults/yacy.init b/defaults/yacy.init
index 1398c0697..7a51c6ced 100644
--- a/defaults/yacy.init
+++ b/defaults/yacy.init
@@ -1045,7 +1045,10 @@ content.phpbb3.dumpfile =
# search engine teaser: an about box in search results
# this is only shown, if the about.body is filled
about.headline=Please support YaCy!
-about.body=
If you run a YaCy server, feel free to replace our donation plea with your own support message, use the
Portal Configuration servlet.
+about.body=
If you run a YaCy server, feel free to replace our donation plea with your own support message, use the
Portal Configuration servlet.
+
+donation.iframesource=http://yacy.net/include/donate.html
+donation.iframetarget=env/donate.html
# search heuristics
heuristic.site = false
diff --git a/source/net/yacy/yacy.java b/source/net/yacy/yacy.java
index 900fe5534..ea3e53f14 100644
--- a/source/net/yacy/yacy.java
+++ b/source/net/yacy/yacy.java
@@ -42,6 +42,8 @@ import java.util.concurrent.Semaphore;
import java.util.concurrent.ExecutionException;
import net.yacy.cora.date.GenericFormatter;
+import net.yacy.cora.document.id.DigestURL;
+import net.yacy.cora.federate.yacy.CacheStrategy;
import net.yacy.cora.lod.JenaTripleStore;
import net.yacy.cora.protocol.ClientIdentification;
import net.yacy.cora.protocol.RequestHeader;
@@ -49,6 +51,7 @@ import net.yacy.cora.protocol.TimeoutRequest;
import net.yacy.cora.protocol.http.HTTPClient;
import net.yacy.cora.sorting.Array;
import net.yacy.cora.util.ConcurrentLog;
+import net.yacy.crawler.retrieval.Response;
import net.yacy.data.Translator;
import net.yacy.gui.YaCyApp;
import net.yacy.gui.framework.Browser;
@@ -263,12 +266,26 @@ public final class yacy {
mkdirIfNeseccary(htDocsPath);
//final File htTemplatePath = new File(homePath, sb.getConfig("htTemplatePath","htdocs"));
+ // copy the donate iframe (better to copy this once here instead of doing this in an actual iframe in the search result)
+ final File wwwEnvPath = new File(htDocsPath, "env");
+ mkdirIfNeseccary(wwwEnvPath);
+ final String iframesource = sb.getConfig("donation.iframesource", "");
+ final String iframetarget = sb.getConfig("donation.iframetarget", "");
+ final File iframefile = new File(htDocsPath, iframetarget);
+ if (!iframefile.exists()) new Thread() {
+ public void run() {
+ final ClientIdentification.Agent agent = ClientIdentification.getAgent(ClientIdentification.yacyInternetCrawlerAgentName);
+ Response response;
+ try {
+ response = sb.loader == null ? null : sb.loader.load(sb.loader.request(new DigestURL(iframesource), false, true), CacheStrategy.NOCACHE, Integer.MAX_VALUE, null, agent);
+ if (response != null) FileUtils.copy(response.getContent(), iframefile);
+ } catch (Throwable e) {}
+ }
+ }.start();
+
// create default notifier picture
- //TODO: Use templates instead of copying images ...
- if (!((new File(htDocsPath, "notifier.gif")).exists())) try {
- Files.copy(new File(htRootPath, "env/grafics/empty.gif"),
- new File(htDocsPath, "notifier.gif"));
- } catch (final IOException e) {}
+ File notifierFile = new File(htDocsPath, "notifier.gif");
+ if (!notifierFile.exists()) try {Files.copy(new File(htRootPath, "env/grafics/empty.gif"), notifierFile);} catch (final IOException e) {}
final File htdocsReadme = new File(htDocsPath, "readme.txt");
if (!(htdocsReadme.exists())) try {FileUtils.copy((
@@ -290,7 +307,6 @@ public final class yacy {
final File wwwDefaultPath = new File(htDocsPath, "www");
mkdirIfNeseccary(wwwDefaultPath);
-
final File shareDefaultPath = new File(htDocsPath, "share");
mkdirIfNeseccary(shareDefaultPath);