A Framework for managing crash reports, bug reports, and messages.
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.
 
 

174 lines
6.1 KiB

<?php
/*
* sendreport.php
* GeckoReporter
*
* Created by Mr. Gecko on 12/28/09.
* Copyright 2010 by Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
*
*/
//Debug
//print_r($_FILES);
//print_r($_POST);
function buildBody($FILES, $BOUNDARY) {
$BODY = "\n\r\n";
$KEYS = array_keys($FILES);
for ($i=0; $i<count($KEYS); $i++) {
$KEY = $KEYS[$i];
$FILE = $_FILES[$KEY]['tmp_name'];
$FILENAME = $_FILES[$KEY]['name'];
$FILETYPE = $_FILES[$KEY]['type'];
$FILESIZE = $_FILES[$KEY]['size'];
$BODY .= "--$BOUNDARY\r\n";
$BODY .= "Content-Disposition: attachment; filename=\"{$FILENAME}\"\r\n";
$BODY .= "Content-Type: {$FILETYPE}; name=\"{$FILENAME}\"\r\n";
$BODY .= "Content-Transfer-Encoding: binary\r\n\r\n";
$FILEPIPE = fopen($FILE, "r");
$BODY .= fread($FILEPIPE, $FILESIZE);
fclose($FILEPIPE);
$BODY .= "\r\n";
}
$BODY .= "--{$BOUNDARY}--";
return $BODY;
}
//Word of warning, IP is for debugging, do not include the IP of your user without the knowledge that your user may not use your application.
//$_POST['IP'] = $_SERVER['HTTP_PC_REMOTE_ADDR']!="" ? $_SERVER['HTTP_PC_REMOTE_ADDR'] : $_SERVER['REMOTE_ADDR'];
$_POST['User_Agent'] = urldecode($_SERVER['HTTP_USER_AGENT']);
if ($_POST['GRType']=="crash") {
unset($_POST['GRType']);
$email = $_POST['GREmail'];
unset($_POST['GREmail']);
$subject = $_POST['GRSubject'];
unset($_POST['GRSubject']);
$userReport = isset($_POST['GRUserReport']) ? trim($_POST['GRUserReport']) : "";
unset($_POST['GRUserReport']);
$boundary = "--Boundary+".rand(0, 100000);
if ($_POST['GRReportAttached']=="NO") {
if (isset($_FILES['reportFile'])) {
$filePipe = fopen($_FILES['reportFile']['tmp_name'], "r");
$reportFileContents = fread($filePipe, $_FILES['reportFile']['size']);
fclose($filePipe);
unset($_FILES['reportFile']);
$_POST['Report'] = "\n\n".$reportFileContents;
}
}
unset($_POST['GRReportAttached']);
if (preg_match("/([\w\.\-]+)(\@[\w\.\-]+)(\.[a-z]{2,4})+/i", $_POST['User_Email_Address'])) {
$fromEmail = "{$_POST['User_Email_Address']}";
} else {
$fromEmail = "\"Mr. Gecko's Media\" <webmaster@mrgeckosmedia.com>";
}
$headers = "From: {$fromEmail}\r\n";
$headers .= "X-Mailer: GeckoReporter/{$_POST['GRVersion']}\r\n";
unset($_POST['GRVersion']);
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary={$boundary}\r\n\r\n";
$headers .= "--$boundary\r\n";
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$KEYS = array_keys($_POST);
sort($KEYS);
for ($i=0; $i<count($KEYS); $i++) {
$KEY = $KEYS[$i];
$NAME = str_replace("_", " ", $KEY);
$headers .= "{$NAME}: {$_POST[$KEY]}\n";
}
if ($userReport!="")
$headers .= "\nThe user was\n$userReport\n";
$headers .= buildBody($_FILES, $boundary);
$sent = mail($email, $subject, "This is a multipart message, your email client needs to support mime 1.0 in order to read this message.", $headers);
echo ($sent ? "Crash Report Was Sent" : "Crash Report Was Not Sent");
} else if ($_POST['GRType']=="bug") {
unset($_POST['GRType']);
$email = $_POST['GREmail'];
unset($_POST['GREmail']);
$subject = $_POST['GRSubject'];
unset($_POST['GRSubject']);
$bug = isset($_POST['GRBug']) ? trim($_POST['GRBug']) : "";
unset($_POST['GRBug']);
$reproduce = isset($_POST['GRReproduce']) ? trim($_POST['GRReproduce']) : "";
unset($_POST['GRReproduce']);
$boundary = "--Boundary+".rand(0, 100000);
if (preg_match("/([\w\.\-]+)(\@[\w\.\-]+)(\.[a-z]{2,4})+/i", $_POST['User_Email_Address'])) {
$fromEmail = "{$_POST['User_Email_Address']}";
} else {
$fromEmail = "\"Mr. Gecko's Media\" <webmaster@mrgeckosmedia.com>";
}
$headers = "From: {$fromEmail}\r\n";
$headers .= "X-Mailer: GeckoReporter/{$_POST['GRVersion']}\r\n";
unset($_POST['GRVersion']);
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary={$boundary}\r\n\r\n";
$headers .= "--$boundary\r\n";
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$KEYS = array_keys($_POST);
sort($KEYS);
for ($i=0; $i<count($KEYS); $i++) {
$KEY = $KEYS[$i];
$NAME = str_replace("_", " ", $KEY);
$headers .= "{$NAME}: {$_POST[$KEY]}\n";
}
if ($bug!="")
$headers .= "\nThe Bug\n$bug\n";
if ($reproduce!="")
$headers .= "\nHow you can reproduce it\n$reproduce\n";
$headers .= buildBody($_FILES, $boundary);
$sent = mail($email, $subject, "This is a multipart message, your email client needs to support mime 1.0 in order to read this message.", $headers);
echo ($sent ? "Bug Report Was Sent" : "Bug Report Was Not Sent");
} else if ($_POST['GRType']=="contact") {
unset($_POST['GRType']);
$email = $_POST['GREmail'];
unset($_POST['GREmail']);
$subject = $_POST['GRSubject'];
unset($_POST['GRSubject']);
$message = isset($_POST['GRMessage']) ? trim($_POST['GRMessage']) : "";
unset($_POST['GRMessage']);
$boundary = "--Boundary+".rand(0, 100000);
if (preg_match("/([\w\.\-]+)(\@[\w\.\-]+)(\.[a-z]{2,4})+/i", $_POST['User_Email_Address'])) {
$fromEmail = "\"{$_POST['User_Name']}\" <{$_POST['User_Email_Address']}>";
} else {
$fromEmail = "\"Mr. Gecko's Media\" <webmaster@mrgeckosmedia.com>";
}
$headers = "From: {$fromEmail}\r\n";
$headers .= "X-Mailer: GeckoReporter/{$_POST['GRVersion']}\r\n";
unset($_POST['GRVersion']);
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary={$boundary}\r\n\r\n";
$headers .= "--$boundary\r\n";
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$KEYS = array_keys($_POST);
sort($KEYS);
for ($i=0; $i<count($KEYS); $i++) {
$KEY = $KEYS[$i];
$NAME = str_replace("_", " ", $KEY);
$headers .= "{$NAME}: {$_POST[$KEY]}\n";
}
if ($message!="")
$headers .= "\nThe message\n$message\n";
$headers .= buildBody($_FILES, $boundary);
$sent = mail($email, $subject, "This is a multipart message, your email client needs to support mime 1.0 in order to read this message.", $headers);
echo ($sent ? "Message Was Sent" : "Message Was Not Sent");
}
?>