Ernesto Nicolás Carrea 5 лет назад
Родитель
Сommit
6d1da2b46f
2 измененных файлов с 77 добавлено и 0 удалено
  1. 41 0
      bin/module/dovecot/install.inc
  2. 36 0
      bin/module/dovecot/remove.inc

+ 41 - 0
bin/module/dovecot/install.inc

@@ -0,0 +1,41 @@
+#!/bin/sh
+
+hestia_module_dovecot_install() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled imap)
+    if [ "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "IMAP module is already installed. See 'hestia module info imap'."
+        exit 1
+    fi
+
+    echo "Installing IMAP (Dovecot) module..."
+
+    osal_service_stop $OSAL_SERVICE_DOVECOT
+    hestia_config_backup 'dovecot-install' $OSAL_PATH_DOVECOT_CONF
+
+    osal_package_preinstall
+    osal_package_install $OSAL_PKG_DOVECOT
+
+    gpasswd -a dovecot mail > /dev/null 2>&1
+    cp -rf $HESTIA_INSTALL_DIR/dovecot/* $OSAL_PATH_DOVECOT_CONF/
+    cp -f $HESTIA_INSTALL_DIR/logrotate/dovecot $OSAL_PATH_LOGROTATE_CONF/
+    chown -R root:root $OSAL_PATH_DOVECOT_CONF
+    
+    # FIXME: Why do we do this?
+    rm -f /etc/dovecot/conf.d/15-mailboxes.conf
+
+    osal_service_enable $OSAL_SERVICE_DOVECOT
+    osal_service_start $OSAL_SERVICE_DOVECOT
+    check_result $? "Dovecot start failed"
+
+    osal_kv_write $HESTIA/conf/hestia.conf 'IMAP_SYSTEM' 'dovecot'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'installed' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'description' 'Hestia IMAP (Dovecot) module'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'enabled' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'variant' 'dovecot'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'version' '1'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'service_name' $OSAL_PKG_DOVECOT
+
+    exit 0
+}

+ 36 - 0
bin/module/dovecot/remove.inc

@@ -0,0 +1,36 @@
+#!/bin/sh
+
+hestia_module_dovecot_remove() {
+    source $HESTIA/bin/module/func.inc
+
+    module_installed=$(hestia_module_isinstalled imap)
+    if [ ! "$module_installed" ] && [ ! "$param_force" ]; then
+        echo "IMAP module is not installed. See 'hestia module info imap'."
+        exit 1
+    fi
+
+    module_variant=$(hestia_module_getvariant imap)
+    if [ "$module_variant" != 'dovecot' ] && [ ! "$param_force" ]; then
+        echo "The installed IMAP module is not Dovecot. See 'hestia module info imap'."
+        exit 1
+    fi
+
+    echo "Removing IMAP (Dovecot) module..."
+
+    osal_service_stop $OSAL_SERVICE_DOVECOT
+    osal_service_disable $OSAL_SERVICE_DOVECOT
+
+    hestia_config_backup 'dovecot-remove' $OSAL_PATH_DOVECOT_CONF
+    rm -rf $OSAL_PATH_DOVECOT_CONF
+
+    osal_package_remove $OSAL_PKG_DOVECOT
+
+    osal_kv_write $HESTIA/conf/hestia.conf 'IMAP_SYSTEM' 'no'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'installed' '0'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'description' ''
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'enabled' '0'
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'variant' ''
+    osal_kv_write $HESTIA_CONF_MODULES/imap.conf 'version' '0'
+
+    exit 0
+}