From 6b6719443e2fa859f61e2fc3cff054e927c59635 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Mon, 02 Sep 2013 09:42:54 -0400
Subject: [PATCH] Fixed a issue in raid monitoring. Failed harddrives in software raid5 are not detected correctly.
---
server/plugins-available/ftpuser_base_plugin.inc.php | 22 +++++++++++++++++++++-
1 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/server/plugins-available/ftpuser_base_plugin.inc.php b/server/plugins-available/ftpuser_base_plugin.inc.php
index 42edbb5..66723d2 100644
--- a/server/plugins-available/ftpuser_base_plugin.inc.php
+++ b/server/plugins-available/ftpuser_base_plugin.inc.php
@@ -69,15 +69,25 @@
function insert($event_name,$data) {
global $app, $conf;
+ $app->uses('system');
+
if(!is_dir($data['new']['dir'])) {
$app->log("FTP User directory '".$data['new']['dir']."' does not exist. Creating it now.",LOGLEVEL_DEBUG);
$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id']));
+ //* Check if the resulting path is inside the docroot
+ if(substr($data['new']['dir'],0,strlen($web['document_root'])) != $web['document_root']) {
+ $app->log('User dir is outside of docroot.',LOGLEVEL_WARN);
+ return false;
+ }
+
+ $app->system->web_folder_protection($web['document_root'],false);
exec('mkdir -p '.escapeshellcmd($data['new']['dir']));
exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']);
+ $app->system->web_folder_protection($web['document_root'],true);
- $app->log("Added ftpuser_dir: ".$data['new']['dir'],LOGLEVEL_DEBUG);
+ $app->log("Added ftpuser_dir: ".$data['new']['dir'],LOGLEVEL_DEBUG);
}
}
@@ -85,13 +95,23 @@
function update($event_name,$data) {
global $app, $conf;
+ $app->uses('system');
+
if(!is_dir($data['new']['dir'])) {
$app->log("FTP User directory '".$data['new']['dir']."' does not exist. Creating it now.",LOGLEVEL_DEBUG);
$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".intval($data['new']['parent_domain_id']));
+ //* Check if the resulting path is inside the docroot
+ if(substr($data['new']['dir'],0,strlen($web['document_root'])) != $web['document_root']) {
+ $app->log('User dir is outside of docroot.',LOGLEVEL_WARN);
+ return false;
+ }
+
+ $app->system->web_folder_protection($web['document_root'],false);
exec('mkdir -p '.escapeshellcmd($data['new']['dir']));
exec('chown '.escapeshellcmd($web["system_user"]).':'.escapeshellcmd($web['system_group']).' '.$data['new']['dir']);
+ $app->system->web_folder_protection($web['document_root'],true);
$app->log("Added ftpuser_dir: ".$data['new']['dir'],LOGLEVEL_DEBUG);
}
--
Gitblit v1.9.1