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 = [