[
] [] [-m ]\n"; $head .= "-----------------------------------------------\n"; $head .= "Parameters:\n\n"; $commands = array( 'task' => "\t\n" . "\t\tAvailable values:\n\n". "\t\t".sprintf("%-20s %s", "view: ", "View an existing alias.")."\n". "\t\t".sprintf("%-20s %s", "add: ", "Adds an alias.")."\n". "\t\t".sprintf("%-20s %s", "update: ", "Updates an alias.")."\n". "\t\t".sprintf("%-20s %s", "delete: ", "Deletes an alias")."\n", 'address' => "\t[
]\n" . "\t\tA address of recipient.\n", ); $this->out($head); if (!isset($this->args[1])) { foreach ($commands as $cmd) { $this->out("{$cmd}\n\n"); } } elseif (isset($commands[low($this->args[1])])) { $this->out($commands[low($this->args[1])] . "\n\n"); } else { $this->out("Command '" . $this->args[1] . "' not found"); } } } class AddTask extends Shell { /** * Execution method always used for tasks * * @access public */ function execute() { if (empty($this->args)) { $this->__interactive(); } if (!empty($this->args[0])) { $this->__handle($this->args[0], $this->args[1]); } } /** * Interactive * * @access private */ function __interactive() { while(0==0) { $question = "Enter address:"; $address = $this->in($question); if(preg_match("/^((?:(?:(?:[a-zA-Z0-9][\.\-\+_]?)*)[a-zA-Z0-9])+)\@((?:(?:(?:[a-zA-Z0-9][\.\-_]?){0,62})[a-zA-Z0-9])+)\.([a-zA-Z0-9]{2,6})$/", $address) == 1) break; $this->err("Invalid emailaddress"); } while(0==0) { $question = "Forward to:"; $goto = $this->in($question); if(preg_match("/^((?:(?:(?:[a-zA-Z0-9][\.\-\+_]?)*)[a-zA-Z0-9])+)\@((?:(?:(?:[a-zA-Z0-9][\.\-_]?){0,62})[a-zA-Z0-9])+)\.([a-zA-Z0-9]{2,6})$/", $address) == 1) break; $this->err("Invalid emailaddress"); } $this->__handle($address, $goto); } /** * Interactive * * @access private */ function __handle($address, $goto) { $handler = new AliasHandler($address); $return = $handler->add($goto); if($return == 1) { $this->error("Error:", join("\n", $handler->errormsg)); } else { $this->out(""); $this->out("Alias ( $address -> $goto ) generated."); $this->hr(); } return; } /** * Displays help contents * * @access public */ function help() { $this->hr(); $this->out("Usage: postfixadmin-cli user add
[] [-g]"); $this->hr(); $this->out('Commands:'); $this->out("\n\tadd\n\t\tAdds mailbox in interactive mode."); $this->out("\n\tadd
[] [-g] \n\t\tAdds mailbox for
with password of if -g with rand pw. in MB."); $this->out(""); $this->_stop(); } } #TODO: implement class UpdateTask extends Shell { /** * Execution method always used for tasks * * @access public */ function execute() { if (empty($this->args)) { $this->help(); //$this->__interactive(); } if (!empty($this->args[0])) { $this->help(); } } /** * Interactive * * @access private */ function __interactive() { } /** * Displays help contents * * @access public */ function help() { $this->hr(); $this->out("Not Implemented yet!"); /*$this->out("Usage: postfixadmin-cli user update "); //$this->hr(); //$this->out('Commands:'); //$this->out("\n\tmodel\n\t\tbakes model in interactive mode."); //$this->out("\n\tmodel \n\t\tbakes model file with no associations or validation"); //$this->out("");*/ $this->_stop(); } } class DeleteTask extends Shell { /** * Execution method always used for tasks * * @access public */ function execute() { if (empty($this->args)) { $this->help(); //$this->__interactive(); } if (!empty($this->args[0])) { $this->__handle($this->args[0]); } } /** * Interactive * * @access private */ function __interactive() { $question[] = "Which Address do you want to view?"; $address = $this->in(join("\n", $question)); $question = "Do you really want to delete mailbox of '$address'?"; $create = $this->in($question, array('y','n')); $create == 'y' ? $create = true : $create = false; if ($create) $this->__handle($address); } /** * Interactive * * @access private */ function __handle($address) { ### TODO: don't use MailboxHandler, instead add delete function to AliasHandler (if not already there) ### using MailboxHandler for deleting aliases is like taking a sledgehammer to crack a nut ### (and will probably cause some error messages that I added today ;-) ### Implemented check it please! $handler = new AliasHandler($address); $status = $handler->delete(); if ($status == true) { $this->out("Mailbox of '$address' was deleted."); } else { $this->error("Error:", join("\n", $handler->errormsg)); } return; } /** * Displays help contents * * @access public */ function help() { $this->hr(); $this->out("NOT implemented yet."); //$this->out("Usage: postfixadmin-cli user model "); //$this->hr(); //$this->out('Commands:'); //$this->out("\n\tdelete\n\t\tdeletes mailbox in interactive mode."); //$this->out("\n\tdelete
\n\t\tdeletes mailbox with address
"); //$this->out(""); $this->_stop(); } } class ViewTask extends Shell { /** * Execution method always used for tasks * * @access public */ function execute() { if (empty($this->args)) { $this->__interactive(); } if (!empty($this->args[0])) { $this->__handle($this->args[0]); } } /** * Interactive * * @access private */ function __interactive() { $question[] = "Which Alias do you want to view?"; $address = $this->in(join("\n", $question)); $this->__handle($address); } /** * Interactive * * @access private */ function __handle($address) { $handler = new AliasHandler($address); $status = $handler->get(); # TODO: set the "all" flag? if ( ! $status) { $this->error("Error: Not Found", "The requested alias was not found!"); } else { $result = $handler->return; $this->out(sprintf("Entries for: %s\n", $address)); $this->out("Goto: \t"); foreach($result AS $goto) { $this->out("\t -> ".$goto); } # TODO: display "deliver to mailbox" ##NEED fix in is_mailbox_alias because user is not set correctly in this scenario! /** if( $handler->is_mailbox_alias($address) ) $this->out("A mailbox was set for this alias!\n"); } */ # TODO: display if vacation is on? /** if( $handler->is_vacation_address($address) ) { $this->out("This alias is a vacation address!"); } */ } return; } /** * Displays help contents * * @access public */ function help() { $this->out(""); $this->hr(); $this->out("Usage: postfixadmin-cli user view
"); $this->hr(); $this->out('Commands:'); $this->out("\n\tview\n\t\tView user. Select address in interactive mode."); $this->out("\n\tview
\n\t\tView user with address
"); $this->out(""); $this->_stop(); } }