From d87f76019fc231ec20d95126a7fee0487e7be5f0 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 14 Aug 2012 10:56:20 -0400
Subject: [PATCH] - Added new web folder named private to web folder layout. The folder is intended to store data that shall not be visible in the web directory, it is owned by the user of the web. - Changed ownership of web root directory to root user in all security modes to prevent symlink attacks. - Apache log files are now owned by user root. - Improved functions in system library.

---
 interface/web/admin/software_package_list.php |   54 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/interface/web/admin/software_package_list.php b/interface/web/admin/software_package_list.php
index 24c53ec..72d1817 100644
--- a/interface/web/admin/software_package_list.php
+++ b/interface/web/admin/software_package_list.php
@@ -40,7 +40,7 @@
 //* Get the latest packages from the repositorys and insert them in the local database
 $packages_added = 0;
 $repos = $app->db->queryAllRecords("SELECT software_repo_id, repo_url, repo_username, repo_password FROM software_repo WHERE active = 'y'");
-if(is_array($repos)) {
+if(is_array($repos) && isset($_GET['action']) && $_GET['action'] == 'repoupdate' ) {
 	foreach($repos as $repo) {
 		$client = new SoapClient(null, array('location' => $repo['repo_url'],
                                      		 'uri'      => $repo['repo_url']));
@@ -50,15 +50,27 @@
 			foreach($packages as $p) {
 				$package_name = $app->db->quote($p['name']);
 				$tmp = $app->db->queryOneRecord("SELECT package_id FROM software_package WHERE package_name = '$package_name'");
+				
+				$package_title = $app->db->quote($p['title']);
+				$package_description = $app->db->quote($p['description']);
+				$software_repo_id = intval($repo['software_repo_id']);
+				$package_type = $app->db->quote($p['type']);
+				$package_installable = $app->db->quote($p['installable']);
+				$package_requires_db = $app->db->quote($p['requires_db']);
+				$package_remote_functions = $app->db->quote($p['remote_functions']);
+				
 				if(empty($tmp['package_id'])) {
-					
-					$package_title = $app->db->quote($p['title']);
-					$package_description = $app->db->quote($p['description']);
-					$software_repo_id = intval($repo['software_repo_id']);
-					
-					$sql = "INSERT INTO software_package (software_repo_id, package_name, package_title, package_description) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description')";
-					$app->db->query($sql);
+					//$sql = "INSERT INTO software_package (software_repo_id, package_name, package_title, package_description,package_type,package_installable,package_requires_db) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description','$package_type','$package_installable','$package_requires_db')";
+					//$app->db->query($sql);
+					$insert_data = "(software_repo_id, package_name, package_title, package_description,package_type,package_installable,package_requires_db,package_remote_functions) VALUES ($software_repo_id, '$package_name', '$package_title', '$package_description','$package_type','$package_installable','$package_requires_db','$package_remote_functions')";
+					$app->db->datalogInsert('software_package', $insert_data, 'package_id');
 					$packages_added++;
+				} else {
+					//$sql = "UPDATE software_package SET software_repo_id = $software_repo_id, package_title = '$package_title', package_description = '$package_description', package_type = '$package_type', package_installable = '$package_installable', package_requires_db = '$package_requires_db' WHERE package_name = '$package_name'";
+					//$app->db->query($sql);
+					$update_data = "software_repo_id = $software_repo_id, package_title = '$package_title', package_description = '$package_description', package_type = '$package_type', package_installable = '$package_installable', package_requires_db = '$package_requires_db', package_remote_functions = '$package_remote_functions'";
+					//echo $update_data;
+					$app->db->datalogUpdate('software_package', $update_data, 'package_id',$tmp['package_id']);
 				}
 			}
 		}
@@ -92,10 +104,13 @@
                         $tmp = $app->db->queryOneRecord($sql);
                         if(!isset($tmp['software_update_id'])) {
                             // Insert the update in the datbase
-                            $sql = "INSERT INTO software_update (software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) 
-                            VALUES ($software_repo_id, '$package_name', '$update_url', '$update_md5', '$update_dependencies', '$update_title', '$v1', '$v2', '$v3', '$v4', '$type')";
+                            //$sql = "INSERT INTO software_update (software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) 
+                            //VALUES ($software_repo_id, '$package_name', '$update_url', '$update_md5', '$update_dependencies', '$update_title', '$v1', '$v2', '$v3', '$v4', '$type')";
                             //die($sql);
-                            $app->db->query($sql);
+                            //$app->db->query($sql);
+							$insert_data = "(software_repo_id, package_name, update_url, update_md5, update_dependencies, update_title, v1, v2, v3, v4, type) 
+                            VALUES ($software_repo_id, '$package_name', '$update_url', '$update_md5', '$update_dependencies', '$update_title', '$v1', '$v2', '$v3', '$v4', '$type')";
+							$app->db->datalogInsert('software_update', $insert_data, 'software_update_id');
                         }
                         
                     }
@@ -106,6 +121,7 @@
 }
 
 //* Install packages, if GET Request
+/*
 if(isset($_GET['action']) && $_GET['action'] == 'install' && $_GET['package'] != '' && $_GET['server_id'] > 0) {
 	$package_name = $app->db->quote($_GET['package']);
 	$server_id = intval($_GET['server_id']);
@@ -116,8 +132,8 @@
 	$insert_data = "(package_name, server_id, software_update_id, status) VALUES ('$package_name', '$server_id', '$software_update_id','installing')";
 	// $insert_data = "(package_name, server_id, software_update_id, status) VALUES ('$package_name', '$server_id', '$software_update_id','installed')";
 	$app->db->datalogInsert('software_update_inst', $insert_data, 'software_update_inst_id');
-	
 }
+*/
 
 
 
@@ -138,15 +154,19 @@
 			$version = $inst['v1'].'.'.$inst['v2'].'.'.$inst['v3'].'.'.$inst['v4'];
 			
 			if($inst['status'] == 'installed') {
-				$installed_txt .= $s['server_name'].": Installed version $version<br />";
+				$installed_txt .= $s['server_name'].": ".$app->lng("Installed version $version")."<br />";
             } elseif ($inst['status'] == 'installing') {
-                $installed_txt .= $s['server_name'].": Installation in progress<br />";
+                $installed_txt .= $s['server_name'].": ".$app->lng("Installation in progress")."<br />";
             } elseif ($inst['status'] == 'failed') {
-                $installed_txt .= $s['server_name'].": Installation failed<br />";
+                $installed_txt .= $s['server_name'].": ".$app->lng("Installation failed")."<br />";
 			} elseif ($inst['status'] == 'deleting') {
-				$installed_txt .= $s['server_name'].": Deletion in progress<br />";
+				$installed_txt .= $s['server_name'].": ".$app->lng("Deletion in progress")."<br />";
 			} else {
-				$installed_txt .= $s['server_name'].": <a href=\"#\" onClick=\"loadContent('admin/software_package_list.php?action=install&package=".$p["package_name"]."&server_id=".$s["server_id"]."');\">Install now</a><br />";
+				if($p['package_installable'] == 'no') {
+					$installed_txt .= $s['server_name'].": ".$app->lng("Package can not be installed.")."<br />";
+				} else {
+					$installed_txt .= $s['server_name'].": <a href=\"#\" onClick=\"loadContent('admin/software_package_install.php?package=".$p["package_name"]."&server_id=".$s["server_id"]."');\">Install now</a><br />";
+				}
 			}
 		}
 		$packages[$key]['installed'] = $installed_txt;

--
Gitblit v1.9.1