public function get_voicemail_report() {
$number = $_POST["number"];
# FIXME Get voicemail path from configuration file
$dir = "/var/spool/asterisk/voicemail/default";
$numbers = array_diff(scandir($dir,1), array('..', '.'));
if (isset($number) and in_array($number, $numbers)) {
$numbers = array($number);
}
foreach ( $numbers as $key => $value ) {
if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) {
$dir_input = $dir . DIRECTORY_SEPARATOR . $value . DIRECTORY_SEPARATOR . "INBOX";
$files = array_diff(scandir($dir_input,1), array('..', '.'));
$filelist = array();
foreach ( $files as $key2 => $value2 ) {
#$result[$value] = array();
if (is_file($dir_input . DIRECTORY_SEPARATOR . $value2)) {
$filename = $dir_input . DIRECTORY_SEPARATOR . $value2;
$fileparts = pathinfo($filename);
if ($fileparts['extension'] == 'wav') {
$metadata = array();
$metadata_file = $dir_input . DIRECTORY_SEPARATOR . $fileparts['filename'] . ".txt";
if (is_file($metadata_file)) {
$metadata = parse_ini_file($metadata_file, true, INI_SCANNER_RAW);
}
array_push($filelist, array('file' => $value2, 'ctime' => date("Y-m-d H:i:s", filectime($filename)), 'metadata' => $metadata));
}
}
}
$result[$value] = $filelist;
}
}
header('Content-Type: application/json');
echo json_encode($result);
}
public function get_voicemail_file() {
$number = $_POST["number"];
$filename = $_POST["filename"];
# FIXME Get voicemail path from configuration file
$directory = "/var/spool/asterisk/voicemail/default";
$file = realpath($directory . DIRECTORY_SEPARATOR . $number . DIRECTORY_SEPARATOR . "INBOX" . DIRECTORY_SEPARATOR . $filename);
if(strpos($file, $directory) == 0 && strpos($file, $directory) !== false && file_exists($file) && is_file($file)){
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Content-Length: " . filesize($file));
header("Content-Type: application/octet-stream;");
readfile($file);
} else {
header("HTTP/1.0 404 Not Found");
header("Content-Type: application/json");
echo '{"status": "File not found", "code": 404}';
}
}