コード例 #1
0
ファイル: viewpart.php プロジェクト: rafaelbsd/1.2.0
 $message_id = sanitizeInput($_GET['id']);
 // See if message is local
 dbconn();
 // required db link for mysql_real_escape_string
 $message_data = mysql_fetch_object(dbquery("SELECT hostname, DATE_FORMAT(date,'%Y%m%d') AS date FROM maillog WHERE id='" . mysql_real_escape_string($message_id) . "' AND " . $_SESSION["global_filter"]));
 if (!$message_data) {
     die("Message '" . $message_id . "' not found\n");
 }
 if (!is_local($message_data->hostname) || RPC_ONLY) {
     // Host is remote - use XML-RPC
     //$client = new xmlrpc_client(constant('RPC_RELATIVE_PATH').'/rpcserver.php', $host, 80);
     $input = new xmlrpcval($message_id);
     $parameters = array($input);
     $msg = new xmlrpcmsg('return_quarantined_file', $parameters);
     //$rsp = $client->send($msg);
     $rsp = xmlrpc_wrapper($message_data->hostname, $msg);
     if ($rsp->faultcode() == 0) {
         $response = php_xmlrpc_decode($rsp->value());
     } else {
         die("Error: " . $rsp->faultstring());
     }
     $file = base64_decode($response);
 } else {
     //build filename path
     $quarantine_dir = get_conf_var('QuarantineDir');
     $filename = '';
     switch (true) {
         case file_exists($quarantine_dir . '/' . $message_data->date . '/nonspam/' . $message_id):
             $filename = $message_data->date . '/nonspam/' . $message_id;
             break;
         case file_exists($quarantine_dir . '/' . $message_data->date . '/spam/' . $message_id):
コード例 #2
0
ファイル: functions.php プロジェクト: thctlo/1.2.0
/**
 * @param $list
 * @param $num
 * @param bool|false $rpc_only
 * @return string
 */
function quarantine_delete($list, $num, $rpc_only = false)
{
    if (!is_array($list) || !isset($list[0]['msgid'])) {
        return "Invalid argument";
    } else {
        $new = quarantine_list_items($list[0]['msgid']);
        $list =& $new;
    }
    if (!$rpc_only && is_local($list[0]['host'])) {
        foreach ($num as $key => $val) {
            if (@unlink($list[$val]['path'])) {
                $status[] = "Delete: deleted file " . $list[$val]['path'];
                dbquery("UPDATE maillog SET quarantined=NULL WHERE id='" . $list[$val]['msgid'] . "'");
                audit_log('Deleted file from quarantine: ' . $list[$val]['path']);
            } else {
                $status[] = "Delete: error deleting file " . $list[$val]['path'];
                global $error;
                $error = true;
            }
        }
        return join("\n", $status);
    } else {
        // Call by RPC
        debug("Calling quarantine_delete on " . $list[0]['host'] . " by XML-RPC");
        //$client = new xmlrpc_client(constant('RPC_RELATIVE_PATH').'/rpcserver.php',$list[0]['host'],80);
        // Convert input parameters
        foreach ($list as $list_array) {
            foreach ($list_array as $key => $val) {
                $list_struct[$key] = new xmlrpcval($val);
            }
            $list_output[] = new xmlrpcval($list_struct, 'struct');
        }
        foreach ($num as $key => $val) {
            $num_output[$key] = new xmlrpcval($val);
        }
        // Build input parameters
        $param1 = new xmlrpcval($list_output, 'array');
        $param2 = new xmlrpcval($num_output, 'array');
        $parameters = array($param1, $param2);
        $msg = new xmlrpcmsg('quarantine_delete', $parameters);
        $rsp = xmlrpc_wrapper($list[0]['host'], $msg);
        //$client->send($msg);
        if ($rsp->faultcode() == 0) {
            $response = php_xmlrpc_decode($rsp->value());
        } else {
            $response = "XML-RPC Error: " . $rsp->faultstring();
        }
        return $response . " (RPC)";
    }
}