From e28564dbde4f922a6a8263e3dea32d56b60b5b5b Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 16 Jun 2010 11:41:46 -0400 Subject: [PATCH] Implemented: FS#468 - Client name conversion in FTP user too restricted --- interface/web/sites/tools.inc.php | 60 +++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 35 insertions(+), 25 deletions(-) diff --git a/interface/web/sites/tools.inc.php b/interface/web/sites/tools.inc.php index d2a6217..1e87ef9 100644 --- a/interface/web/sites/tools.inc.php +++ b/interface/web/sites/tools.inc.php @@ -27,43 +27,50 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -function replacePrefix($name, $dataRecord){ - $keywordlist=array('CLIENTNAME','CLIENTID'); +function replacePrefix($name, $dataRecord) { + // No input -> no possible output -> go out! + if ($name=="") return ""; - if ($name != '') { - foreach ($keywordlist as $keyword) { - if (substr_count($name, '['.$keyword.']') > 0) { - switch ($keyword) { - case 'CLIENTNAME': - $res=str_replace('['.$keyword.']', getClientName($dataRecord), $name); - break; - case 'CLIENTID': - $res=str_replace('['.$keyword.']', getClientID($dataRecord), $name); - break; - } - } - } - } else { - $res=''; - } - - return $res; + // Array containing keys to search + $keywordlist=array('CLIENTNAME','CLIENTID','DOMAINID'); + + // Try to match the key within the string + foreach ($keywordlist as $keyword) { + if (substr_count($name, '['.$keyword.']') > 0) { + switch ($keyword) { + case 'CLIENTNAME': + $name=str_replace('['.$keyword.']', getClientName($dataRecord),$name); + break; + case 'CLIENTID': + $name=str_replace('['.$keyword.']', getClientID($dataRecord),$name); + break; + case 'DOMAINID': + $name=str_replace('['.$keyword.']', $dataRecord['parent_domain_id'],$name); + break; + } + } + } + return $name; } function getClientName($dataRecord) { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') { + if($_SESSION["s"]["user"]["typ"] != 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { // Get the group-id of the user $client_group_id = $_SESSION["s"]["user"]["default_group"]; } else { // Get the group-id from the data itself if(isset($dataRecord['client_group_id'])) { $client_group_id = $dataRecord['client_group_id']; + } elseif (isset($dataRecord['parent_domain_id'])) { + $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']); + $client_group_id = $tmp['sys_groupid']; } else { $client_group_id = $dataRecord['sys_groupid']; } } + /* get the name of the client */ $tmp = $app->db->queryOneRecord("SELECT name FROM sys_group WHERE groupid = " . $client_group_id); $clientName = $tmp['name']; @@ -75,14 +82,17 @@ function getClientID($dataRecord) { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') { + if($_SESSION["s"]["user"]["typ"] != 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { // Get the group-id of the user $client_group_id = $_SESSION["s"]["user"]["default_group"]; } else { // Get the group-id from the data itself if(isset($dataRecord['client_group_id'])) { $client_group_id = $dataRecord['client_group_id']; - } else { + } elseif (isset($dataRecord['parent_domain_id'])) { + $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']); + $client_group_id = $tmp['sys_groupid']; + } else { $client_group_id = $dataRecord['sys_groupid']; } } @@ -95,9 +105,9 @@ function convertClientName($name){ /** - * only allow 'a'..'z', '_', '0'..'9' + * only allow 'a'..'z', '_', '-', '0'..'9' */ - $allowed = 'abcdefghijklmnopqrstuvwxyz0123456789_'; + $allowed = 'abcdefghijklmnopqrstuvwxyz0123456789_-'; $res = ''; $name = strtolower(trim($name)); for ($i=0; $i < strlen($name); $i++){ -- Gitblit v1.9.1