X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt-dht.py;h=c8d007982cad455ca9e5dba42bcb601fee170072;hb=9400d298505b852ab82e78e1f9b9d82c3f6aeb34;hp=9684f572eca4b6d1c5fd81dd23b10c5fa074b3a7;hpb=925b712a25f84ef20887cd575c86fb9ab2cfa3e5;p=quix0rs-apt-p2p.git diff --git a/apt-dht.py b/apt-dht.py index 9684f57..c8d0079 100644 --- a/apt-dht.py +++ b/apt-dht.py @@ -25,10 +25,11 @@ if __name__ == '__main__': # Parse command line parameters when started on command line class AptDHTOptions(usage.Options): optFlags = [ - ['help', 'h'], + ['help', 'h', 'Print this help message'], ] optParameters = [ ['config-file', 'c', [], "Configuration file"], + ['log-file', 'l', '-', "File to log to, - for stdout"], ] longdesc="apt-dht is a peer-to-peer downloader for apt users" def opt_version(self): @@ -43,31 +44,42 @@ if __name__ == '__main__': sys.exit(1) config_file = opts.opts['config-file'] + log_file = opts.opts['log-file'] + if log_file == '-': + f = sys.stdout + else: + f = open(log_file, 'w') + log.startLogging(f, setStdout=1) config.read(config_file) -if config.defaults()['username']: - uid,gid = pwd.getpwnam(config.defaults()['username'])[2:4] +if config.has_option('DEFAULT', 'username') and config.get('DEFAULT', 'username'): + uid,gid = pwd.getpwnam(config.get('DEFAULT', 'username'))[2:4] else: uid,gid = None,None +log.msg('Starting application') application = service.Application("apt-dht", uid, gid) -print service.IProcess(application).processName -service.IProcess(application).processName = 'apt-dht' +#print service.IProcess(application).processName +#service.IProcess(application).processName = 'apt-dht' -DHT = __import__(config.get('DEFAULT', 'DHT'), globals(), locals(), ['DHT']) -assert(IDHT.implementedBy(DHT.DHT), "You must provide a DHT implementation that implements the IDHT interface.") +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_dht.apt_dht import AptDHT myapp = AptDHT(myDHT) - site = myapp.getSite() - s = strports.service('tcp:'+config.defaults()['port'], channel.HTTPFactory(site)) + factory = myapp.getHTTPFactory() + s = strports.service('tcp:'+config.get('DEFAULT', 'port'), factory) s.setServiceParent(application) +else: + myDHT.loadConfig(config, config.get('DEFAULT', 'DHT')) + myDHT.join() if __name__ == '__main__': # Run on command line - log.startLogging(sys.stdout, setStdout=0) service.IServiceCollection(application).privilegedStartService() service.IServiceCollection(application).startService() reactor.run()