function ParseMailboxDirRsync($pattern) { $backup = new backup_protocols(); $unix = new unix(); $rsync = $unix->find_program("rsync"); $array = $backup->extract_rsync_protocol($pattern); if (!is_array($array)) { writelogs(date('m-d H:i:s') . " " . "rsync protocol error", __FUNCTION__, __FILE__, __LINE__); return false; } if ($array["PASSWORD"] != null) { $tmpstr = $unix->FILE_TEMP(); @file_put_contents($tmpstr, $array["PASSWORD"]); $pwd = " --password-file={$tmpstr}"; } if ($array["USER"] != null) { $user = "******"USER"]}@"; } $pattern_list = "{$rsync} --list-only{$pwd} rsync://{$user}{$array["SERVER"]}/{$array["FOLDER"]}/ --stats --dry-run 2>&1"; if ($GLOBALS["DEBUG"]) { echo "ParseMailboxDirRsync():: Listing files or directories using \"{$pattern_list}\"\n"; } writelogs(date('m-d H:i:s') . " " . "{$pattern_list}", __FUNCTION__, __FILE__, __LINE__); exec($pattern_list, $results); @unlink($tmpstr); unset($array); while (list($num, $line) = each($results)) { if (preg_match("#^d[rwx\\-]+\\s+[0-9]+\\s+[0-9\\/]+\\s+[0-9\\:]+\\s+(.+)#", $line, $re)) { writelogs($re[1], __FUNCTION__, __FILE__, __LINE__); if (trim($re[1]) == '.') { continue; } $array[trim($re[1])] = trim($re[1]); continue; } } return $array; }