// Copyright (c) 2005 Frank Meyer // // Last update: $Id$ // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. //---------------------------------------------------------------------------- //print "
"; //print_r($_GET); //print "
"; //print_r($_POST); //print "

"; $PHP_SELF=$_SERVER['PHP_SELF']; $incoming="/var/spool/fax/incoming/"; $outgoing="/var/spool/fax/outgoing/"; $configfile="/var/run/eisfax"; $handle=fopen($configfile, "r"); while ( ! feof($handle)) { $buffer = fgets($handle); if ( substr($buffer, 0, 6) == "EISFAX") { $varname = strtok($buffer, "'"); $value = strtok("'"); if ( strpos($buffer, "''") ) $value=""; $evalzeile= "\$" . $varname . "\"" . $value . "\";"; eval ($evalzeile); } } fclose($handle); if ( $EISFAX_REFRESH == 0 ) $refresh=""; else $refresh=""; if (isset($_POST['mail'])) $mail=$_POST['mail']; else $mail=""; if (isset($_POST['file'])) $file=$_POST['file']; else $file=""; if (isset($_GET['fax'])) $fax=$_GET['fax']; else $fax=""; if (isset($_GET['delinc'])) $delinc=$_GET['delinc']; else $delinc=""; if (isset($_GET['jobdelete'])) $jobdelete=$_GET['jobdelete']; else $jobdelete=""; if (isset($_GET['jobdetails'])) $jobdetails=$_GET['jobdetails']; else $jobdetails=""; if (isset($_GET['download'])) $download=$_GET['download']; else $download=""; if (isset($_GET['jobresume'])) $jobresume=$_GET['jobresume']; else $jobresume=""; if($jobresume != "") { echo ""; echo ""; echo "eisfax-Administration: Nochmal versuchen"; echo ""; echo ""; jobresume($jobresume); } elseif($jobdetails != "") { echo ""; echo ""; echo "eisfax-Administration: Jobdetails"; echo ""; echo ""; jobdetails($jobdetails); } elseif($jobdelete != "") { echo ""; echo ""; echo "eisfax-Administration: Job loeschen"; echo ""; echo ""; jobdelete($jobdelete); } elseif($delinc != "") { echo ""; echo ""; echo "eisfax-Administration: Fax loeschen"; echo ""; echo ""; delinc($delinc); } elseif($mail != "") { echo ""; echo ""; echo "eisfax-Administration: Mailversand"; echo ""; echo ""; forward($mail, $file, $incoming); } elseif ($fax=="") { echo ""; echo ""; if (basename($PHP_SELF) == "eisfax.php") { echo "eisfax - Administration"; echo $refresh; echo ""; echo ""; echo "
"; echo "Empfang   Versand   Empfang + Versand  —  Empfangs-Journal   Versand-Journal"; echo "
"; incoming($incoming); echo "
"; outgoing($outgoing); } elseif (basename($PHP_SELF) == "eisfax-empfang.php") { echo "eisfax - Administration: Faxempfang"; echo $refresh; echo ""; echo ""; echo "
"; echo "Empfang   Versand   Empfang + Versand  —  Empfangs-Journal   Versand-Journal"; echo "
"; incoming($incoming); } elseif (basename($PHP_SELF) == "eisfax-versand.php") { echo "eisfax - Administration: Faxversand"; echo $refresh; echo ""; echo ""; echo "
"; echo "Empfang   Versand   Empfang + Versand  —  Empfangs-Journal   Versand-Journal"; echo "
"; outgoing($outgoing); } } else { show($incoming, $fax, $download); } echo ""; echo ""; function incoming($incoming) { global $PHP_SELF; echo "

eisfax - Faxempfang

"; echo "
"; echo ""; // echo ""; if ($dir = @opendir($incoming)) { $fileArr = array(); while (($file = readdir($dir)) !== false) { if ($file == "." or $file == "..") continue; if (substr($file, strlen($file) - 3, 3) != "pdf") continue; $fName = "$incoming/$file"; $fTime = filemtime($fName); $fileArr[$file] = $fTime; } closedir($dir); arsort($fileArr); // $fileArr=array_reverse($fileArr); // print_r($fileArr); foreach($fileArr as $file => $dummy) { echo "\n"; // // 2003-11-20-21-12-00.4.+49-1212-511323-239.pdf // 0 5 8 1 1 1 // 1 4 7 list($datum, $seiten, $absender) = explode(".", $file); $anz_datum=substr($datum, 8, 2) . "." . substr($datum, 5, 2) . "." . substr($datum, 0, 4); $anz_datum .=" " . substr($datum, 11, 2) . ":" . substr($datum, 14, 2) . ":" . substr($datum, 17, 2); echo ""; } echo " von $absender"; echo "
DatumSeitenAbsender

$anz_datum - $seiten Seite"; if($seiten > 1) echo "n"; if ($seiten == 0) { echo "n"; $ansicht = ''; $speichern = ''; $anhang = ''; } else { $ansicht = "Ansehen "; // $speichern = "Download  oder "; $anhang = "oder per Mailanhang an
"; echo "Löschen  "; //echo "Ansehen  "; echo "$ansicht"; //echo "Download  oder "; // echo "$speichern"; echo "$anhang"; } } echo "
"; } function outgoing($outgoing) { // // Anzeige der ausgehenden Faxe // echo "

eisfax - Faxversand

"; echo "
";
	chdir($outgoing);
	if ($dir = @opendir($outgoing))
	{
		while (($file = readdir($dir)) !== false)
		{
			if (substr($file,0,1) != "F")
				continue;
			if (is_dir($file))
			{	
				if (file_exists($outgoing . $file . "/JOB.suspended"))
				{
					$suspended[] = $file;
					
				} elseif (file_exists($outgoing . $file . "/JOB.done"))
				{
					$done[] = $file;
					
				} elseif (file_exists($outgoing . $file . "/JOB.locked"))
				{
					$locked[] = $file;
					
				} elseif (file_exists($outgoing . $file . "/JOB.error"))
				{
					$fehler[] = $file;
					
				} elseif (file_exists($outgoing . $file . "/JOB"))
				{
					$waiting[] = $file;
				}
			}
		}
		closedir($dir);
		echo "
"; if (isset($suspended)) jobstatus($suspended, ".suspended", "abgebrochen", $outgoing); if (isset($done)) jobstatus($done, ".done", "erledigt", $outgoing); if (isset($waiting)) jobstatus($waiting, "", "wartet auf Bearbeitung", $outgoing); if (isset($fehler)) jobstatus($fehler, ".error", "FEHLER", $outgoing); if (isset($locked)) jobstatus($locked, ".locked", "wird gerade versendet", $outgoing); echo "
"; } echo "
"; } function show($incoming, $fax, $download) { header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=$fax"); if ($download == "1") header("Content-type: application/octet-stream"); $faxdatei=$incoming . $fax; //echo "Faxdatei: $faxdatei
"; $groesse=filesize($faxdatei); //echo "Groesse: $groesse
"; header("Content-Length: $groesse"); $handle=fopen($faxdatei, "r"); //echo "Dateihandle: $handle
"; $faxinhalt=fread($handle, $groesse); echo $faxinhalt; fclose($handle); } function jobstatus($jobarray, $art, $text, $outgoing) { global $PHP_SELF; if (count($jobarray) == 0) return; reset($jobarray); foreach($jobarray as $jobnummer) { $phone = ""; $user = ""; $input = ""; $pages = ""; $empfaenger = ""; $message = ""; echo "
"; echo ""; echo "Faxjob $jobnummer"; $jobhandle = fopen($outgoing . $jobnummer . "/JOB" . $art, "r"); while ( ! feof($jobhandle)) { $buffer = fgets($jobhandle); if (substr($buffer, 0, 6) == "phone ") $phone = substr($buffer, 6, strlen($buffer) - 6); if (substr($buffer, 0, 5) == "user ") $user = substr($buffer, 5, strlen($buffer) - 5); if (substr($buffer, 0, 6) == "input ") $input = substr($buffer, 6, strlen($buffer) - 6); if (substr($buffer, 0, 7) == "pages ") $pages = substr($buffer, 7, strlen($buffer) - 7); if (substr($buffer, 0, 11) == "verbose_to ") $empfaenger = substr($buffer, 11, strlen($buffer) - 11); if (substr($buffer, 0, 7) == "Status ") $message = substr($buffer, 7, strlen($buffer) - 7); } fclose($jobhandle); echo " an $phone - "; if ($art == ".suspended") echo "$text. "; else echo "$text. "; echo ""; echo "Löschen  "; echo "Details"; echo "Benutzer: $userSeiten: " . count(explode(" ",$pages)) . ""; echo ""; echo "Letzter Status: $message"; if ($art == ".suspended") echo "Nochmal versuchen"; // if ($empfaenger != "") // echo "Empfänger:$empfaenger"; // echo "Username:$user"; // echo "Eingabedatei:$input"; // echo "Faxseiten:$pages"; } } function forward($mail, $file, $incoming) { global $PHP_SELF; $subject="Weitergeleitetes Faxdokument"; $boundary = strtoupper(md5(uniqid(time()))); $mail_header = "From: eisfax-admin"; $datei_content = fread(fopen($incoming . $file,"r"),filesize($incoming . $file)); $datei_content = chunk_split(base64_encode($datei_content)); $mail_header .= "\nMIME-Version: 1.0"; $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary"; $mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format"; $mail_header .= "\n--$boundary"; $mail_header .= "\nContent-Type: text/plain"; $mail_header .= "\nContent-Transfer-Encoding: 8bit"; $mail_header .= "\n\nHallo,"; $mail_header .= "\n\nim Anhang dieser Mail finden Sie ein Faxdokument. Es wurde vom Faxadmin an Sie weitergeleitet.\n\n"; $mail_header .= "\n--$boundary"; $mail_header .= "\nContent-Type: application/pdf; name=\"$file\""; $mail_header .= "\nContent-Transfer-Encoding: base64"; $mail_header .= "\nContent-Disposition: attachment; filename=\"$file\""; $mail_header .= "\n\n$datei_content"; $mail_header .= "\n--$boundary--"; if(@mail($mail,$subject,"",$mail_header)) echo "Das Fax wurde an $mail versendet."; else echo "Es ist ein Fehler beim senden der eMail aufgetreten."; echo "
Zurück"; } function delinc($delinc) { global $PHP_SELF, $incoming; if(unlink($incoming . $delinc)) echo "Das Fax wurde gelöscht."; else echo "Es ist ein Fehler beim Löschen des Faxes aufgetreten."; echo "
Zurück"; } function jobdelete($jobdelete) { global $PHP_SELF, $outgoing; passthru("sudo faxrm $jobdelete 2>&1", $message); if ($message == "0") echo "Faxjob $jobdelete wurde gelöscht."; else echo $message; echo "
Zurück"; } function jobresume($jobresume) { global $PHP_SELF, $outgoing; passthru("sudo faxq -R $jobresume 2>&1", $message); if ($message == "0") echo "Faxjob $jobresume wird nochmal versucht."; else echo $message; echo "
Zurück"; } function jobdetails($jobdetails) { global $PHP_SELF, $outgoing; $message=""; echo "
"; echo ""; echo ""; echo ""; if (isset($empfaenger)) echo ""; echo ""; // echo ""; echo ""; if (isset($time)) echo ""; echo ""; echo ""; } ?>
Faxjob $jobdetails"; chdir($outgoing . "/" . $jobdetails); if (file_exists("JOB")) $jobhandle = fopen("JOB", "r"); elseif (file_exists("JOB.done")) $jobhandle = fopen("JOB.done", "r"); elseif (file_exists("JOB.suspended")) $jobhandle = fopen("JOB.suspended", "r"); elseif (file_exists("JOB.locked")) $jobhandle = fopen("JOB.locked", "r"); elseif (file_exists("JOB.error")) $jobhandle = fopen("JOB.error", "r"); while ( ! feof($jobhandle)) { $buffer = fgets($jobhandle); if (substr($buffer, 0, 6) == "phone ") $phone = substr($buffer, 6, strlen($buffer) - 6); if (substr($buffer, 0, 5) == "time ") { $time = substr($buffer, 5, strlen($buffer) - 5); $time = substr($time, 0, 2) . ":" . substr($time, 2, 2); } if (substr($buffer, 0, 5) == "user ") $user = substr($buffer, 5, strlen($buffer) - 5); if (substr($buffer, 0, 6) == "input ") $input = substr($buffer, 6, strlen($buffer) - 6); if (substr($buffer, 0, 7) == "pages ") $pages = substr($buffer, 7, strlen($buffer) - 7); if (substr($buffer, 0, 11) == "verbose_to ") $empfaenger = substr($buffer, 11, strlen($buffer) - 11); if (substr($buffer, 0, 7) == "Status ") $message .= substr($buffer, 7, strlen($buffer) - 7); } fclose($jobhandle); echo " an $phone"; echo "Löschen  "; // echo "Details"; echo "Zurück"; echo "
Empfänger:$empfaenger
Benutzer:$user
Eingabedatei:$input
Faxseiten:$pages
Sendezeit:$time

$message