| | |
| | | function onSubmit() { |
| | | global $app, $conf; |
| | | |
| | | // Get the parent soa record of the domain |
| | | // Get the parent mail_user record |
| | | $mailuser = $app->db->queryOneRecord("SELECT * FROM mail_user WHERE mailuser_id = '".intval($_REQUEST["mailuser_id"])."' AND ".$app->tform->getAuthSQL('r')); |
| | | |
| | | // Check if Domain belongs to user |
| | | if($mailuser["mailuser_id"] != $_POST["mailuser_id"]) $app->tform->errorMessage .= $app->tform->wordbook["no_mailuser_perm"]; |
| | | |
| | | // Set the server ID of the rr record to the same server ID as the parent record. |
| | | // Set the mailuser_id |
| | | $this->dataRecord["mailuser_id"] = $mailuser["mailuser_id"]; |
| | | |
| | | parent::onSubmit(); |
| | | } |
| | | |
| | | function onAfterInsert() { |
| | | global $app, $conf; |
| | | |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]); |
| | | $rule_content = $mailuser['custom_mailfilter']."\n".$app->db->quote($this->getRule()); |
| | | $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$rule_content'", 'mailuser_id', $this->dataRecord["mailuser_id"]); |
| | | |
| | | } |
| | | |
| | | function onAfterUpdate() { |
| | | global $app, $conf; |
| | | |
| | | $mailuser = $app->db->queryOneRecord("SELECT custom_mailfilter FROM mail_user WHERE mailuser_id = ".$this->dataRecord["mailuser_id"]); |
| | | $skip = false; |
| | | $lines = explode("\n",$mailuser['custom_mailfilter']); |
| | | $out = ''; |
| | | $found = false; |
| | | |
| | | foreach($lines as $line) { |
| | | $line = trim($line); |
| | | if($line == '### BEGIN FILTER_ID:'.$this->id) { |
| | | $skip = true; |
| | | $found = true; |
| | | } |
| | | if($skip == false && $line != '') $out .= $line ."\n"; |
| | | if($line == '### END FILTER_ID:'.$this->id) { |
| | | $out .= $this->getRule(); |
| | | $skip = false; |
| | | } |
| | | } |
| | | |
| | | // We did not found our rule, so we add it now. |
| | | if($found == false) { |
| | | $out .= $this->getRule(); |
| | | } |
| | | |
| | | $out = addslashes($out); |
| | | $app->db->datalogUpdate('mail_user', "custom_mailfilter = '$out'", 'mailuser_id', $this->dataRecord["mailuser_id"]); |
| | | |
| | | } |
| | | |
| | | function getRule() { |
| | | |
| | | $content = ''; |
| | | $content .= '### BEGIN FILTER_ID:'.$this->id."\n"; |
| | | |
| | | if($this->dataRecord["action"] == 'move') { |
| | | |
| | | $content .= " |
| | | `test -e ".'$DEFAULT/'.$this->dataRecord["target"]."` |
| | | if ( ".'$RETURNCODE'." != 0 ) |
| | | { |
| | | `maildirmake -f ".$this->dataRecord["target"].' $DEFAULT'."` |
| | | `chmod -R 0700 ".'$DEFAULT/'.$this->dataRecord["target"]."` |
| | | } |
| | | "; |
| | | } |
| | | |
| | | $content .= "if (/^".$this->dataRecord["source"].":"; |
| | | |
| | | if($this->dataRecord["op"] == 'contains') { |
| | | $content .= ".*".$this->dataRecord["searchterm"]."/:h)\n"; |
| | | } elseif ($this->dataRecord["op"] == 'is') { |
| | | $content .= $this->dataRecord["searchterm"]."$/:h)\n"; |
| | | } elseif ($this->dataRecord["op"] == 'begins') { |
| | | $content .= $this->dataRecord["searchterm"]."/:h)\n"; |
| | | } elseif ($this->dataRecord["op"] == 'ends') { |
| | | $content .= ".*".$this->dataRecord["searchterm"]."$/:h)\n"; |
| | | } |
| | | |
| | | $content .= "{\n"; |
| | | $content .= "exception {\n"; |
| | | |
| | | if($this->dataRecord["action"] == 'move') { |
| | | $content .= 'to $DEFAULT/'.$this->dataRecord["target"]."/\n"; |
| | | } else { |
| | | $content .= "to /dev/null\n"; |
| | | } |
| | | |
| | | $content .= "}\n"; |
| | | $content .= "}\n"; |
| | | |
| | | $content .= '### END FILTER_ID:'.$this->id."\n"; |
| | | |
| | | return $content; |
| | | } |
| | | |
| | | } |
| | | |
| | | $page = new page_action; |