From 14ab931624cad23d83df40654c8a81ff9d4d034c Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Mon, 25 Apr 2016 06:55:42 -0400
Subject: [PATCH] Fixed syntax error in new XFS quota code (cron)

---
 server/plugins-available/apache2_plugin.inc.php |   40 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index e635429..f7dd300 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -369,6 +369,22 @@
 			$app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key2, $data['new']['domain']);
 			$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 		}
+		
+		//* Check that the SSL key is not password protected
+		if($data["new"]["ssl_action"] == 'save') {
+			if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) {
+				$data["new"]["ssl_action"] = '';
+			
+				$app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN);
+				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.');
+			
+				/* Update the DB of the (local) Server */
+				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+
+				/* Update also the master-DB of the Server-Farm */
+				$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+			}
+		}
 
 		//* Save a SSL certificate to disk
 		if($data["new"]["ssl_action"] == 'save') {
@@ -860,11 +876,29 @@
 			if($data['new']['hd_quota'] > 0) {
 				$blocks_soft = $data['new']['hd_quota'] * 1024;
 				$blocks_hard = $blocks_soft + 1024;
+                $mb_hard = $mb_soft + 1;
 			} else {
-				$blocks_soft = $blocks_hard = 0;
+				$mb_soft = $mb_hard = $blocks_soft = $blocks_hard = 0;
 			}
-			exec("setquota -u $username $blocks_soft $blocks_hard 0 0 -a &> /dev/null");
-			exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null');
+            
+          // get the primitive folder for document_root and the filesystem, will need it later.
+          $df_output=exec("df -T $document_root|awk 'END{print \$2,\$NF}'");
+          $file_system = explode(" ", $df_output)[0];
+          $primitive_root = explode(" ", $df_output)[1];
+
+		  if ( in_array($file_system , array('ext2','ext3','ext4'), true) ) {
+            exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null');
+            exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null');
+          } elseif ($file_system == 'xfs') {
+
+            exec("xfs_quota -x -c 'limit -g bsoft=$mb_soft" . 'm'. " bhard=$mb_hard" . 'm'. " $username' $primitive_root");
+
+            // xfs only supports timers globally, not per user.
+            exec("xfs_quota -x -c 'timer -bir -i 604800'");
+
+            unset($project_uid, $username_position, $xfs_projects);
+            unset($primitive_root, $df_output, $mb_hard, $mb_soft);
+          }
 		}
 
 		if($this->action == 'insert' || $data["new"]["system_user"] != $data["old"]["system_user"]) {

--
Gitblit v1.9.1