| | |
| | | function mail_user_filter_edit($event_name, $page_form) { |
| | | global $app, $conf; |
| | | |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$page_form->dataRecord["mailuser_id"]); |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ?", $page_form->dataRecord["mailuser_id"]); |
| | | $skip = false; |
| | | $lines = explode("\n", $mailuser['custom_mailfilter']); |
| | | $out = ''; |
| | |
| | | $out = $new_rule . $out; |
| | | } |
| | | |
| | | $out = $app->db->quote($out); |
| | | $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $page_form->dataRecord["mailuser_id"]); |
| | | $app->db->datalogUpdate('mail_user', array("custom_mailfilter" => $out), 'mailuser_id', $page_form->dataRecord["mailuser_id"]); |
| | | |
| | | |
| | | } |
| | |
| | | function mail_user_filter_del($event_name, $page_form) { |
| | | global $app, $conf; |
| | | |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$page_form->dataRecord["mailuser_id"]); |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ?", $page_form->dataRecord["mailuser_id"]); |
| | | $skip = false; |
| | | $lines = explode("\n", $mailuser['custom_mailfilter']); |
| | | $out = ''; |
| | |
| | | } |
| | | } |
| | | |
| | | $out = $app->db->quote($out); |
| | | $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $page_form->dataRecord["mailuser_id"]); |
| | | $app->db->datalogUpdate('mail_user', array("custom_mailfilter" => $out), 'mailuser_id', $page_form->dataRecord["mailuser_id"]); |
| | | } |
| | | |
| | | |
| | |
| | | global $app, $conf; |
| | | |
| | | $app->uses("getconf"); |
| | | $mailuser_rec = $app->db->queryOneRecord("SELECT server_id FROM mail_user WHERE mailuser_id = ".$app->functions->intval($page_form->dataRecord["mailuser_id"])); |
| | | $mailuser_rec = $app->db->queryOneRecord("SELECT server_id FROM mail_user WHERE mailuser_id = ?", $page_form->dataRecord["mailuser_id"]); |
| | | $mail_config = $app->getconf->get_server_config($app->functions->intval($mailuser_rec["server_id"]), 'mail'); |
| | | |
| | | if($mail_config['mail_filter_syntax'] == 'sieve') { |
| | |
| | | $content .= '### BEGIN FILTER_ID:'.$page_form->id."\n"; |
| | | |
| | | //$content .= 'require ["fileinto", "regex", "vacation"];'."\n"; |
| | | |
| | | if($page_form->dataRecord["op"] == 'domain') { |
| | | $content .= 'if address :domain :is "'.strtolower($page_form->dataRecord["source"]).'" "'.$page_form->dataRecord["searchterm"].'" {'."\n"; |
| | | } elseif ($page_form->dataRecord["op"] == 'localpart') { |
| | | $content .= 'if address :localpart :is "'.strtolower($page_form->dataRecord["source"]).'" "'.$page_form->dataRecord["searchterm"].'" {'."\n"; |
| | | } elseif ($page_form->dataRecord["source"] == 'Size') { |
| | | if(substr(trim($page_form->dataRecord["searchterm"]),-1) == 'k' || substr(trim($page_form->dataRecord["searchterm"]),-1) == 'K') { |
| | | $unit = 'k'; |
| | | } else { |
| | | $unit = 'm'; |
| | | } |
| | | $content .= 'if size :over '.intval($page_form->dataRecord["searchterm"]).$unit.' {'."\n"; |
| | | } else { |
| | | |
| | | if($page_form->dataRecord["source"] == 'Header') { |
| | | $parts = explode(':',trim($page_form->dataRecord["searchterm"])); |
| | | $page_form->dataRecord["source"] = trim($parts[0]); |
| | | unset($parts[0]); |
| | | $page_form->dataRecord["searchterm"] = trim(implode(':',$parts)); |
| | | unset($parts); |
| | | } |
| | | |
| | | $content .= 'if header :regex ["'.strtolower($page_form->dataRecord["source"]).'"] ["'; |
| | | $content .= 'if header :regex ["'.strtolower($page_form->dataRecord["source"]).'"] ["'; |
| | | |
| | | $searchterm = preg_quote($page_form->dataRecord["searchterm"]); |
| | | $searchterm = str_replace( |
| | | array( |
| | | '"', |
| | | '\\[', |
| | | '\\]' |
| | | ), |
| | | array( |
| | | '\\"', |
| | | '\\\\[', |
| | | '\\\\]' |
| | | ), $searchterm); |
| | | $searchterm = preg_quote($page_form->dataRecord["searchterm"]); |
| | | $searchterm = str_replace( |
| | | array( |
| | | '"', |
| | | '\\[', |
| | | '\\]' |
| | | ), |
| | | array( |
| | | '\\"', |
| | | '\\\\[', |
| | | '\\\\]' |
| | | ), $searchterm); |
| | | |
| | | if($page_form->dataRecord["op"] == 'contains') { |
| | | $content .= ".*".$searchterm; |
| | | } elseif ($page_form->dataRecord["op"] == 'is') { |
| | | $content .= "^".$searchterm."$"; |
| | | } elseif ($page_form->dataRecord["op"] == 'begins') { |
| | | $content .= "^".$searchterm.".*"; |
| | | } elseif ($page_form->dataRecord["op"] == 'ends') { |
| | | $content .= ".*".$searchterm."$"; |
| | | if($page_form->dataRecord["op"] == 'contains') { |
| | | $content .= ".*".$searchterm; |
| | | } elseif ($page_form->dataRecord["op"] == 'is') { |
| | | $content .= "^".$searchterm."$"; |
| | | } elseif ($page_form->dataRecord["op"] == 'begins') { |
| | | $content .= " ".$searchterm.""; |
| | | } elseif ($page_form->dataRecord["op"] == 'ends') { |
| | | $content .= ".*".$searchterm."$"; |
| | | } |
| | | |
| | | $content .= '"] {'."\n"; |
| | | } |
| | | |
| | | $content .= '"] {'."\n"; |
| | | |
| | | if($page_form->dataRecord["action"] == 'move') { |
| | | $content .= ' fileinto "'.$page_form->dataRecord["target"].'";' . "\n"; |
| | | $content .= ' fileinto "'.$page_form->dataRecord["target"].'";' . "\n stop;\n"; |
| | | } elseif ($page_form->dataRecord["action"] == 'keep') { |
| | | $content .= " keep;\n"; |
| | | } elseif ($page_form->dataRecord["action"] == 'stop') { |
| | | $content .= " stop;\n"; |
| | | } elseif ($page_form->dataRecord["action"] == 'reject') { |
| | | $content .= ' reject "'.$page_form->dataRecord["target"].'"; stop;\n\n'; |
| | | } else { |
| | | $content .= " discard;\n"; |
| | | $content .= " discard;\n stop;\n"; |
| | | } |
| | | |
| | | $content .= " stop;\n}\n"; |
| | | $content .= "}\n"; |
| | | |
| | | $content .= '### END FILTER_ID:'.$page_form->id."\n"; |
| | | |