*) adding possibility to forward received yacy-messages (htroot/yacy/message.java)

via a command-line email program (e.g. sendmail) to a configured email address
   - the configuration dialog is reachable via Settings_p.html#messageForwarding

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@332 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
theli 20 years ago
parent 24d77b892f
commit 9d8c66fb5e

@ -80,7 +80,7 @@ Parsing of the following mime-types was enabled:<br>
<li><font color="#556699">#[enabledMime]#</font></li>
#{/parser}#
</ul>
::
::<!-- 19 -->
Seed Upload method was changed successfully.
#(success)#::<br>You are now a principal peer.#(/success)#
<p>
@ -88,7 +88,7 @@ Seed Upload method was changed successfully.
<tr><td>Seed Upload Method:</td><td><font color="#556699">#[seedUploadMethod]#</font></td></tr>
<tr><td>Seed File URL:</td><td><a href="#[seedURL]#"><font color="#556699">#[seedURL]#</font></a></td></tr>
</table>
::
::<!-- 20 -->
<p><b>Your proxy networking settings have been changed.</b></p>
<table>
<tr>
@ -100,6 +100,22 @@ Seed Upload method was changed successfully.
<td><font color="#556699"><b>#[connectionKeepAliveSupport]#</b></font></td>
</tr>
</table>
::<!-- 21: message forwarding -->
<p><b>Your message forwarding settings have been changed.</b></p>
<table>
<tr>
<td>Message Forwarding Support is:</td>
<td><font color="#556699"><b>#[msgForwardingEnabled]#</b></font></td>
</tr>
<tr>
<td>Message Forwarding Command:</td>
<td><font color="#556699"><b>#[msgForwardingCmd]#</b></font></td>
</tr>
<tr>
<td>Recipient Address:</td>
<td><font color="#556699"><b>#[msgForwardingTo]#</b></font></td>
</tr>
</table>
#(/info)#
</p>
<p>You can now go back to the <a href="Settings_p.html">Settings</a> page if you want to make more changes.</p>

