From e1ceb050e19c7574bca146a8da7047ee4ff456b5 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Sun, 10 Jul 2016 05:02:35 -0400
Subject: [PATCH] Merge branch 'stable-3.1'

---
 interface/web/sites/ajax_get_json.php |  222 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 201 insertions(+), 21 deletions(-)

diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php
index ebaa9f7..c115b17 100644
--- a/interface/web/sites/ajax_get_json.php
+++ b/interface/web/sites/ajax_get_json.php
@@ -28,39 +28,219 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
+require_once '../../lib/config.inc.php';
+require_once '../../lib/app.inc.php';
 
 //* Check permissions for module
 $app->auth->check_module_permissions('sites');
 
-$server_id = intval($_GET["server_id"]);
-$web_id = intval($_GET["web_id"]);
+$app->uses('getconf,tform');
+
+$server_id = $app->functions->intval($_GET["server_id"]);
+$web_id = $app->functions->intval($_GET["web_id"]);
+$php_type = $_GET["php_type"];
+$client_group_id = $app->functions->intval($_GET['client_group_id']);
 $type = $_GET["type"];
 
 //if($_SESSION["s"]["user"]["typ"] == 'admin') {
 
-	if($type == 'getservertype'){
-		$json = '{"servertype":"';
-		$server_type = 'apache';
-		$app->uses('getconf');
-		$web_config = $app->getconf->get_server_config($server_id, 'web');
-		if(!empty($web_config['server_type'])) $server_type = $web_config['server_type'];
-		$json .= $server_type;
-		unset($webconfig);
-		$json .= '"}';
+if($type == 'getservertype'){
+	$json = '{"servertype":"';
+	$server_type = 'apache';
+	$web_config = $app->getconf->get_server_config($server_id, 'web');
+	if(!empty($web_config['server_type'])) $server_type = $web_config['server_type'];
+	$json .= $server_type;
+	unset($webconfig);
+	$json .= '"}';
+}
+
+if($type == 'getserverid'){
+	$json = '{"serverid":"';
+	$sql = "SELECT server_id FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r');
+	$server = $app->db->queryOneRecord($sql, $web_id);
+	$json .= $server['server_id'];
+	unset($server);
+	$json .= '"}';
+}
+
+if($type == 'getphpfastcgi'){
+	$json = '{';
+
+	$server_type = 'apache';
+	$web_config = $app->getconf->get_server_config($server_id, 'web');
+	if(!empty($web_config['server_type'])) $server_type = $web_config['server_type'];
+	if($server_type == 'nginx' && $php_type == 'fast-cgi') $php_type = 'php-fpm';
+	$sql_where = '';
+
+	//* Client: If the logged in user is not admin and has no sub clients (no reseller)
+	if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+		$sql_where = " AND (client_id = 0 OR client_id = ".$app->functions->intval($_SESSION["s"]["user"]["client_id"]) . ")";
+		//* Reseller: If the logged in user is not admin and has sub clients (is a reseller)
+	} elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+		$client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ?", $client_group_id);
+		//$sql_where = " AND (client_id = 0 OR client_id = ".$_SESSION["s"]["user"]["client_id"];
+		$sql_where = " AND (client_id = 0";
+		if($app->functions->intval($client['client_id']) > 0) $sql_where .= " OR client_id = ".$app->functions->intval($client['client_id']);
+		$sql_where .= ")";
+		//* Admin: If the logged in user is admin
+	} else {
+		//$sql_where = '';
+		$client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ?", $client_group_id);
+		//$sql_where = " AND (client_id = 0 OR client_id = ".$_SESSION["s"]["user"]["client_id"];
+		$sql_where = " AND (client_id = 0";
+		if($app->functions->intval($client['client_id']) > 0) $sql_where .= " OR client_id = ".$app->functions->intval($client['client_id']);
+		$sql_where .= ")";
 	}
