blob: f3d04c44f5fb68ec2fc60c7a3f2ca4dc185be1ee [file] [log] [blame]
<?php // script to deliver any queued mail to users alerting them that their build is ready.
/*
/usr/bin/php -q /home/www-data/emf-build/scripts/sendEmail.php -email codeslave@ca.ibm.com -projectName emf
for a build:
-buildType R
-buildTimestamp 200507070200
for a promote:
-promote true
-branch 2.1.0
-buildID R200507070200
for a test:
-testType [perf|jdk13|jdk14|jdk50]
-testTimestamp 200507071234
*/
?>
<?php
$mailEnabled = 1;
$perfServerDefault = "emftest03.torolab.ibm.com";
$testServerDefault = "emf.torolab.ibm.com";
$buildServerDefault= "emf.torolab.ibm.com";
$promoServerDefault= "download.eclipse.org";
/* ******************************************************************************* */
// shouldn't have to change anything below here.
$date = date('H:i');
$args = getPairs(); //wArr($args); // get cmdline options
$HOSTNAME = array_key_exists("hostname",$args)?$args["hostname"]:0;
$debug = array_key_exists("debug",$args)?$args["debug"]:0;
$email = array_key_exists("email",$args)?$args["email"]:"";
$projectName = array_key_exists("projectName",$args)?$args["projectName"]:"";
$projectPath = array_key_exists("projectPath",$args)?$args["projectPath"]:"";
$promote = array_key_exists("promote",$args)?$args["promote"]:"";
$branch = array_key_exists("branch",$args)?$args["branch"]:"";
$buildType = array_key_exists("buildType",$args)?$args["buildType"]:"";
$buildTimestamp = array_key_exists("buildTimestamp",$args)?$args["buildTimestamp"]:"";
$buildID = array_key_exists("buildID",$args)?$args["buildID"]:"";
$testType = array_key_exists("testType",$args)?$args["testType"]:"";
$testTimestamp = array_key_exists("testTimestamp",$args)?$args["testTimestamp"]:"";
$continuous = array_key_exists("continuous",$args)?$args["continuous"]:"";
$server = $HOSTNAME ? $HOSTNAME : getServerName();
$ID = $buildID?$buildID:$buildType.$buildTimestamp;
$proj = explode("/",$projectPath);
$proj = $proj[sizeof($proj)-1];
$projectPath = str_replace("/".$proj,"",$projectPath);
if ($email) {
/* message */
if ($testTimestamp) {
$subject = ($testType?ucfirst($testType)." ":"")."EMFT $proj Test ".($branch?"$branch / ":"").($ID?"$ID / ":"")."$testTimestamp done [$date]";
if ($continuous) { $subject .= " [$continuous left]"; }
$body = ($server?"http://".$server."/":"http://".($testType=="perf"?$perfServerDefault:$testServerDefault)."/").
"tests/results".($testType?"-".$testType:"").".php?showAllResults=&showAll=&sortBy=date#latest";
} else if ($promote) {
$projectPath = $projectPath ? $projectPath : "technology/".$projectName."/scripts";
$subject = "EMFT $proj Build ".($branch?"$branch / ":"")."$ID is available [$date]";
$body = ($server?"http://".$server."/":"http://".$promoServerDefault."/").
$projectPath."/downloads/index.php?proj=$proj&showAll=&sortBy=date#latest";
} else {
$projectPath = $projectPath ? $projectPath : "technology/".$projectName."/scripts";
$subject = "EMFT $proj Build ".($branch?"$branch / ":"")."$ID done [$date]";
$body = ($server?"http://".$server."/":"http://".$buildServerDefault."/").
$projectPath."/downloads/index.php?proj=$proj&showAll=&sortBy=date#latest";
}
echo "[send] Sending mail from $server ...\n";
$ret = sendMail($subject,$body);
echo $ret;
} else {
echo "[send] Nothing to do! No email found for build ".$ID."\n";
}
if ($debug || $email) {
echo '[send] Mail delivery completed '.date('\a\t h:i:sa')."\n\n";
}
/* ******************************************************************************* */
// methods
function getPairs() { // collect cmdline options in -foo bar -baz foobar into array: $args["foo"]="bar", etc.
ini_set("display_errors","0"); // suppress file not found errors
global $_SERVER;
$argv = $_SERVER["argv"];
$args = array();
if (!is_array($argv) || sizeof($argv)<2) {
echo "[send] No commandline params specified! Exiting...\n";
return array();
} else {
for ($i=1;$i<sizeof($argv);$i+=2) { // skip $i=0, that's the script name
if (array_key_exists($i+1,$argv)) {
$args[substr($argv[$i],1)] = $argv[$i+1]."";
}
}
}
ini_set("display_errors","1"); // and turn 'em back on.
return $args;
}
function sendMail($subject,$body) {
global $debug,$email,$proj,$mailEnabled;
$pref = "[mail] ";
$retString = "";
$sender = "DO-NOT-REPLY@NO-SUCH-ADDRESS";
$senderN = "EMFT ($proj) Build Team";
/* headers */
$headers = "Content-Type: text/plain;\n";
$headers .= "Reply-To: \"$senderN\" <".$sender.">\n";
$headers .= "From: \"$senderN\" <".$sender.">\n";
/* recipient(s) */
$to = $email;
/* and now mail it */
$retString = ($debug?$pref."Sending Email to $to ... \n":"");
if ($debug) {
$retString .= $pref."Subject: $subject\n";
$retString .= $pref."Body: $body\n";
//w($retString);
}
if ($mailEnabled) {
ini_set("sendmail_from",$sender);
$ret = mail($to, $subject, $body, $headers);
$retString .= $pref.($ret?"Success!\n":"Failed!\nCould not send the email\n");
} else {
$retString .= $pref.("Email delivery disabled by script (mailEnabled=false).\n");
}
return $retString."\n";
}
function getServerName() {
global $_SERVER,$SERVER_NAME;
if ($SERVER_NAME) {
return $SERVER_NAME;
} else {
$s = array_key_exists("SSH_CONNECTION",$_SERVER) ? $_SERVER["SSH_CONNECTION"] : "";
if ($s) {
if (false!==strpos($s," ")) { $s = explode(" ",$s); $s = $s[2]; }
if (false!==strpos($s,":")) { $s = explode(":",$s); $s = $s[3]; }
return $s;
}
return "";
}
}
?>