diff -Naur kforge-0.12-original/src/kforge/apache/apacheconfig.py kforge-0.12/src/kforge/apache/apacheconfig.py --- kforge-0.12-original/src/kforge/apache/apacheconfig.py 2007-02-08 15:45:51.000000000 -0500 +++ kforge-0.12/src/kforge/apache/apacheconfig.py 2007-02-27 19:54:27.000000000 -0500 @@ -86,10 +86,14 @@ @return: string which is apache config """ - result = self.getMediaHost() - # default host automatically included in one of admin and project - result += self.getAdminHostConfig() - result += self.getProjectHostConfig() + if self.dictionary['www.single_host_mode'] == 'true': + # this means we are only using one host, the admin host + result = self.getSingleHostConfig() + else: + result = self.getMediaHost() + # default host automatically included in one of admin and project + result += self.getAdminHostConfig() + result += self.getProjectHostConfig() result = self.doVariableSubstitutionInString(result, self.dictionary) return result @@ -102,16 +106,42 @@ # DEFAULT HOST STUFF ServerAlias ${domain_name} www.${domain_name} """ + + def getSingleHostConfig(self): + urlBuilder = kforge.url.UrlBuilderAdmin() + # runs off django so no doc root needed + #hostFragment = 'DocumentRoot ' + self.dictionary['www.document_root'] + hostFragment = self.getAdminHostFragment() + hostFragment = self.getDefaultHostFragment() + hostFragment + + hostFragment += """ + Alias /%(media_prefix)s %(media_root)s/ + + SetHandler None + + + Order allow,deny + Allow from all + + """ % ( { 'media_prefix' : self.dictionary['www.media_prefix'], + 'media_root' : self.dictionary['www.media_root'] } ) + + urlBuilder = kforge.url.UrlBuilderProject() + hostFragment += self.getProjectHostFragment(urlBuilder) + self.vhostBuilder.hostFragment = hostFragment + self.vhostBuilder.serverName = urlBuilder.getFqdn() + return self.vhostBuilder.getHttp() + self.vhostBuilder.getHttps() + def getMediaHostFragment(self): + return 'DocumentRoot ' + self.dictionary['www.media_root'] + def getMediaHost(self): - hostFragment = 'DocumentRoot ' + self.dictionary['www.media_root'] + hostFragment = self.getMediaHostFragment() self.vhostBuilder.hostFragment = hostFragment self.vhostBuilder.serverName = self.dictionary['www.media_host'] return self.vhostBuilder.getHttp() + self.vhostBuilder.getHttps() - - def getAdminHostConfig(self): - urlBuilder = kforge.url.UrlBuilderAdmin() - # runs off django so no doc root needed + + def getAdminHostFragment(self): hostFragment = """ SetEnv DJANGO_SETTINGS_MODULE kforge.django.settings.main SetHandler python-program @@ -119,22 +149,24 @@ PythonHandler django.core.handlers.modpython PythonDebug %s """ % ( self.dictionary['pythonpath'], self.pythonDebugMode ) + return hostFragment + + def getAdminHostConfig(self): + urlBuilder = kforge.url.UrlBuilderAdmin() + # runs off django so no doc root needed + hostFragment = self.getAdminHostFragment() if self.dictionary['address_scheme_default'] == 'admin': hostFragment = self.getDefaultHostFragment() + hostFragment self.vhostBuilder.hostFragment = hostFragment self.vhostBuilder.serverName = urlBuilder.getFqdn() return self.vhostBuilder.getHttp() + self.vhostBuilder.getHttps() - - def getProjectHostConfig(self): - urlBuilder = kforge.url.UrlBuilderProject() + + def getProjectHostFragment(self, urlBuilder): hostFragment = """ DocumentRoot %s """ % ( urlBuilder.getWebRoot(), ) - if self.dictionary['address_scheme_default'] == 'project': - hostFragment = self.getDefaultHostFragment() + hostFragment - hostFragment += self.getPluginsCommonConfig() for project in self.registry.projects: # have to www last because it is at the base project url which @@ -149,7 +181,15 @@ hostFragment += ''' %s ''' % self.dictionary['www.project_vhost_fragment'] - + return hostFragment + + def getProjectHostConfig(self): + urlBuilder = kforge.url.UrlBuilderProject() + hostFragment = self.getProjectHostFragment(urlBuilder) + + if self.dictionary['address_scheme_default'] == 'project': + hostFragment = self.getDefaultHostFragment() + hostFragment + self.vhostBuilder.hostFragment = hostFragment self.vhostBuilder.serverName = urlBuilder.getFqdn() return self.vhostBuilder.getHttp() + self.vhostBuilder.getHttps() diff -Naur kforge-0.12-original/src/kforge/django/apps/kui/views/base.py kforge-0.12/src/kforge/django/apps/kui/views/base.py --- kforge-0.12-original/src/kforge/django/apps/kui/views/base.py 2007-02-08 15:45:51.000000000 -0500 +++ kforge-0.12/src/kforge/django/apps/kui/views/base.py 2007-02-18 05:22:29.000000000 -0500 @@ -1,4 +1,5 @@ import kforge.django.settings.main +from kforge.url import UrlBuilderProject from dm.view.base import SessionView class KforgeView(SessionView): @@ -13,6 +14,7 @@ def setContext(self, **kwds): super(KforgeView, self).setContext(**kwds) self.context.update({ - 'kforgeProjectHost' : 'project.' + self.dictionary['domain_name'], + 'kforgeProjectHost' : UrlBuilderProject().getFqdn(), + 'systemMediaSocket' : self.context['systemMediaSocket'] + '/' + self.context['mediaPrefix'], }) diff -Naur kforge-0.12-original/src/kforge/re.py kforge-0.12/src/kforge/re.py --- kforge-0.12-original/src/kforge/re.py 2007-02-08 15:45:51.000000000 -0500 +++ kforge-0.12/src/kforge/re.py 2007-02-08 15:51:38.000000000 -0500 @@ -2,6 +2,7 @@ projectName = '[0-9a-z]+' reservedProjectName = 'home|create|find|search|update|delete|purge' +reservedProjectName += '|admin|person|project|create|login|media' pluginName = '[0-9a-z\_\-]+' reservedPluginName = 'home|create|find|search|update|delete|purge' serviceName = '[\w\_\-]+' diff -Naur kforge-0.12-original/src/kforge/url.py kforge-0.12/src/kforge/url.py --- kforge-0.12-original/src/kforge/url.py 2007-02-08 15:45:51.000000000 -0500 +++ kforge-0.12/src/kforge/url.py 2007-02-27 19:25:34.000000000 -0500 @@ -23,7 +23,10 @@ """ Get the fully qualified domain name, e.g. x.y.com """ - return self.getTypeCode() + '.' + self.dictionary['domain_name'] + fqdn = self.getTypeCode() + if fqdn: + fqdn += '.' + return self.dictionary['domain_name'] def getTypeCode(self): "The name of the address scheme." @@ -77,7 +80,10 @@ class UrlBuilderAdmin(UrlBuilderBase): def getTypeCode(self): - return 'admin' + if self.dictionary['www.single_host_mode'] == 'true': + return '' + else: + return 'admin' def getProjectPath(self, project): components = [ @@ -97,7 +103,10 @@ class UrlBuilderProject(UrlBuilderBase): def getTypeCode(self): - return 'project' + if self.dictionary['www.single_host_mode'] == 'true': + return '' + else: + return 'project' def getProjectPath(self, project): components = [