From ba747c0be201755bed0e36e02edfb85d31f5214f Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 30 May 2007 14:11:32 +0000 Subject: [PATCH] Enhanced getmail support and the installer. --- install/install.php | 20 +- install/lib/installer_base.lib.php | 26 +- install/tpl/config.inc.php.master | 12 + install/uninstall.php | 45 ++++ interface/lib/classes/tform.inc.php | 19 +- interface/web/admin/form/server.tform.php | 25 ++ interface/web/admin/lib/lang/en_server.lng | 23 +- .../admin/templates/server_edit_config.htm | 16 ++ .../client/templates/client_edit_limits.htm | 2 + interface/web/mail/lib/lang/en_mail_get.lng | 22 +- .../web/mail/lib/lang/en_mail_get_list.lng | 27 +- .../mail/lib/lang/en_spamfilter_policy.lng | 78 +++--- interface/web/mail/lib/module.conf.php | 235 +++++++++--------- interface/web/mail/mail_user_edit.php | 6 +- server/lib/app.inc.php | 2 +- server/lib/classes/getconf.inc.php | 60 +++++ server/plugins-enabled/getmail_plugin.inc.php | 13 +- server/scripts/getmail.sh | 2 + server/server.php | 2 +- 19 files changed, 418 insertions(+), 217 deletions(-) create mode 100644 install/uninstall.php create mode 100644 interface/web/admin/templates/server_edit_config.htm create mode 100644 server/lib/classes/getconf.inc.php create mode 100644 server/scripts/getmail.sh diff --git a/install/install.php b/install/install.php index 39ad865f9..1805ef310 100644 --- a/install/install.php +++ b/install/install.php @@ -86,7 +86,11 @@ $inst->configure_spamassassin(); swriteln('Configuring Amavisd'); $inst->configure_amavis(); -// Configure Amavis +// Configure Getmail +swriteln('Configuring Getmail'); +$inst->configure_getmail(); + +// Configure ISPConfig swriteln('Installing ISPConfig'); $inst->install_ispconfig(); @@ -101,11 +105,19 @@ postfix amavisd calmd spamd - - - */ +exec("/etc/init.d/mysql restart"); +exec("/etc/init.d/postfix restart"); +exec("/etc/init.d/saslauthd restart"); +exec("/etc/init.d/amavis restart"); +exec("/etc/init.d/clamav-daemon restart"); +exec("/etc/init.d/courier-authdaemon restart"); +exec("/etc/init.d/courier-imap restart"); +exec("/etc/init.d/courier-imap-ssl restart"); +exec("/etc/init.d/courier-pop restart"); +exec("/etc/init.d/courier-pop-ssl restart"); + echo "Installation finished.\n"; diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 9c89a7ca0..a4c5a2b46 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -439,6 +439,16 @@ postfix check wf($configfile,$content); } + function configure_getmail() { + global $conf; + + $command = "useradd -b /etc/getmail -d /etc/getmail getmail"; + caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); + + $command = "chmod -R 700 /etc/getmail"; + caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); + } + function install_ispconfig() { global $conf; @@ -466,7 +476,7 @@ postfix check $command = "ln -s ".$conf["ispconfig_install_dir"]."/interface/web/ /var/www/ispconfig"; caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); - // Create the config file for ISPConfig + // Create the config file for ISPConfig interface $configfile = 'config.inc.php'; if(is_file($conf["ispconfig_install_dir"].'/interface/lib/'.$configfile)) copy($conf["ispconfig_install_dir"].'/interface/lib/'.$configfile,$conf["ispconfig_install_dir"].'/interface/lib/'.$configfile.'~'); $content = rf("tpl/".$configfile.".master"); @@ -476,6 +486,17 @@ postfix check $content = str_replace('{mysql_server_host}',$conf["mysql_server_host"],$content); wf($conf["ispconfig_install_dir"].'/interface/lib/'.$configfile,$content); + // Create the config file for ISPConfig server + $configfile = 'config.inc.php'; + if(is_file($conf["ispconfig_install_dir"].'/server/lib/'.$configfile)) copy($conf["ispconfig_install_dir"].'/server/lib/'.$configfile,$conf["ispconfig_install_dir"].'/interface/lib/'.$configfile.'~'); + $content = rf("tpl/".$configfile.".master"); + $content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql_server_ispconfig_user"],$content); + $content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql_server_ispconfig_password"],$content); + $content = str_replace('{mysql_server_database}',$conf["mysql_server_database"],$content); + $content = str_replace('{mysql_server_host}',$conf["mysql_server_host"],$content); + wf($conf["ispconfig_install_dir"].'/server/lib/'.$configfile,$content); + + // Chmod the files $command = "chmod -R 750 ".$conf["ispconfig_install_dir"]; caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); @@ -491,6 +512,9 @@ postfix check $command = "adduser www-data ispconfig"; caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); + // Make the shell scripts executable + $command = "chmod +x ".$conf["ispconfig_install_dir"]."/server/scripts/*.sh"; + caselog($command." &> /dev/null", __FILE__, __LINE__,"EXECUTED: ".$command,"Failed to execute the command ".$command); } diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master index 79150295e..5bf2aed23 100644 --- a/install/tpl/config.inc.php.master +++ b/install/tpl/config.inc.php.master @@ -35,6 +35,7 @@ ini_set('register_globals',0); $conf["app_title"] = "ISPConfig"; $conf["app_version"] = "3.0.0"; +$conf["server_id"] = "1"; /* @@ -69,6 +70,13 @@ define("DB_DATABASE",$conf["db_database"]); define("DB_USER",$conf["db_user"]); define("DB_PASSWORD",$conf["db_password"]); +/* + Logging +*/ + +$conf["log_file"] = $conf["rootpath"].$conf["fs_div"]."ispconfig.log"; +$conf["log_priority"] = 0; // 0 = Debug, 1 = Warning, 2 = Error + /* Themes */ @@ -104,4 +112,8 @@ $conf["default_retry"] = 7200; $conf["default_expire"] = 604800; $conf["default_minimum_ttl"] = 86400; +define("LOGLEVEL_DEBUG",0); +define("LOGLEVEL_WARN",1); +define("LOGLEVEL_ERROR",2); + ?> \ No newline at end of file diff --git a/install/uninstall.php b/install/uninstall.php new file mode 100644 index 000000000..9a1702e46 --- /dev/null +++ b/install/uninstall.php @@ -0,0 +1,45 @@ +<?php + +/* +Copyright (c) 2007, Till Brehm, projektfarm Gmbh +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +require("/usr/local/ispconfig/server/lib/config.inc.php"); +require("/usr/local/ispconfig/server/lib/app.inc.php"); + +// Delete the ISPConfig database +$app->db->query('DROP DATABASE '.$conf["db_database"]); + +// Deleting the symlink in /var/www +unlink("/var/www/ispconfig"); + +// Delete the ispconfig files +exec('rm -rf /usr/local/ispconfig'); + +echo "Finished.\n"; + +?> \ No newline at end of file diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index ca6e59451..a9ae437ce 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -875,14 +875,17 @@ class tform { } function getAuthSQL($perm) { - - $sql = '('; - $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR "; - $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR "; - $sql .= "sys_perm_other like '%$perm%'"; - $sql .= ')'; - - return $sql; + if($_SESSION["s"]["user"]["typ"] == 'admin') { + return '1'; + } else { + $sql = '('; + $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR "; + $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR "; + $sql .= "sys_perm_other like '%$perm%'"; + $sql .= ')'; + + return $sql; + } } /* diff --git a/interface/web/admin/form/server.tform.php b/interface/web/admin/form/server.tform.php index 968218076..f4ebd4c77 100644 --- a/interface/web/admin/form/server.tform.php +++ b/interface/web/admin/form/server.tform.php @@ -123,4 +123,29 @@ $form["tabs"]['services'] = array ( ); +$form["tabs"]['config'] = array ( + 'title' => "Config", + 'width' => 100, + 'template' => "templates/server_edit_config.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'config' => array ( + 'datatype' => 'TEXT', + 'formtype' => 'TEXTAREA', + 'default' => '', + 'value' => '', + 'width' => '', + 'cols' => '40', + 'rows' => '20', + 'maxlength' => '' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/en_server.lng b/interface/web/admin/lib/lang/en_server.lng index b8f1acf0d..f98f66853 100644 --- a/interface/web/admin/lib/lang/en_server.lng +++ b/interface/web/admin/lib/lang/en_server.lng @@ -1,12 +1,13 @@ -<?php -$wb["server_name_txt"] = 'Servername'; -$wb["mail_server_txt"] = 'Mailserver'; -$wb["web_server_txt"] = 'Webserver'; -$wb["dns_server_txt"] = 'DNS-Server'; -$wb["file_server_txt"] = 'Fileserver'; -$wb["db_server_txt"] = 'DB-Server'; -$wb["vserver_server_txt"] = 'VServer-Server'; -$wb["active_txt"] = 'Active'; -$wb["btn_save_txt"] = 'Save'; -$wb["btn_cancel_txt"] = 'Cancel'; +<?php +$wb["config_txt"] = 'config'; +$wb["btn_save_txt"] = 'Save'; +$wb["btn_cancel_txt"] = 'Cancel'; +$wb["server_name_txt"] = 'Servername'; +$wb["mail_server_txt"] = 'Mailserver'; +$wb["web_server_txt"] = 'Webserver'; +$wb["dns_server_txt"] = 'DNS-Server'; +$wb["file_server_txt"] = 'Fileserver'; +$wb["db_server_txt"] = 'DB-Server'; +$wb["vserver_server_txt"] = 'VServer-Server'; +$wb["active_txt"] = 'Active'; ?> \ No newline at end of file diff --git a/interface/web/admin/templates/server_edit_config.htm b/interface/web/admin/templates/server_edit_config.htm new file mode 100644 index 000000000..3e1a335d2 --- /dev/null +++ b/interface/web/admin/templates/server_edit_config.htm @@ -0,0 +1,16 @@ +<table width="500" border="0" cellspacing="0" cellpadding="2"> + <tr> + <td class="frmText11">{tmpl_var name='config_txt'}:</td> + <td class="frmText11"><textarea name='config' cols='60' rows='30'>{tmpl_var name='config'}</textarea></td> + </tr> <tr> + <td class="frmText11"> </td> + <td class="frmText11"> </td> + </tr> + <tr> + <td> </td> + <td><input name="btn_save" type="button" class="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/server_edit.php');"><div class="buttonEnding"></div> + <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><div class="buttonEnding"></div> + </td> + </tr> +</table> +<input type="hidden" name="id" value="{tmpl_var name='id'}"> \ No newline at end of file diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm index 21c9690f5..be92c42ec 100644 --- a/interface/web/client/templates/client_edit_limits.htm +++ b/interface/web/client/templates/client_edit_limits.htm @@ -34,10 +34,12 @@ <td class="frmText11">{tmpl_var name='limit_mailrouting_txt'}:</td> <td class="frmText11"><input name="limit_mailrouting" type="text" class="text" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10"></td> </tr> + <!-- <tr> <td class="frmText11">{tmpl_var name='limit_mailfilter_txt'}:</td> <td class="frmText11"><input name="limit_mailfilter" type="text" class="text" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10"></td> </tr> + --> <tr> <td class="frmText11">{tmpl_var name='limit_fetchmail_txt'}:</td> <td class="frmText11"><input name="limit_fetchmail" type="text" class="text" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10"></td> diff --git a/interface/web/mail/lib/lang/en_mail_get.lng b/interface/web/mail/lib/lang/en_mail_get.lng index f6d37315f..f6828af7a 100644 --- a/interface/web/mail/lib/lang/en_mail_get.lng +++ b/interface/web/mail/lib/lang/en_mail_get.lng @@ -1,12 +1,12 @@ -<?php -$wb["server_id_txt"] = 'server_id'; -$wb["type_txt"] = 'type'; -$wb["source_server_txt"] = 'source_server'; -$wb["source_username_txt"] = 'source_username'; -$wb["source_password_txt"] = 'source_password'; -$wb["source_delete_txt"] = 'source_delete'; -$wb["destination_txt"] = 'destination'; -$wb["active_txt"] = 'active'; -$wb["btn_save_txt"] = 'Save'; -$wb["btn_cancel_txt"] = 'Cancel'; +<?php +$wb["server_id_txt"] = 'Server'; +$wb["type_txt"] = 'Type'; +$wb["source_server_txt"] = 'Pop3/Imap Server'; +$wb["source_username_txt"] = 'Username'; +$wb["source_password_txt"] = 'Password'; +$wb["source_delete_txt"] = 'Delete emails after retrieval'; +$wb["destination_txt"] = 'Destination'; +$wb["active_txt"] = 'Active'; +$wb["btn_save_txt"] = 'Save'; +$wb["btn_cancel_txt"] = 'Cancel'; ?> \ No newline at end of file diff --git a/interface/web/mail/lib/lang/en_mail_get_list.lng b/interface/web/mail/lib/lang/en_mail_get_list.lng index 11a4d02f7..94fdb0645 100644 --- a/interface/web/mail/lib/lang/en_mail_get_list.lng +++ b/interface/web/mail/lib/lang/en_mail_get_list.lng @@ -1,14 +1,15 @@ -<?php -$wb["list_head_txt"] = 'mail_get'; -$wb["active_txt"] = 'active'; -$wb["server_id_txt"] = 'server_id'; -$wb["source_server_txt"] = 'source_server'; -$wb["source_username_txt"] = 'source_username'; -$wb["destination_txt"] = 'destination'; -$wb["page_txt"] = 'Page'; -$wb["page_of_txt"] = 'of'; -$wb["page_next_txt"] = 'Next'; -$wb["page_back_txt"] = 'Back'; -$wb["delete_txt"] = 'Delete'; -$wb["filter_txt"] = 'Filter'; +<?php +$wb["list_head_txt"] = 'Fetch emails from external POP3 / IMAP servers'; +$wb["active_txt"] = 'Active'; +$wb["server_id_txt"] = 'Server'; +$wb["source_server_txt"] = 'External Server'; +$wb["source_username_txt"] = 'Username'; +$wb["destination_txt"] = 'Destination'; +$wb["page_txt"] = 'Page'; +$wb["page_of_txt"] = 'of'; +$wb["page_next_txt"] = 'Next'; +$wb["page_back_txt"] = 'Back'; +$wb["delete_txt"] = 'Delete'; +$wb["filter_txt"] = 'Filter'; +$wb["add_new_record_txt"] = 'Add new Account'; ?> \ No newline at end of file diff --git a/interface/web/mail/lib/lang/en_spamfilter_policy.lng b/interface/web/mail/lib/lang/en_spamfilter_policy.lng index 879c2cbee..bf5d94315 100644 --- a/interface/web/mail/lib/lang/en_spamfilter_policy.lng +++ b/interface/web/mail/lib/lang/en_spamfilter_policy.lng @@ -1,40 +1,40 @@ -<?php -$wb["policy_name_txt"] = 'policy_name'; -$wb["virus_lover_txt"] = 'virus_lover'; -$wb["spam_lover_txt"] = 'spam_lover'; -$wb["banned_files_lover_txt"] = 'banned_files_lover'; -$wb["bad_header_lover_txt"] = 'bad_header_lover'; -$wb["bypass_virus_checks_txt"] = 'bypass_virus_checks'; -$wb["bypass_banned_checks_txt"] = 'bypass_banned_checks'; -$wb["bypass_header_checks_txt"] = 'bypass_header_checks'; -$wb["btn_save_txt"] = 'Save'; -$wb["btn_cancel_txt"] = 'Cancel'; -$wb["virus_quarantine_to_txt"] = 'virus_quarantine_to'; -$wb["spam_quarantine_to_txt"] = 'spam_quarantine_to'; -$wb["banned_quarantine_to_txt"] = 'banned_quarantine_to'; -$wb["bad_header_quarantine_to_txt"] = 'bad_header_quarantine_to'; -$wb["clean_quarantine_to_txt"] = 'clean_quarantine_to'; -$wb["other_quarantine_to_txt"] = 'other_quarantine_to'; -$wb["spam_tag_level_txt"] = 'spam_tag_level'; -$wb["spam_tag2_level_txt"] = 'spam_tag2_level'; -$wb["spam_kill_level_txt"] = 'spam_kill_level'; -$wb["spam_dsn_cutoff_level_txt"] = 'spam_dsn_cutoff_level'; -$wb["spam_quarantine_cutoff_level_txt"] = 'spam_quarantine_cutoff_level'; -$wb["spam_modifies_subj_txt"] = 'spam_modifies_subj'; -$wb["spam_subject_tag_txt"] = 'spam_subject_tag'; -$wb["spam_subject_tag2_txt"] = 'spam_subject_tag2'; -$wb["addr_extension_virus_txt"] = 'addr_extension_virus'; -$wb["addr_extension_spam_txt"] = 'addr_extension_spam'; -$wb["addr_extension_banned_txt"] = 'addr_extension_banned'; -$wb["addr_extension_bad_header_txt"] = 'addr_extension_bad_header'; -$wb["warnvirusrecip_txt"] = 'warnvirusrecip'; -$wb["warnbannedrecip_txt"] = 'warnbannedrecip'; -$wb["warnbadhrecip_txt"] = 'warnbadhrecip'; -$wb["newvirus_admin_txt"] = 'newvirus_admin'; -$wb["virus_admin_txt"] = 'virus_admin'; -$wb["banned_admin_txt"] = 'banned_admin'; -$wb["bad_header_admin_txt"] = 'bad_header_admin'; -$wb["spam_admin_txt"] = 'spam_admin'; -$wb["message_size_limit_txt"] = 'message_size_limit'; -$wb["banned_rulenames_txt"] = 'banned_rulenames'; +<?php +$wb["policy_name_txt"] = 'Policy Name'; +$wb["virus_lover_txt"] = 'Virusl lover'; +$wb["spam_lover_txt"] = 'SPAM lover'; +$wb["banned_files_lover_txt"] = 'Banned files lover'; +$wb["bad_header_lover_txt"] = 'Bad header lover'; +$wb["bypass_virus_checks_txt"] = 'Bypass virus checks'; +$wb["bypass_banned_checks_txt"] = 'Bypass banned checks'; +$wb["bypass_header_checks_txt"] = 'Bypass header checks'; +$wb["btn_save_txt"] = 'Save'; +$wb["btn_cancel_txt"] = 'Cancel'; +$wb["virus_quarantine_to_txt"] = 'Virus quarantine to'; +$wb["spam_quarantine_to_txt"] = 'Spam quarantine to'; +$wb["banned_quarantine_to_txt"] = 'Banned quarantine to'; +$wb["bad_header_quarantine_to_txt"] = 'Bad header quarantine to'; +$wb["clean_quarantine_to_txt"] = 'Clean quarantine to'; +$wb["other_quarantine_to_txt"] = 'Other quarantine to'; +$wb["spam_tag_level_txt"] = 'SPAM tag level'; +$wb["spam_tag2_level_txt"] = 'SPAM tag2 level'; +$wb["spam_kill_level_txt"] = 'SPAM kill level'; +$wb["spam_dsn_cutoff_level_txt"] = 'SPAM dsn cutoff level'; +$wb["spam_quarantine_cutoff_level_txt"] = 'SPAM quarantine cutoff level'; +$wb["spam_modifies_subj_txt"] = 'SPAM modifies subject'; +$wb["spam_subject_tag_txt"] = 'SPAM subject tag'; +$wb["spam_subject_tag2_txt"] = 'SPAM subject tag2'; +$wb["addr_extension_virus_txt"] = 'Addr. extension virus'; +$wb["addr_extension_spam_txt"] = 'Addr. extension SPAM'; +$wb["addr_extension_banned_txt"] = 'Addr. extension banned'; +$wb["addr_extension_bad_header_txt"] = 'Addr extension bad header'; +$wb["warnvirusrecip_txt"] = 'Warn virus recip.'; +$wb["warnbannedrecip_txt"] = 'Warn banned recip.'; +$wb["warnbadhrecip_txt"] = 'Warn bad header recip.'; +$wb["newvirus_admin_txt"] = 'Newvirus admin'; +$wb["virus_admin_txt"] = 'Virus admin'; +$wb["banned_admin_txt"] = 'Banned admin'; +$wb["bad_header_admin_txt"] = 'Bad header admin'; +$wb["spam_admin_txt"] = 'SPAM admin'; +$wb["message_size_limit_txt"] = 'Message size limit'; +$wb["banned_rulenames_txt"] = 'Banned rulenames'; ?> \ No newline at end of file diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php index a7c7e1ca0..5cf745524 100644 --- a/interface/web/mail/lib/module.conf.php +++ b/interface/web/mail/lib/module.conf.php @@ -1,123 +1,114 @@ -<?php -$module = array ( - 'name' => 'mail', - 'title' => 'Email', - 'template' => 'module.tpl.htm', - 'navframe_page' => '', - 'startpage' => 'mail/mail_domain_list.php', - 'tab_width' => '', - 'nav' => - array ( - 0 => - array ( - 'title' => 'Email Accounts', - 'open' => 1, - 'items' => - array ( - 0 => - array ( - 'title' => 'Domain', - 'target' => 'content', - 'link' => 'mail/mail_domain_list.php', - ), - 3 => - array ( - 'title' => 'Email Mailbox', - 'target' => 'content', - 'link' => 'mail/mail_user_list.php', - ), - 4 => - array ( - 'title' => 'Email Alias', - 'target' => 'content', - 'link' => 'mail/mail_alias_list.php', - ), - 5 => - array ( - 'title' => 'Email Forward', - 'target' => 'content', - 'link' => 'mail/mail_forward_list.php', - ), - 6 => - array ( - 'title' => 'Email Catchall', - 'target' => 'content', - 'link' => 'mail/mail_domain_catchall_list.php', - ), - 7 => - array ( - 'title' => 'Email Routing', - 'target' => 'content', - 'link' => 'mail/mail_transport_list.php', - ), - ), - ), - 1 => - array ( - 'title' => 'Email Filter', - 'open' => 1, - 'items' => - array ( - 0 => - array ( - 'title' => 'Whitelist', - 'target' => 'content', - 'link' => 'mail/mail_whitelist_list.php', - ), - 1 => - array ( - 'title' => 'Blacklist', - 'target' => 'content', - 'link' => 'mail/mail_blacklist_list.php', - ), - ), - ), - 2 => - array ( - 'title' => 'Spamfilter', - 'open' => 1, - 'items' => - array ( - 0 => - array ( - 'title' => 'Whitelist', - 'target' => 'content', - 'link' => 'mail/spamfilter_whitelist_list.php', - ), - 1 => - array ( - 'title' => 'Blacklist', - 'target' => 'content', - 'link' => 'mail/spamfilter_blacklist_list.php', - ), - 2 => - array ( - 'title' => 'User', - 'target' => 'content', - 'link' => 'mail/spamfilter_users_list.php', - ), - 3 => - array ( - 'title' => 'Policy', - 'target' => 'content', - 'link' => 'mail/spamfilter_policy_list.php', - ), - ), - ), - 3 => - array ( - 'title' => 'Fetchmail', - 'open' => 1, - 'items' => - array ( - 0 => - array ( - 'title' => 'Fetchmail', - 'target' => 'content', - 'link' => 'mail/mail_get_list.php', - ), - ), - ), - ), -) +<?php + +$module["name"] = "mail"; +$module["title"] = "Email"; +$module["template"] = "module.tpl.htm"; +$module["startpage"] = "mail/mail_domain_list.php"; +$module["tab_width"] = ''; + +/* + Email accounts menu +*/ + +$items[] = array( 'title' => "Domain", + 'target' => 'content', + 'link' => 'mail/mail_domain_list.php'); + +$items[] = array( 'title' => "Email Mailbox", + 'target' => 'content', + 'link' => 'mail/mail_user_list.php'); + +$items[] = array( 'title' => "Email Alias", + 'target' => 'content', + 'link' => 'mail/mail_alias_list.php'); + +$items[] = array( 'title' => "Email Forward", + 'target' => 'content', + 'link' => 'mail/mail_forward_list.php'); + +$items[] = array( 'title' => "Email Catchall", + 'target' => 'content', + 'link' => 'mail/mail_domain_catchall_list.php'); + +$items[] = array( 'title' => "Email Routing", + 'target' => 'content', + 'link' => 'mail/mail_transport_list.php'); + +$module["nav"][] = array( 'title' => 'Email Accounts', + 'open' => 1, + 'items' => $items); + +// aufräumen +unset($items); + +/* + Spamfilter menu +*/ + +$items[] = array( 'title' => "Whitelist", + 'target' => 'content', + 'link' => 'mail/spamfilter_whitelist_list.php'); + +$items[] = array( 'title' => "Blacklist", + 'target' => 'content', + 'link' => 'mail/spamfilter_blacklist_list.php'); + +if($_SESSION["s"]["user"]["typ"] == 'admin') { + + $items[] = array( 'title' => "User / Domain", + 'target' => 'content', + 'link' => 'mail/spamfilter_users_list.php'); + + $items[] = array( 'title' => "Policy", + 'target' => 'content', + 'link' => 'mail/spamfilter_policy_list.php'); +} + +$module["nav"][] = array( 'title' => 'Spamfilter', + 'open' => 1, + 'items' => $items); + +// aufräumen +unset($items); + +/* + Fetchmail menu +*/ + + +$items[] = array( 'title' => "Fetchmail", + 'target' => 'content', + 'link' => 'mail/mail_get_list.php'); + + +$module["nav"][] = array( 'title' => 'Fetchmail', + 'open' => 1, + 'items' => $items); + +// aufräumen +unset($items); + +/* + Global filters menu +*/ + +if($_SESSION["s"]["user"]["typ"] == 'admin') { + + $items[] = array( 'title' => "Whitelist", + 'target' => 'content', + 'link' => 'mail/mail_whitelist_list.php'); + + $items[] = array( 'title' => "Blacklist", + 'target' => 'content', + 'link' => 'mail/mail_blacklist_list.php'); + + $module["nav"][] = array( 'title' => 'Global Filters', + 'open' => 1, + 'items' => $items); + + // aufräumen + unset($items); +} + + ?> \ No newline at end of file diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php index d611e23ac..4659d8758 100644 --- a/interface/web/mail/mail_user_edit.php +++ b/interface/web/mail/mail_user_edit.php @@ -96,7 +96,7 @@ class page_action extends tform_actions { $app->tpl->setVar("email_domain",$domain_select); // Convert quota from Bytes to MB - $app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024); + $app->tpl->setVar("quota",$this->dataRecord["quota"] / 1024/ 1024); parent::onShowEnd(); } @@ -133,7 +133,7 @@ class page_action extends tform_actions { // Check the quota and adjust if($client["limit_mailquota"] >= 0) { $tmp = $app->db->queryOneRecord("SELECT sum(quota) as mailquota FROM mail_user WHERE mailuser_id != ".intval($this->id)." AND sys_groupid = $client_group_id"); - $mailquota = $tmp["mailquota"] / 1024; + $mailquota = $tmp["mailquota"] / 1024 / 1024; $new_mailbox_quota = intval($this->dataRecord["quota"]); if($mailquota + $new_mailbox_quota > $client["limit_mailquota"]) { $max_free_quota = $client["limit_mailquota"] - $mailquota; @@ -156,7 +156,7 @@ class page_action extends tform_actions { unset($this->dataRecord["email_domain"]); // Convert quota from MB to Bytes - $this->dataRecord["quota"] = $this->dataRecord["quota"] * 1024; + $this->dataRecord["quota"] = $this->dataRecord["quota"] * 1024 * 1024; // setting Maildir, Homedir, UID and GID $app->uses('getconf'); diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php index dd52be176..e8e9b9389 100644 --- a/server/lib/app.inc.php +++ b/server/lib/app.inc.php @@ -104,7 +104,7 @@ class app { if (!fwrite($fp, date("d.m.Y-H:i")." - ".$priority_txt." - ". $msg."\r\n")) { die("Unable to write to logfile."); } - echo date("d.m.Y-H:i")." - ".$priority_txt." - ". $msg."<br>"; + echo date("d.m.Y-H:i")." - ".$priority_txt." - ". $msg."<br>\n"; fclose($fp); //} else { diff --git a/server/lib/classes/getconf.inc.php b/server/lib/classes/getconf.inc.php new file mode 100644 index 000000000..fd0c08864 --- /dev/null +++ b/server/lib/classes/getconf.inc.php @@ -0,0 +1,60 @@ +<?php + +/* +Copyright (c) 2006, Till Brehm, projektfarm Gmbh +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +class getconf { + + var $config; + + function get_server_config($server_id, $section = '') { + global $app; + + if(!is_array($this->config[$server_id])) { + $app->uses('ini_parser'); + $server_id = intval($server_id); + $server = $app->db->queryOneRecord("SELECT config FROM server WHERE server_id = $server_id"); + $this->config[$server_id] = $app->ini_parser->parse_ini_string(stripslashes($server["config"])); + } + + if($section == '') { + return $this->config[$server_id]; + } else { + return $this->config[$server_id][$section]; + } + } + + function get_global_config() { + + die("not yet implemented"); + + } + +} + +?> \ No newline at end of file diff --git a/server/plugins-enabled/getmail_plugin.inc.php b/server/plugins-enabled/getmail_plugin.inc.php index cc18d2d94..65569d4bf 100644 --- a/server/plugins-enabled/getmail_plugin.inc.php +++ b/server/plugins-enabled/getmail_plugin.inc.php @@ -34,7 +34,7 @@ class getmail_plugin { var $class_name = 'getmail_plugin'; - var $getmail_config_dir = '/etc/getmail'; + var $getmail_config_dir = ''; /* This function is called when the plugin is loaded @@ -51,6 +51,8 @@ class getmail_plugin { $app->plugins->registerEvent('mail_get_update','getmail_plugin','update'); $app->plugins->registerEvent('mail_get_delete','getmail_plugin','delete'); + + } function insert($event_name,$data) { @@ -63,6 +65,11 @@ class getmail_plugin { function update($event_name,$data) { global $app, $conf; + // load the server specific configuration options for getmail + $app->uses("getconf"); + $getmail_config = $app->getconf->get_server_config($conf["server_id"], 'getmail'); + $this->getmail_config_dir = $getmail_config["getmail_config_dir"]; + // Check if the config directory exists. if(!is_dir($this->getmail_config_dir)) { $app->log("Getmail config directory '".$this->getmail_config_dir."' does not exist.",LOGLEVEL_ERROR); @@ -79,7 +86,7 @@ class getmail_plugin { } - if($data["new"]["source_active"] == 'y') { + if($data["new"]["active"] == 'y') { // Open master template $tpl = file_get_contents($conf["rootpath"].'/conf/getmail.conf.master'); @@ -101,7 +108,7 @@ class getmail_plugin { $tpl = str_replace('{SERVER}',$data["new"]["source_server"],$tpl); $tpl = str_replace('{USERNAME}',$data["new"]["source_username"],$tpl); $tpl = str_replace('{PASSWORD}',$data["new"]["source_password"],$tpl); - $tpl = str_replace('{DESTINATION}',$data["new"]["source_destination"],$tpl); + $tpl = str_replace('{DESTINATION}',$data["new"]["destination"],$tpl); // Write the config file. file_put_contents($config_file_path,$tpl); diff --git a/server/scripts/getmail.sh b/server/scripts/getmail.sh new file mode 100644 index 000000000..cf9160a04 --- /dev/null +++ b/server/scripts/getmail.sh @@ -0,0 +1,2 @@ +#!/bin/bash +getmail -g /etc/getmail/ -r /etc/getmail/*.conf \ No newline at end of file diff --git a/server/server.php b/server/server.php index b4973f894..89341eb8d 100644 --- a/server/server.php +++ b/server/server.php @@ -109,5 +109,5 @@ if($tmp_num_records > 0) { $app->log("Remove Lock: ".$conf["temppath"].$conf["fs_div"].".ispconfig_lock",LOGLEVEL_DEBUG); */ -die('finished.'); +die("finished.\n"); ?> \ No newline at end of file -- GitLab