From 41d6bf1f90cf0baf703d3af4d1802ae73123efe4 Mon Sep 17 00:00:00 2001 From: Gabriel Monnerat <gabriel@tiolive.com> Date: Fri, 15 Jul 2011 01:14:40 -0300 Subject: [PATCH] refactor code to create only one file to define all virtual hosts --- slapos/recipe/apache/__init__.py | 25 ++++++++++---------- slapos/recipe/apache/template/apache.conf.in | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/slapos/recipe/apache/__init__.py b/slapos/recipe/apache/__init__.py index a77079e1c..6454a3431 100644 --- a/slapos/recipe/apache/__init__.py +++ b/slapos/recipe/apache/__init__.py @@ -64,7 +64,7 @@ class Recipe(BaseSlapRecipe): port=8080, name=frontend_domain_name, key=key, certificate=certificate) - self.setConnectionDict(dict(site_url=site_url, )) + self.setConnectionDict(dict(site_url=site_url)) return self.path_list def installLogrotate(self): @@ -203,23 +203,22 @@ class Recipe(BaseSlapRecipe): apache_conf['pid_file'] + ' SIGUSR1') return apache_conf - def generateNewId(self): - """Temporary way to generate id""" - import random - return str(random.randint(2**9,9**9)) + def generateRewriteRule(self, parameter_dict): + return "RewriteRule ^/%(id)s($|/.*) %(url)s/VirtualHostBase/" % parameter_dict + \ + "https/%(domain)s:%(port)s/VirtualHostRoot/_vh_%(id)s$1 [L,P]" % parameter_dict def installFrontendApache(self, ip, port, key, certificate, name, access_control_string=None): - rewrite_rule_include_path = self.createDataDirectory('apachevhost') + vhost_name = "apachevhost.conf" slave_instance_list = self.parameter_dict.get("slave_instance_list", []) + rewrite_rule_list = [] for slave_instance in slave_instance_list: - id = self.generateNewId() url = slave_instance.get("url") - rewrite_rule_content = self.substituteTemplate( - self.getTemplateFilename('apache.vhost.conf.in'), - dict(id=id, ip=ip, port=port, domain=name, url=url)) - self._writeFile(os.path.join(rewrite_rule_include_path, id), - rewrite_rule_content) + id = str(slave_instance_list.index(slave_instance)) + vhost_dict = dict(id=id, ip=ip, port=port, + domain=name, url=url) + rewrite_rule_list.append(self.generateRewriteRule(vhost_dict)) + self.createConfigurationFile(vhost_name, "\n".join(rewrite_rule_list)) apache_conf = self._getApacheConfigurationDict(name, ip, port) apache_conf['ssl_snippet'] = self.substituteTemplate( self.getTemplateFilename('apache.ssl-snippet.conf.in'), @@ -231,7 +230,7 @@ class Recipe(BaseSlapRecipe): apache_conf.update(**dict( path_enable=path, - rewrite_rule_include_path=rewrite_rule_include_path + rewrite_rule_path=os.path.join(self.etc_directory, vhost_name), )) apache_conf_string = self.substituteTemplate( diff --git a/slapos/recipe/apache/template/apache.conf.in b/slapos/recipe/apache/template/apache.conf.in index 6900e4fc7..28d2de99c 100644 --- a/slapos/recipe/apache/template/apache.conf.in +++ b/slapos/recipe/apache/template/apache.conf.in @@ -37,7 +37,7 @@ CustomLog "%(access_log)s" common # Magic of Zope related rewrite RewriteEngine On -Include %(rewrite_rule_include_path)s/*.conf +Include %(rewrite_rule_path)s # List of modules LoadModule authz_host_module modules/mod_authz_host.so -- 2.30.9