3 # Load apt-dht application
5 # There are two ways apt-dht can be started:
7 # - twistd will load this file and execute the app
8 # in 'application' variable
10 # - __name__ will be '__main__'
14 from twisted.application import service, internet, app, strports
15 from twisted.internet import reactor
16 from twisted.python import usage, log
17 from twisted.web2 import channel
19 from apt_dht import AptDHT
20 from apt_dht_conf import config
24 if __name__ == '__main__':
25 # Parse command line parameters when started on command line
26 class AptDHTOptions(usage.Options):
31 ['config-file', 'c', None, "Configuration file"],
33 longdesc="apt-dht is a peer-to-peer downloader for apt users"
34 def opt_version(self):
38 opts = AptDHTOptions()
41 except usage.UsageError, ue:
42 print '%s: %s' % (sys.argv[0], ue)
45 config_file = opts.opts['config-file']
47 config.read(config_file)
48 if config.defaults()['username']:
49 uid,gid = pwd.getpwnam(config.defaults()['username'])[2:4]
53 application = service.Application("apt-dht", uid, gid)
54 print service.IProcess(application).processName
55 service.IProcess(application).processName = 'apt-dht'
58 site = myapp.getSite()
59 s = strports.service('tcp:'+config.defaults()['port'], channel.HTTPFactory(site))
60 s.setServiceParent(application)
62 if __name__ == '__main__':
64 log.startLogging(sys.stdout, setStdout=0)
65 service.IServiceCollection(application).privilegedStartService()
66 service.IServiceCollection(application).startService()