From 992797f73c92b413a7fecff02c27c61b7db55b43 Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Mon, 14 Oct 2013 09:54:49 -0400 Subject: [PATCH] Copied files from svn 3.0.5 stable branch (git migration) --- interface/web/sites/web_vhost_subdomain_edit.php | 105 ++++++++++++++++++++++++++++------------------------ 1 files changed, 57 insertions(+), 48 deletions(-) diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php index 97e84f4..0322726 100644 --- a/interface/web/sites/web_vhost_subdomain_edit.php +++ b/interface/web/sites/web_vhost_subdomain_edit.php @@ -164,53 +164,6 @@ // add limits to template to be able to hide settings foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]); - $sites_config = $app->getconf->get_global_config('sites'); - if($sites_config['reseller_can_use_options']) { - // Directive Snippets - $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'"); - $php_directive_snippets_txt = ''; - if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){ - foreach($php_directive_snippets as $php_directive_snippet){ - $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$php_directive_snippet['snippet'].'</pre></a> '; - } - } - if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------'; - $app->tpl->setVar("php_directive_snippets_txt",$php_directive_snippets_txt); - - if($server_type == 'apache'){ - $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'"); - $apache_directive_snippets_txt = ''; - if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){ - foreach($apache_directive_snippets as $apache_directive_snippet){ - $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$apache_directive_snippet['snippet'].'</pre></a> '; - } - } - if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------'; - $app->tpl->setVar("apache_directive_snippets_txt",$apache_directive_snippets_txt); - } - - if($server_type == 'nginx'){ - $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'"); - $nginx_directive_snippets_txt = ''; - if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){ - foreach($nginx_directive_snippets as $nginx_directive_snippet){ - $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$nginx_directive_snippet['snippet'].'</pre></a> '; - } - } - if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------'; - $app->tpl->setVar("nginx_directive_snippets_txt",$nginx_directive_snippets_txt); - } - - $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'"); - $proxy_directive_snippets_txt = ''; - if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ - foreach($proxy_directive_snippets as $proxy_directive_snippet){ - $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$proxy_directive_snippet['snippet'].'</pre></a> '; - } - } - if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; - $app->tpl->setVar("proxy_directive_snippets_txt",$proxy_directive_snippets_txt); - } //* Admin: If the logged in user is admin } else { @@ -529,6 +482,62 @@ $app->tform->errorMessage .= $app->tform->lng("error_php_fpm_pm_settings_txt").'<br>'; } } + + // Check rewrite rules + $server_type = $web_config['server_type']; + + if($server_type == 'nginx' && isset($this->dataRecord['rewrite_rules']) && trim($this->dataRecord['rewrite_rules']) != '') { + $rewrite_rules = trim($this->dataRecord['rewrite_rules']); + $rewrites_are_valid = true; + // use this counter to make sure all curly brackets are properly closed + $if_level = 0; + // Make sure we only have Unix linebreaks + $rewrite_rules = str_replace("\r\n", "\n", $rewrite_rules); + $rewrite_rules = str_replace("\r", "\n", $rewrite_rules); + $rewrite_rule_lines = explode("\n", $rewrite_rules); + if(is_array($rewrite_rule_lines) && !empty($rewrite_rule_lines)){ + foreach($rewrite_rule_lines as $rewrite_rule_line){ + // ignore comments + if(substr(ltrim($rewrite_rule_line),0,1) == '#') continue; + // empty lines + if(trim($rewrite_rule_line) == '') continue; + // rewrite + if(preg_match('@^\s*rewrite\s+(^/)?\S+(\$)?\s+\S+(\s+(last|break|redirect|permanent|))?\s*;\s*$@', $rewrite_rule_line)) continue; + // if + if(preg_match('@^\s*if\s+\(\s*\$\S+(\s+(\!?(=|~|~\*))\s+(\S+|\".+\"))?\s*\)\s*\{\s*$@', $rewrite_rule_line)){ + $if_level += 1; + continue; + } + // if - check for files, directories, etc. + if(preg_match('@^\s*if\s+\(\s*\!?-(f|d|e|x)\s+\S+\s*\)\s*\{\s*$@', $rewrite_rule_line)){ + $if_level += 1; + continue; + } + // break + if(preg_match('@^\s*break\s*;\s*$@', $rewrite_rule_line)){ + continue; + } + // return code [ text ] + if(preg_match('@^\s*return\s+\d\d\d.*;\s*$@', $rewrite_rule_line)) continue; + // return code URL + // return URL + if(preg_match('@^\s*return(\s+\d\d\d)?\s+(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*\@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*\s*;\s*$@', $rewrite_rule_line)) continue; + // set + if(preg_match('@^\s*set\s+\$\S+\s+\S+\s*;\s*$@', $rewrite_rule_line)) continue; + // closing curly bracket + if(trim($rewrite_rule_line) == '}'){ + $if_level -= 1; + continue; + } + $rewrites_are_valid = false; + break; + } + } + + if(!$rewrites_are_valid || $if_level != 0){ + $app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>'; + } + } parent::onSubmit(); } @@ -600,4 +609,4 @@ $page = new page_action; $page->onLoad(); -?> +?> \ No newline at end of file -- Gitblit v1.9.1