def __init__(self, controlSocket, parentService, port, enableStaggering, staggerSeconds, reactor=None): if reactor is None: from twisted.internet import reactor from twisted.application.strports import service as strPortsService if port: # Service which listens for client subscriptions and sends # notifications to them strPortsService(str(port), AMPPushNotifierFactory(self), reactor=reactor).setServiceParent(parentService) if controlSocket is not None: # Set up the listener which gets notifications from the slaves controlSocket.addFactory(PUSH_ROUTE, AMPPushMasterListenerFactory(self)) self.subscribers = [] if enableStaggering: self.scheduler = PushScheduler(reactor, self.sendNotification, staggerSeconds=staggerSeconds) else: self.scheduler = None
def __init__( self, controlSocket, parentService, port, enableStaggering, staggerSeconds, reactor=None ): if reactor is None: from twisted.internet import reactor from twisted.application.strports import service as strPortsService if port: # Service which listens for client subscriptions and sends # notifications to them strPortsService( str(port), AMPPushNotifierFactory(self), reactor=reactor).setServiceParent(parentService) if controlSocket is not None: # Set up the listener which gets notifications from the slaves controlSocket.addFactory( PUSH_ROUTE, AMPPushMasterListenerFactory(self) ) self.subscribers = [] if enableStaggering: self.scheduler = PushScheduler( reactor, self.sendNotification, staggerSeconds=staggerSeconds) else: self.scheduler = None
def makeService(self, options): """ Return a service """ try: from setproctitle import setproctitle except ImportError: pass else: setproctitle("CalendarServer Directory Proxy Service") try: directory = directoryFromConfig(config) except Exception as e: log.error("Failed to create directory service", error=e) raise log.info("Created directory service") return strPortsService( "unix:{path}:mode=660".format( path=config.DirectoryProxy.SocketPath ), DirectoryProxyAMPFactory(directory) )
def makeService(self, options): """ Return a service """ try: from setproctitle import setproctitle except ImportError: pass else: setproctitle("CalendarServer Directory Proxy Service") # Setup default logging behavior multiService = ErrorLoggingMultiService(False, "", 0, 0, False) try: pool, txnFactory = getDBPool(config) store = storeFromConfigWithDPSServer(config, txnFactory) pool.setServiceParent(multiService) except Exception as e: log.error("Failed to create directory service", error=e) raise # # Configure Memcached Client Pool # memcachepool.installPools( config.Memcached.Pools, config.Memcached.MaxClients, ) log.info("Created directory service") dpsService = strPortsService( "unix:{path}:mode=660".format( path=config.DirectoryProxy.SocketPath), DirectoryProxyAMPFactory(store.directoryService())) dpsService.setServiceParent(multiService) if config.Manhole.Enabled: try: from twisted.conch.manhole_tap import (makeService as manholeMakeService) portString = "tcp:{:d}:interface=127.0.0.1".format( config.Manhole.DPSPortNumber) manholeService = manholeMakeService({ "sshPort": portString if config.Manhole.UseSSH is True else None, "telnetPort": portString if config.Manhole.UseSSH is False else None, "sshKeyDir": config.DataRoot, "sshKeyName": "manhole.key", "sshKeySize": 4096, "passwd": config.Manhole.PasswordFilePath, "namespace": { "config": config, "service": dpsService, "store": store, "directory": store.directoryService(), }, }) manholeService.setServiceParent(multiService) # Using print(because logging isn't ready at this point) print("Manhole access enabled:", portString) except ImportError: print("Manhole access could not enabled because " "manhole_tap could not be imported") return multiService
def makeService(self, options): """ Return a service """ try: from setproctitle import setproctitle except ImportError: pass else: setproctitle("CalendarServer Directory Proxy Service") multiService = MultiService() try: pool, txnFactory = getDBPool(config) store = storeFromConfigWithDPSServer(config, txnFactory) pool.setServiceParent(multiService) except Exception as e: log.error("Failed to create directory service", error=e) raise # # Configure Memcached Client Pool # memcachepool.installPools( config.Memcached.Pools, config.Memcached.MaxClients, ) log.info("Created directory service") dpsService = strPortsService( "unix:{path}:mode=660".format( path=config.DirectoryProxy.SocketPath ), DirectoryProxyAMPFactory(store.directoryService()) ) dpsService.setServiceParent(multiService) if config.Manhole.Enabled: try: from twisted.conch.manhole_tap import ( makeService as manholeMakeService ) portString = "tcp:{:d}:interface=127.0.0.1".format( config.Manhole.DPSPortNumber ) manholeService = manholeMakeService({ "sshPort": None, "telnetPort": portString, "namespace": { "config": config, "service": dpsService, "store": store, "directory": store.directoryService(), }, "passwd": config.Manhole.PasswordFilePath, }) manholeService.setServiceParent(multiService) # Using print(because logging isn't ready at this point) print("Manhole access enabled:", portString) except ImportError: print( "Manhole access could not enabled because " "manhole_tap could not be imported" ) return multiService