X-Git-Url: https://git.mxchange.org/?p=quix0rs-apt-p2p.git;a=blobdiff_plain;f=apt-p2p.py;h=277cd76a93e25747165669f8fa1214c09e41bb23;hp=687320473f8065e81b6c575a4d7e9244ae39c1d9;hb=8c18aac4790e10c1126108ab4b71b19e148045db;hpb=7b1167d8ce780312d3689c9309c7e9c64060c085 diff --git a/apt-p2p.py b/apt-p2p.py index 6873204..277cd76 100644 --- a/apt-p2p.py +++ b/apt-p2p.py @@ -14,10 +14,9 @@ import pwd,sys from twisted.application import service, internet, app, strports from twisted.internet import reactor from twisted.python import usage, log -from twisted.web2 import channel from apt_p2p.apt_p2p_conf import config, version, DEFAULT_CONFIG_FILES -from apt_p2p.interfaces import IDHT +from apt_p2p.interfaces import IDHT, IDHTStatsFactory config_file = '' @@ -54,31 +53,37 @@ if __name__ == '__main__': log.msg("Loading config files: '%s'" % "', '".join(DEFAULT_CONFIG_FILES + [config_file])) config_read = config.read(DEFAULT_CONFIG_FILES + [config_file]) log.msg("Successfully loaded config files: '%s'" % "', '".join(config_read)) -if config.has_option('DEFAULT', 'username') and config.get('DEFAULT', 'username'): - uid,gid = pwd.getpwnam(config.get('DEFAULT', 'username'))[2:4] -else: +try: + uid,gid = pwd.getpwnam(config.get('DEFAULT', 'USERNAME'))[2:4] +except: uid,gid = None,None -log.msg('Starting application') +log.msg('Starting application with uid/gid %r/%r' % (uid, gid)) application = service.Application("apt-p2p", uid, gid) #print service.IProcess(application).processName #service.IProcess(application).processName = 'apt-p2p' -log.msg('Starting DHT') DHT = __import__(config.get('DEFAULT', 'DHT')+'.DHT', globals(), locals(), ['DHT']) assert IDHT.implementedBy(DHT.DHT), "You must provide a DHT implementation that implements the IDHT interface." -myDHT = DHT.DHT() if not config.getboolean('DEFAULT', 'DHT-only'): log.msg('Starting main application server') from apt_p2p.apt_p2p import AptP2P - myapp = AptP2P(myDHT) - factory = myapp.getHTTPFactory() + factory = AptP2P(DHT.DHT) s = strports.service('tcp:'+config.get('DEFAULT', 'port'), factory) s.setServiceParent(application) else: - myDHT.loadConfig(config, config.get('DEFAULT', 'DHT')) - myDHT.join() + log.msg('Starting the DHT') + myDHT = DHT.DHT() + + if IDHTStatsFactory.implementedBy(DHT.DHT): + log.msg("Starting the DHT's HTTP stats displayer") + factory = myDHT.getStatsFactory() + s = strports.service('tcp:'+config.get('DEFAULT', 'port'), factory) + s.setServiceParent(application) + + reactor.callLater(0, myDHT.loadConfig, config, config.get('DEFAULT', 'DHT')) + reactor.callLater(0, myDHT.join) if __name__ == '__main__': # Run on command line