@ -412,6 +412,25 @@ public class SettingsAck_p {
}
}
/*
* Message forwarding configuration
*/
if (post.containsKey("msgForwarding")) {
env.setConfig("msgForwardingEnabled",post.containsKey("msgForwardingEnabled")?"true":"false");
env.setConfig("msgForwardingCmd",(String) post.get("msgForwardingCmd"));
env.setConfig("msgForwardingTo",(String) post.get("msgForwardingTo"));
prop.put("info", 21);
prop.put("info_msgForwardingEnabled", post.containsKey("msgForwardingEnabled") ? "on" : "off");
prop.put("info_msgForwardingCmd", (String) post.get("msgForwardingCmd"));
prop.put("info_msgForwardingTo", (String) post.get("msgForwardingTo"));
return prop;
}
/*
* Parser configuration
*/
if (post.containsKey("parserSettings")) {
plasmaSwitchboard sb = (plasmaSwitchboard)env;
post.remove("parserSettings");

@ -30,11 +30,11 @@ delete the file 'DATA/SETTINGS/httpProxy.conf' in the YaCy application root fold
</tr>
<tr>
<td><img src="env/grafics/down.gif" alt="down"><a href="#http">HTTP Networking</a></td>
<td><img src="env/grafics/down.gif" alt="down"><a href="#parser">Content Parser Settings</a></td>
<td><img src="env/grafics/down.gif" alt="down"><a href="#messageForwarding">Message Forwarding</a></td>
</tr>
<tr>
<td><img src="env/grafics/down.gif" alt="down"><a href="#proxy">Remote Proxy (optional)</a></td>
<td>&nbsp;</td>
<td><img src="env/grafics/down.gif" alt="down"><a href="#parser">Content Parser Settings</a></td>
</tr>
</table>
@ -265,6 +265,37 @@ but only if there had been changes to the seed-list.
#{/seedUploadMethods}#
</fieldset>
<br>
<p><form action="SettingsAck_p.html" method="post" enctype="multipart/form-data">
<fieldset><legend id="messageForwarding">Message Forwarding</legend>
<p>With this settings you can activate or deactivate forwarding of yacy-messages via email.
<p>
<table border="0" cellspacing="5">
<tr valign="top">
<td>Enable message forwarding:</td>
<td><input type="checkbox" name="msgForwardingEnabled" align="top" #(msgForwardingEnabled)#::checked#(/msgForwardingEnabled)#></td>
<td><i>Enabling/Disabling message forwarding via email.</td>
</tr>
<tr valign="top">
<td>Forwarding Command:</td>
<td><input name="msgForwardingCmd" type="text" size="32" maxlength="128" value="#[msgForwardingCmd]#"></td>
<td><i>The command-line program that should be used to forward the message.<br>e.g.:</i>&nbsp;<code>/usr/sbin/sendmail -t</code></td>
</tr>
<tr valign="top">
<td>Forwarding To:</td>
<td><input name="msgForwardingTo" type="text" size="32" maxlength="128" value="#[msgForwardingTo]#"></td>
<td><i>The recipient email-address.<br> e.g.:</i>&nbsp;<code>root@localhost</code></td>
</tr>
<tr valign="top">
<td></td>
<td colspan="2"><input type="submit" name="msgForwarding" value="submit">&nbsp;<i>Changes will take effect immediately.</i></td>
</tr>
</table>
</fieldset>
</form><br>
<br>
<p><form action="SettingsAck_p.html" method="post" enctype="multipart/form-data">
<fieldset><legend id="parser">Content Parser Settings</legend>

@ -188,6 +188,12 @@ public final class Settings_p {
// general settings
prop.put("seedURL", env.getConfig("seedURL", ""));
/*
* Message forwarding configuration
*/
prop.put("msgForwardingEnabled",env.getConfig("msgForwardingEnabled","false").equals("true")? 1 : 0);
prop.put("msgForwardingCmd",env.getConfig("msgForwardingCmd", ""));
prop.put("msgForwardingTo",env.getConfig("msgForwardingTo", ""));
/*
* Parser Configuration

@ -46,9 +46,11 @@
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import de.anomic.data.messageBoard;
import de.anomic.http.httpHeader;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverFileUtils;
@ -57,6 +59,7 @@ import de.anomic.server.serverSwitch;
import de.anomic.tools.crypt;
import de.anomic.yacy.yacyCore;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
public class message {
@ -121,12 +124,15 @@ public class message {
prop.put("response", "Thank you!");
// save message
switchboard.messageDB.write(switchboard.messageDB.newEntry(
messageBoard.entry msgEntry = null;
switchboard.messageDB.write(msgEntry = switchboard.messageDB.newEntry(
"remote",
otherSeed.get("Name", "anonymous"), otherSeed.hash,
yacyCore.seedDB.mySeed.getName(), yacyCore.seedDB.mySeed.hash,
subject, message.getBytes()));
messageForwardingViaEmail(env,msgEntry);
// finally write notification
File notifierSource = new File(switchboard.getRootPath(), switchboard.getConfig("htRootPath","htroot") + "/env/grafics/notifierActive.gif");
File notifierDest = new File(switchboard.getRootPath(), switchboard.getConfig("htRootPath","htroot") + "/env/grafics/notifier.gif");
@ -141,6 +147,63 @@ public class message {
// return rewrite properties
return prop;
}
/*
* To: #[to]#
From: #[from]#
Subject: #[subject]#
Date: #[date]#
#[message]#
*/
private static void messageForwardingViaEmail(serverSwitch env, messageBoard.entry msgEntry) {
try {
if (!Boolean.valueOf(env.getConfig("msgForwardingEnabled","false")).booleanValue()) return;
// getting the sendmail configuration
String sendMailStr = env.getConfig("msgForwardingCmd","/usr/bin/sendmail -t");
String[] sendMail = sendMailStr.trim().split(" ");
// getting the recipient address
String sendMailTo = env.getConfig("msgForwardingTo","root@localhost").trim();
// building the message text
StringBuffer emailTxt = new StringBuffer();
emailTxt.append("To: ")
.append(sendMailTo)
.append("\nFrom: ")
.append("yacy@")
.append(yacyCore.seedDB.mySeed.getName())
.append("\nSubject: [YaCy] ")
.append(msgEntry.subject())
.append("\nDate: ")
.append(msgEntry.date())
.append("\n")
.append("\nMessage from: ")
.append(msgEntry.author())
.append("/")
.append(msgEntry.authorHash())
.append("\nMessage to: ")
.append(msgEntry.recipient())
.append("/")
.append(msgEntry.recipientHash())
.append("\nCategory: ")
.append(msgEntry.category())
.append("\n===================================================================\n")
.append(new String(msgEntry.message()));
Process process=Runtime.getRuntime().exec(sendMail);
PrintWriter email = new PrintWriter(process.getOutputStream());
email.print(emailTxt.toString());
email.close();
} catch (Exception e) {
yacyCore.log.logWarning("message: message forwarding via email failed. ",e);
}
}
/*
on 83
DEBUG: message post values = {youare=Ty2F86ekSWM5, key=pPQSZaXD, iam=WSjicAx1hRio, process=permission}

@ -517,9 +517,14 @@ public final class httpd implements serverHandler {
this.log.logInfo("Interruption detected");
} else {
String errorMsg = e.getMessage();
if ((errorMsg != null) && (errorMsg.startsWith("Broken pipe") || errorMsg.startsWith("Connection reset"))) {
if (errorMsg != null) {
if (errorMsg.startsWith("Socket closed")) {
this.log.logInfo("httpd shutdown detected ...");
}
else if ((errorMsg.startsWith("Broken pipe") || errorMsg.startsWith("Connection reset"))) {
// client closed the connection, so we just end silently
this.log.logInfo("Client unexpectedly closed connection");
}
} else {
this.log.logError("Unexpected Error. " + e.getClass().getName() + ": " + e.getMessage(),e);
}

@ -489,3 +489,9 @@ portForwardingPort=
portForwardingUser=
portForwardingPwd=
# Specifies if yacy should forward received messages via
# email to the configured email address
msgForwardingEnabled=false
msgForwardingCmd=/usr/sbin/sendmail -t
msgForwardingTo=root@localhost

Loading…
Cancel
Save