+
+	if($php_type == 'php-fpm' || ($php_type == 'hhvm' && $server_type == 'nginx')){
+		$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ?".$sql_where, $server_id);
+	} elseif($php_type == 'fast-cgi'){
+		$php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ?".$sql_where, $server_id);
+	}
+	$php_select = "";
+	if(is_array($php_records) && !empty($php_records)) {
+		foreach( $php_records as $php_record) {
+			if($php_type == 'php-fpm' || ($php_type == 'hhvm' && $server_type == 'nginx')){
+				$php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir'];
+			} else {
+				$php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir'];
+			}
+			$json .= '"'.$php_version.'": "'.$php_record['name'].'",';
+		}
+	}
+	unset($php_records);
+	if(substr($json, -1) == ',') $json = substr($json, 0, -1);
+	$json .= '}';
+}
+
+if($type == 'getphptype'){
+	$json = '{"phptype":"';
+	$sql = "SELECT php FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r');
+	$php = $app->db->queryOneRecord($sql, $web_id);
+	$json .= $php['php'];
+	unset($php);
+	$json .= '"}';
+}
+
+if($type == 'getredirecttype'){
+	$json = '{"redirecttype":"';
+	$sql = "SELECT redirect_type FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r');
+	$redirect = $app->db->queryOneRecord($sql, $web_id);
+	$json .= $redirect['redirect_type'];
+	unset($redirect);
+	$json .= '"}';
+}
+
+if($type == 'get_ipv4'){
+	$result = array();
+
+	// ipv4
+	//$result[] = _search('admin', 'server_ip', "AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")");
+	$result[] = $app->functions->suggest_ips('IPv4');
+
+	$json = $app->functions->json_encode($result);
+}
+
+if($type == 'get_ipv6'){
+	$result = array();
+
+	// ipv6
+	//$result[] = _search('admin', 'server_ip', "AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")");
+	$result[] = $app->functions->suggest_ips('IPv6');
+
+	$json = $app->functions->json_encode($result);
+}
+
+if($type == 'getdatabaseusers') {
+	$json = '{}';
+
+	$sql = "SELECT sys_groupid FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r');
+	$group = $app->db->queryOneRecord($sql, $web_id);
+	if($group) {
+		$sql = "SELECT database_user_id, database_user FROM web_database_user WHERE sys_groupid = ?";
+		$records = $app->db->queryAllRecords($sql, $group['sys_groupid']);
+
+		$tmp_array = array();
+		foreach($records as $record) {
+			$tmp_array[$record['database_user_id']] = $record['database_user'];
+		}
+		$json = $app->functions->json_encode($tmp_array);
+		unset($records, $group, $tmp_array);
+	}
+}
+
+if($type == 'get_use_combobox'){
+	$json = '{"usecombobox":"';
+	$use_combobox = 'y';
+	$server_config_array = $app->getconf->get_global_config();
+	if($server_config_array['misc']['use_combobox'] != 'y') $use_combobox = 'n';
+	$json .= $use_combobox;
+	unset($server_config_array);
+	$json .= '"}';
+}
+
+if($type == 'get_use_loadindicator'){
+	$json = '{"useloadindicator":"';
+	$use_loadindicator = 'y';
+	$server_config_array = $app->getconf->get_global_config();
+	if($server_config_array['misc']['use_loadindicator'] != 'y') $use_loadindicator = 'n';
+	$json .= $use_loadindicator;
+	unset($server_config_array);
+	$json .= '"}';
+}
+
+if ($type == 'getdirectivesnippet') {
+	$server_type = 'apache';
+	$web_config = $app->getconf->get_server_config($server_id, 'web');
+	if (!empty($web_config['server_type'])) $server_type = $web_config['server_type'];
+
+	$m_snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id > 0 AND type = ? ORDER BY name ASC", $server_type);
 	
-	if($type == 'getserverid'){
-		$json = '{"serverid":"';
-		$sql = "SELECT server_id FROM web_domain WHERE domain_id = $web_id";
-		$server = $app->db->queryOneRecord($sql);
-		$json .= $server['server_id'];
-		unset($server);
-		$json .= '"}';
+	$snippets = $app->db->queryAllRecords("SELECT directive_snippets_id, name FROM directive_snippets WHERE customer_viewable = 'y' AND active = 'y' AND master_directive_snippets_id = 0 AND type = ? ORDER BY name ASC", $server_type);
+
+	$json = json_encode(array('m_snippets' => $m_snippets, 'snippets' => $snippets));
+}
+
+if($type == 'getclientssldata'){
+	$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $web_id);
+	$sys_group = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE groupid = ?", $web['sys_groupid']);
+	$client = $app->db->queryOneRecord("SELECT * FROM client WHERE client_id = ?", $sys_group['client_id']);
+	if(is_array($client) && !empty($client)){
+		if($client['telephone'] == '' && $client['mobile'] != '') $client['telephone'] = $client['mobile'];
+		
+		$fname = '';
+		$lname = '';
+		$parts = preg_split("/\s+/", $client['contact_name']);
+		if(sizeof($parts) == 2){
+			$fname = $parts[0];
+			$lname = $parts[1];
+		}
+		if(sizeof($parts) > 2){
+			$fname = $parts[0].' ';
+			for($i=1;$i<sizeof($parts);$i++){
+				if($i == (sizeof($parts) - 1)){
+					$lname .= $parts[$i];
+				} else {
+					if(preg_match('@^(von|van|ten|ter|zur|zu|auf|sieber)$@i', $parts[$i])){
+						$lname .= implode(' ', array_slice($parts, $i));
+						break;
+					} else {
+						$fname .= $parts[$i].' ';
+					}
+				}
+			}
+		}
+		$fname = trim($fname);
+		$lname = trim($lname);
+		$client['fname'] = $fname;
+		$client['lname'] = $lname;
+		if(trim($client['company_name']) == '') $client['company_name'] = $fname.' '.$lname;
 	}
+	$json = $app->functions->json_encode($client);
+}
 
 //}
 
+header('Content-type: application/json');
 echo $json;
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1