From dba68fcdf2d3e25ad1f3301fcb128edfb3da745b Mon Sep 17 00:00:00 2001 From: tbrehm Date: Thu, 22 Sep 2011 12:14:04 +0000 Subject: [PATCH] Bugfixes in installer and apache plugin. --- install/lib/installer_base.lib.php | 21 +- install/lib/update.lib.php | 21 +- server/conf/squidRewriteRules.py.master | 196 ------------------ .../plugins-available/apache2_plugin.inc.php | 34 +-- 4 files changed, 39 insertions(+), 233 deletions(-) delete mode 100644 server/conf/squidRewriteRules.py.master diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index d1fee8a0ad..ef55210316 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -233,17 +233,18 @@ class installer_base { $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path']; $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path']; + $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; + $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; + $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; + $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; + $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; + $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; + $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; + $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; + $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; + $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; + if ($conf['nginx']['installed'] == true) { - $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; - $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; - $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; - $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; - $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; - $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; - $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; - $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; - $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; - $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; $tpl_ini_array['web']['server_type'] = 'nginx'; $tpl_ini_array['global']['webserver'] = 'nginx'; } diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php index 3f969c3f76..7d2464b07e 100644 --- a/install/lib/update.lib.php +++ b/install/lib/update.lib.php @@ -260,17 +260,18 @@ function updateDbAndIni() { $tpl_ini_array['dns']['named_conf_path'] = $conf['bind']['named_conf_path']; $tpl_ini_array['dns']['named_conf_local_path'] = $conf['bind']['named_conf_local_path']; + $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; + $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; + $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; + $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; + $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; + $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; + $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; + $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; + $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; + $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; + if ($conf['nginx']['installed'] == true) { - $tpl_ini_array['web']['nginx_vhost_conf_dir'] = $conf['nginx']['vhost_conf_dir']; - $tpl_ini_array['web']['nginx_vhost_conf_enabled_dir'] = $conf['nginx']['vhost_conf_enabled_dir']; - $tpl_ini_array['web']['nginx_user'] = $conf['nginx']['user']; - $tpl_ini_array['web']['nginx_group'] = $conf['nginx']['group']; - $tpl_ini_array['web']['nginx_cgi_socket'] = $conf['nginx']['cgi_socket']; - $tpl_ini_array['web']['php_fpm_init_script'] = $conf['nginx']['php_fpm_init_script']; - $tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path']; - $tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir']; - $tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port']; - $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir']; $tpl_ini_array['web']['server_type'] = 'nginx'; $tpl_ini_array['global']['webserver'] = 'nginx'; } diff --git a/server/conf/squidRewriteRules.py.master b/server/conf/squidRewriteRules.py.master deleted file mode 100644 index a8a241b9b4..0000000000 --- a/server/conf/squidRewriteRules.py.master +++ /dev/null @@ -1,196 +0,0 @@ -""" -/********************************************************************** -FILE : $RCSfile: squidRewriteRules.py,v $ -PURPOSE : Rule set for icoya redirector -NOTES : -AUTHOR : Simon Eisenmann -COPYRIGHT: (c) 2003,2004 by struktur AG -DATE : 28JAN2003 -REVISION : $Revision: 1.12 $ -VERSION : $Id: squidRewriteRules.py,v 1.12 2004/08/06 08:16:19 longsleep Exp $ (Author: $Author: longsleep $) - -struktur AG Phone: +49 711 8966560 -Junghansstr. 5 Fax: +49 711 89665610 -70469 Stuttgart email: info@struktur.de -GERMANY - -http://www.struktur.de -http://www.strukturag.com - -**********************************************************************/ - - Reloadable module allows arbitrary url transformations. - - - Automatic reload of the rules - +++++++++++++++++++++++++++++++++++ - - NOTE: use the reload after parameter to auto reload this module - after x requests. Use -1 to disable auto reload - - - Logging - +++++++++++++++++++++++++++++++++++ - - NOTE: set debug to 1 to enable logging - define the logfile in the logfile variable (enter full path) - - -""" -import re, sys - -try: - import py -except ImportError: - pass - -""" -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -begin of configuration -""" - -# log mode (set to 1 to enable logging) -debug = 0 - -# logfile for debugging (only required when debug == 1) -logfile = "/etc/squid/redirector_class.log" - -# set this to -1 to get best performance (no reload) -reload_after = -1 - -# define sitemap matching regex mapping - -# MODIFY THIS REWRITE RULE AS NEEDED FOR YOUR SITE - -rewrites = ( - -### HTTP SSL/encrypted webmail rewrite ### You can use this as an example for your ssl virtualhosted website - - - (r'{tmpl_var name="rewrite_url_src"}', r'{tmpl_var name="rewrite_url_dest"}\1', 'P,L'), - - - - - - -) - - - -""" -end of configuration -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -""" - -compiled_rewrites = None - -def log(s): - """ Logging facility. - """ - try: - f = open(logfile, "a") - except IOError: - print >> sys.stderr, s - return - f.write('%s\n' % s) - f.flush() - f.close() - -def init(): - global compiled_rewrites - - compiled_rewrites = [] - for rewrite in rewrites: - regexp = re.compile(rewrite[0]) - template = rewrite[1] - flags = {} - for flag in rewrite[2].split(','): - parts = flag.split('=') - flag = parts[0] - option = None - if flag == 'R': - if len(parts) > 1: - option = "%s:" % parts[1] - else: - option = '302:' - flags[flag] = option - compiled = (regexp, template, flags) - if debug: - log('compiled: %s' % str((regexp.pattern, template, flags))) - compiled_rewrites.append(compiled) - compiled_rewrites = tuple(compiled_rewrites) - -def rewrite(url, src_address=''): - """ just rewrites urls. - """ - - if debug: - log("args: %s" % str((url, src_address))) - - newurl = None - for regexp, template, flags in compiled_rewrites: - m = regexp.match(url) - if m is not None and template != '-': - if debug: - log("match.groups ('%s'): %s" % (regexp.pattern, str(m.groups()))) - url = newurl = "%s%s" % (flags.get('R', ''), m.expand(template)) - if debug: - log('newurl: %s' % newurl) - if 'L' in flags: - break - - if newurl is not None: - if debug: - log('finalurl: %s' % newurl) - return newurl - - # redirect to something we can match by a squid acl - # this special non existing domain should be denied - # by squid with a http_reply_access line - return "http://denypool/denyme" - -def test_foobar_redirection(): - assert rewrite('http://foobar.com/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://foobar.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://www.foobar.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://foobar-portal.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://www.foobar-portal.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://foobar-portal-europe.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - assert rewrite('http://www.foobar-portal-europe.de/foo/bar') == '302:http://www.foobar.com/foo/bar' - # shouldn't redirect, just rewrite - assert not rewrite('http://www.foobar.com/foo/bar').startswith('302:') - -def test_foobarbacon_redirection(): - assert rewrite('http://foobar-bacon.com/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://foobar-bacon.de/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://www.foobar-bacon.de/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://foobar-bacon-europe.de/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://www.foobar-bacon-europe.de/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://foobar-bacon-europe.com/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://www.foobar-bacon-europe.com/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://foobar-bacon.net/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - assert rewrite('http://www.foobar-bacon.net/foo/bar') == '302:http://www.foobar-bacon.com/foo/bar' - # shouldn't redirect, just rewrite - assert not rewrite('http://www.foobar-bacon.com/foo/bar').startswith('302:') - -def test_virtual_hosting(): - assert rewrite('http://www.foobar.com/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar.com/foobarportal/VirtualHostRoot/foo/bar' - assert rewrite('http://www.foobar.com:8088/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar.com:8088/foobarportal/VirtualHostRoot/foo/bar' - assert rewrite('http://www.foobar-bacon.com/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar-bacon.com/foobarbacon/VirtualHostRoot/foo/bar' - assert rewrite('http://www.foobar-bacon.com:8088/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar-bacon.com:8088/foobarbacon/VirtualHostRoot/foo/bar' - -def test_zmi(): - assert rewrite('http://www.foobar.com/--zmi--/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar.com/VirtualHostRoot/_vh_--zmi--/foo/bar' - assert rewrite('http://www.foobar.com:8088/--zmi--/foo/bar') == 'http://backendpool/VirtualHostBase/http/www.foobar.com:8088/VirtualHostRoot/_vh_--zmi--/foo/bar' - -def test_repos(): - assert rewrite('http://www.foobar.com/--repos--/foo/bar') == 'http://localhost/--repos--/foo/bar' - assert rewrite('http://www.foobar.com:8088/--repos--/foo/bar') == 'http://localhost/--repos--/foo/bar' - -if debug: - log("reloading user redirector module") -init() -if debug: - log("reloaded user redirector module") - diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 51c6a66c63..7a66b811cd 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -289,6 +289,23 @@ class apache2_plugin { $app->log('Websites cannot be owned by the root user or group.',LOGLEVEL_WARN); return 0; } + + // Create group and user, if not exist + $app->uses('system'); + + $groupname = escapeshellcmd($data['new']['system_group']); + if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { + exec('groupadd '.$groupname); + if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); + $app->log('Adding the group: '.$groupname,LOGLEVEL_DEBUG); + } + + $username = escapeshellcmd($data['new']['system_user']); + if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { + exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false"); + if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false"); + $app->log('Adding the user: '.$username,LOGLEVEL_DEBUG); + } //* If the client of the site has been changed, we have a change of the document root if($this->action == 'update' && $data['new']['document_root'] != $data['old']['document_root']) { @@ -511,23 +528,6 @@ class apache2_plugin { exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path); } // end copy error docs - // Create group and user, if not exist - $app->uses('system'); - - $groupname = escapeshellcmd($data['new']['system_group']); - if($data['new']['system_group'] != '' && !$app->system->is_group($data['new']['system_group'])) { - exec('groupadd '.$groupname); - if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' groupadd '.$groupname); - $app->log('Adding the group: '.$groupname,LOGLEVEL_DEBUG); - } - - $username = escapeshellcmd($data['new']['system_user']); - if($data['new']['system_user'] != '' && !$app->system->is_user($data['new']['system_user'])) { - exec('useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false"); - if($apache_chrooted) $this->_exec('chroot '.escapeshellcmd($web_config['website_basedir']).' useradd -d '.escapeshellcmd($data['new']['document_root'])." -g $groupname -G sshusers $username -s /bin/false"); - $app->log('Adding the user: '.$username,LOGLEVEL_DEBUG); - } - // Set the quota for the user if($username != '' && $app->system->is_user($username)) { if($data['new']['hd_quota'] > 0) { -- GitLab