You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.7 KiB
80 lines
1.7 KiB
#!/usr/bin/php -f
|
|
<?php
|
|
|
|
//error_reporting(0);
|
|
//ini_set('display_errors',0);
|
|
require_once(__DIR__ . '/../config.php');
|
|
$tmp = explode('@',$_ENV['RECIPIENT']);
|
|
$address = $tmp[0];
|
|
|
|
// BOUNCE EMAILS TO NOREPLY
|
|
if ($_ENV['RECIPIENT'] == $CFG->noreplyaddress) {
|
|
$user = new stdClass();
|
|
$user->email = $_ENV['SENDER'];
|
|
|
|
if (!validate_email($user->email)) {
|
|
die();
|
|
}
|
|
|
|
$site = get_site();
|
|
$subject = get_string('noreplybouncesubject','moodle',format_string($site->fullname));
|
|
$body = get_string('noreplybouncemessage','moodle',format_string($site->fullname))."\n\n";
|
|
|
|
$fd = fopen('php://stdin','r');
|
|
if ($fd) {
|
|
while(!feof($fd)) {
|
|
$body .= fgets($fd);
|
|
}
|
|
fclose($fd);
|
|
}
|
|
|
|
$user->id = 0; // to prevent anything annoying happening
|
|
|
|
$from->firstname = null;
|
|
$from->lastname = null;
|
|
$from->email = '<>';
|
|
$from->maildisplay = true;
|
|
|
|
email_to_user($user,$from,$subject,$body);
|
|
die ();
|
|
}
|
|
/// ALL OTHER PROCESSING
|
|
// we need to split up the address
|
|
$prefix = substr($address,0,4);
|
|
$mod = substr($address,4,2);
|
|
$modargs = substr($address,6,-16);
|
|
$hash = substr($address,-16);
|
|
|
|
if (substr(md5($prefix.$mod.$modargs.$CFG->siteidentifier),0,16) != $hash) {
|
|
die("HASH DIDN'T MATCH!\n");
|
|
}
|
|
list(,$modid) = unpack('C',base64_decode($mod.'=='));
|
|
|
|
if ($modid == '0') { // special
|
|
$modname = 'moodle';
|
|
}
|
|
else {
|
|
$modname = $DB->get_field("modules", "name", array("id"=>$modid));
|
|
include_once('mod/'.$modname.'/lib.php');
|
|
}
|
|
$function = $modname.'_process_email';
|
|
|
|
if (!function_exists($function)) {
|
|
die();
|
|
}
|
|
$fd = fopen('php://stdin','r');
|
|
if (!$fd) {
|
|
exit();
|
|
}
|
|
|
|
while(!feof($fd)) {
|
|
$body .= fgets($fd);
|
|
}
|
|
|
|
$function($modargs,$body);
|
|
|
|
fclose($fd);
|
|
|
|
|
|
|
|
|
|
|