From 1dbd0e3540eba5d304f54842ae4cfd8397484d29 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Mon, 19 Oct 2015 09:22:51 -0400
Subject: [PATCH] FS#2403 - Disable apps vhost in server config

---
 interface/web/admin/templates/server_config_web_edit.htm |    3 +++
 interface/web/admin/lib/lang/ar_server_config.lng        |    1 +
 interface/web/admin/lib/lang/es_server_config.lng        |    1 +
 install/tpl/server.ini.master                            |    1 +
 interface/web/admin/lib/lang/tr_server_config.lng        |    1 +
 server/plugins-available/apps_vhost_plugin.inc.php       |   20 ++++++++++++++++++++
 interface/web/admin/form/server_config.tform.php         |    6 ++++++
 interface/web/admin/lib/lang/de_server_config.lng        |    1 +
 interface/web/admin/lib/lang/nl_server_config.lng        |    1 +
 interface/web/admin/lib/lang/hu_server_config.lng        |    1 +
 interface/web/admin/lib/lang/pl_server_config.lng        |    1 +
 interface/web/admin/lib/lang/ru_server_config.lng        |    1 +
 interface/web/admin/lib/lang/el_server_config.lng        |    1 +
 interface/web/admin/lib/lang/ro_server_config.lng        |    1 +
 interface/web/admin/lib/lang/br_server_config.lng        |    1 +
 interface/web/admin/lib/lang/hr_server_config.lng        |    1 +
 interface/web/admin/lib/lang/fr_server_config.lng        |    1 +
 interface/web/admin/lib/lang/fi_server_config.lng        |    1 +
 interface/web/admin/lib/lang/se_server_config.lng        |    1 +
 interface/web/admin/lib/lang/en_server_config.lng        |    1 +
 interface/web/admin/lib/lang/sk_server_config.lng        |    1 +
 interface/web/admin/lib/lang/cz_server_config.lng        |    1 +
 interface/web/admin/lib/lang/it_server_config.lng        |    1 +
 interface/web/admin/lib/lang/id_server_config.lng        |    1 +
 interface/web/admin/lib/lang/ja_server_config.lng        |    1 +
 interface/web/admin/lib/lang/pt_server_config.lng        |    1 +
 interface/web/admin/lib/lang/bg_server_config.lng        |    1 +
 27 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index d50d244..286dc07 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -72,6 +72,7 @@
 group=www-data
 nginx_user=www-data
 nginx_group=www-data
+apps_vhost_enabled=y
 apps_vhost_port=8081
 apps_vhost_ip=_default_
 apps_vhost_servername=
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 9886208..adc55b1 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1038,6 +1038,12 @@
 				1 => 'y'
 			)
 		),
+		'apps_vhost_enabled' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'y',
+			'value' => array (0 => 'n', 1 => 'y')
+		),
 		'apps_vhost_port' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index e2f2db4..5000079 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index 4365d91..3d805a9 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index e34e4ff..212f9c0 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index 8df2dbe..eddcd21 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -253,5 +253,6 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
 
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index aa448d8..13f7834 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -266,4 +266,5 @@
 $wb['php_handler_txt'] = 'Standard-PHP-Handler';
 $wb['enable_spdy_txt'] = 'Stellt SPDY zur Verfügung';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 2cef4ed..e672f60 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -250,4 +250,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index b5e4237..ac7e2d5 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -281,4 +281,5 @@
 $wb['xmpp_port_pastebin_txt'] = 'Pastebin';
 $wb['xmpp_port_bosh_txt'] = 'BOSH';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index a62b3f6..16e406c 100644
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -253,4 +253,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index f4f8856..061465c 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index 0ceb4af..8fa674c 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -252,5 +252,6 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
 
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index eaf7fb6..c11593f 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -256,6 +256,7 @@
 $wb['cron_wget_error_regex'] = 'Neispravna cron wget putanja.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
 
 
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 58b9524..1e4c2a1 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 5f89667..8c26f26 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index c3d435b..3b5cfcf 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 3f3c639..76e1cf8 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index e9c32b5..b31b452 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 9c55a4f..d1a0b67 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 712d15a..3081121 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index d6d950f..5ecec82 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index 1acfb05..fbddb89 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index baf79af..8bf64ed 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 1e8ae4d..6e79b15 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 2e7a7df..531fe07 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -255,4 +255,5 @@
 $wb['cron_wget_error_regex'] = 'Invalid cron wget path.';
 $wb['network_filesystem_txt'] = 'Network Filesystem';
 $wb["disable_bind_log_txt"] = "Disable bind9 messages for Loglevel WARN";
+$wb["apps_vhost_enabled_txt"] = "Apps-vhost enabled";
 ?>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 9f8f9d8..f32e147 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -228,6 +228,9 @@
             </div>
             <div class="col-sm-3"></div><div class="col-sm-9"><button class="btn btn-default formbutton-default" type="button" data-toggle="collapse" data-target="#toggle-apps_vhost_settings" aria-expanded="false" aria-controls="toggle-apps_vhost_settings">{tmpl_var name='apps_vhost_settings_txt'}</button></div>
             <div id="toggle-apps_vhost_settings" class="collapse">
+				<div class="form-group">
+					<label for="apps_vhost_enabled" class="col-sm-3 control-label">{tmpl_var name='apps_vhost_enabled_txt'}</label>
+					<div class="col-sm-9">{tmpl_var name='apps_vhost_enabled'}</div></div>
                 <div class="form-group">
                     <label for="apps_vhost_port" class="col-sm-3 control-label">{tmpl_var name='apps_vhost_port_txt'}</label>
                     <div class="col-sm-9"><input type="text" name="apps_vhost_port" id="apps_vhost_port" value="{tmpl_var name='apps_vhost_port'}" class="form-control" /></div></div>
diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php
index 320f3d0..d5d5dc8 100644
--- a/server/plugins-available/apps_vhost_plugin.inc.php
+++ b/server/plugins-available/apps_vhost_plugin.inc.php
@@ -119,6 +119,16 @@
 			/* end of backwards compatibility section */
 
 			$app->system->file_put_contents("$vhost_conf_dir/apps.vhost", $content);
+
+			// enabled / disable apps-vhost
+			$vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost');
+			if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') {
+				$app->system->unlink($vhost_symlink);
+			}
+			if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost') && $web_config['apps_vhost_enabled'] == 'y') {
+				symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost');
+			}
+
 			$app->services->restartServiceDelayed('httpd', 'restart');
 		}
 
@@ -185,6 +195,16 @@
 			file_put_contents($web_config['php_fpm_pool_dir'].'/apps.conf', $fpm_content);
 
 			file_put_contents("$vhost_conf_dir/apps.vhost", $content);
+
+			// enabled / disable apps-vhost
+			$vhost_symlink = escapeshellcmd($web_config['vhost_conf_enabled_dir'].'/000-apps.vhost');
+			if(is_link($vhost_symlink) && $web_config['apps_vhost_enabled'] == 'n') {
+				$app->system->unlink($vhost_symlink);
+			}
+			if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost') && $web_config['apps_vhost_enabled'] == 'y') {
+				symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost');
+			}
+
 			$app->services->restartServiceDelayed('httpd', 'reload');
 		}
 	}

--
Gitblit v1.9.1