From b31bb1f27f066a2d49f5ab9ee0ca15e985efc788 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Mon, 26 Sep 2011 06:50:23 -0400 Subject: [PATCH] Fixed: FS#1619 - Add apache SNI / SAN support for SSL. --- interface/web/sites/tools.inc.php | 59 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 35 insertions(+), 24 deletions(-) diff --git a/interface/web/sites/tools.inc.php b/interface/web/sites/tools.inc.php index d2a6217..11285e6 100644 --- a/interface/web/sites/tools.inc.php +++ b/interface/web/sites/tools.inc.php @@ -27,43 +27,51 @@ 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') { + /* FS#1234 - CLIENTNAME value when in reseller account - need check this workarround impact */ + //if($_SESSION["s"]["user"]["typ"] != 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { + 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 +83,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']; } } -- Gitblit v1.9.1