import __main__, os, sys class ZConfig: """ZPublisher Configuration Object""" def __init__(self): d=self.__dict__ for k,v in os.environ.items(): d[k]=v d.update(__main__.__dict__) def __getattr__(self,attr): if hasattr(self.__dict__,attr): return getattr(self.__dict__,attr) else: return self[attr] def get(self,*args): return apply(self.__dict__.get,args) __getitem__ = get def default(self,item,val): setattr(self,item,self.get(item,val)) me = sys.argv[0] # The original executable ZConfig = ZConfig() ZConfig.default('PUBLISHED_MODULE',os.path.splitext(os.path.basename(me))[0]) ZConfig.default('INCLUDE_PATHS',[]) using_symlinks = 0 while me and os.stat(me) != os.lstat(me): me = os.readlink(me); using_symlinks = 1 if using_symlinks: ZConfig.default('MODULE_HOME',os.path.dirname(me)) if ZConfig.INCLUDE_PATHS: sys.path[0:0]=filter(lambda p,pp=sys.path: p not in pp, ZConfig.INCLUDE_PATHS) if ZConfig.MODULE_HOME: cdir=os.path.join(ZConfig.MODULE_HOME,'Components') sys.path[0:0]=[ZConfig.MODULE_HOME,cdir,os.path.join(cdir,sys.platform)] try: import thread except: ZConfig.USE_THREADS = 0 # Don't have threads? Can't use 'em else: ZConfig.default('USE_THREADS',1) # Do have 'em, don't have to use 'em ZConfig.default('SINGLE_THREAD_PUBLISHER',1) # Either way, assume the safe thing. ZConfig.default('MAX_REQUESTS',-1) # Infinite number of requests ZConfig.default('MAX_LIFETIME',0) # Infinite lifetime ZConfig.default('IDLE_TIMEOUT',0) # Infinite idle timeout ZConfig.default('IIS_HACK', string.find(ZConfig.get('SERVER_SOFTWARE',''),'Microsoft-IIS') != -1)