Browse Source

Add webmail vhosts creation routines

Kristan Kenney 7 years ago
parent
commit
c90f58a7a9
2 changed files with 82 additions and 4 deletions
  1. 81 4
      func/domain.sh
  2. 1 0
      func/main.sh

+ 81 - 4
func/domain.sh

@@ -234,15 +234,15 @@ add_web_config() {
         echo "include $conf;" > /etc/$1/conf.d/domains/$domain.ssl.conf
 
         # Clear old configurations
-        rm -fr $HOMEDIR/$user/conf/web/$domain.*
-        rm -fr $HOMEDIR/$user/conf/web/ssl.$domain.*
-        rm -fr $HOMEDIR/$user/conf/web/*nginx.$domain.*
+        rm -rf $HOMEDIR/$user/conf/web/$domain.*
+        rm -rf $HOMEDIR/$user/conf/web/ssl.$domain.*
+        rm -rf $HOMEDIR/$user/conf/web/*nginx.$domain.*
     else
         rm -f /etc/$1/conf.d/domains/$domain.conf
         echo "include $conf;" > /etc/$1/conf.d/domains/$domain.conf
 
         # Clear old configurations
-        rm -fr $HOMEDIR/$user/conf/web/$domain.*
+        rm -rf $HOMEDIR/$user/conf/web/$domain.*
     fi
 
     if [ "$1" != 'nginx' ]; then
@@ -585,6 +585,83 @@ is_mail_new() {
 }
 
 
+
+# Add web config
+add_webmail_config() {
+    mkdir -p "$HOMEDIR/$user/conf/mail/$domain"
+    conf="$HOMEDIR/$user/conf/mail/$domain/$1.conf"
+    if [[ "$2" =~ stpl$ ]]; then
+        conf="$HOMEDIR/$user/conf/mail/$domain/$1.ssl.conf"
+    fi
+
+    domain_idn=$domain
+    format_domain_idn
+
+    ssl_crt="$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.crt"
+    ssl_key="$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key"
+    ssl_pem="$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem"
+    ssl_ca="$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.ca"
+
+    cat $MAILTPL/$1/$WEB_BACKEND/$2 | \
+        sed -e "s|%ip%|$local_ip|g" \
+            -e "s|%domain%|$domain|g" \
+            -e "s|%domain_idn%|$domain_idn|g" \
+            -e "s|%alias%|${aliases//,/ }|g" \
+            -e "s|%alias_idn%|${aliases_idn//,/ }|g" \
+            -e "s|%alias_string%|$alias_string|g" \
+            -e "s|%email%|info@$domain|g" \
+            -e "s|%web_system%|$WEB_SYSTEM|g" \
+            -e "s|%web_port%|$WEB_PORT|g" \
+            -e "s|%web_ssl_port%|$WEB_SSL_PORT|g" \
+            -e "s|%backend_lsnr%|$backend_lsnr|g" \
+            -e "s|%rgroups%|$WEB_RGROUPS|g" \
+            -e "s|%proxy_system%|$PROXY_SYSTEM|g" \
+            -e "s|%proxy_port%|$PROXY_PORT|g" \
+            -e "s|%proxy_ssl_port%|$PROXY_SSL_PORT|g" \
+            -e "s/%proxy_extentions%/${PROXY_EXT//,/|}/g" \
+            -e "s|%user%|$user|g" \
+            -e "s|%group%|$user|g" \
+            -e "s|%home%|$HOMEDIR|g" \
+            -e "s|%docroot%|$docroot|g" \
+            -e "s|%sdocroot%|$sdocroot|g" \
+            -e "s|%ssl_crt%|$ssl_crt|g" \
+            -e "s|%ssl_key%|$ssl_key|g" \
+            -e "s|%ssl_pem%|$ssl_pem|g" \
+            -e "s|%ssl_ca_str%|$ssl_ca_str|g" \
+            -e "s|%ssl_ca%|$ssl_ca|g" \
+    > $conf
+
+    chown root:$user $conf
+    chmod 640 $conf
+
+    if [[ "$2" =~ stpl$ ]]; then
+        rm -f /etc/$1/conf.d/domains/mail.$domain.ssl.conf
+        echo "include $conf;" > /etc/$1/conf.d/domains/mail.$domain.ssl.conf
+
+        # Clear old configurations
+        rm -rf $HOMEDIR/$user/conf/mail/$domain.*
+        rm -rf $HOMEDIR/$user/conf/mail/ssl.$domain.*
+        rm -rf $HOMEDIR/$user/conf/mail/*nginx.$domain.*
+    else
+        rm -f /etc/$1/conf.d/domains/mail.$domain.conf
+        echo "include $conf;" > /etc/$1/conf.d/domains/mail.$domain.conf
+
+        # Clear old configurations
+        rm -rf $HOMEDIR/$user/conf/mail/$domain.*
+    fi
+
+    if [ "$1" != 'nginx' ]; then
+        find /etc/$1/conf.d/domains -type f -name "$domain.*"  | xargs sed -i "s/;//g"
+    fi
+
+    trigger="${2/.*pl/.sh}"
+    if [ -x "$WEBTPL/$1/$WEB_BACKEND/$trigger" ]; then
+        $WEBTPL/$1/$WEB_BACKEND/$trigger \
+            $user $domain $local_ip $HOMEDIR \
+            $HOMEDIR/$user/web/$domain/public_html
+    fi
+}
+
 # Add mail server SSL configuration
 add_mail_ssl_config() {
      # Ensure that SSL certificate directories exists

+ 1 - 0
func/main.sh

@@ -9,6 +9,7 @@ RRD_STEP=300
 BIN=$HESTIA/bin
 USER_DATA=$HESTIA/data/users/$user
 WEBTPL=$HESTIA/data/templates/web
+MAILTPL=$HESTIA/data/templates/mail
 DNSTPL=$HESTIA/data/templates/dns
 RRD=$HESTIA/web/rrd
 SENDMAIL="$HESTIA/web/inc/mail-wrapper.php"