]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - apt-dht.py
Scanning cache directories on startup waits for DHT storeValue to return.
[quix0rs-apt-p2p.git] / apt-dht.py
index 73c3ddef66f9bb96381782abcf1416fcd581a094..70a12640b7c7f5481bd86cdb327c80587a1d9853 100644 (file)
@@ -16,8 +16,8 @@ from twisted.internet import reactor
 from twisted.python import usage, log
 from twisted.web2 import channel
 
-from apt_dht.apt_dht import AptDHT
 from apt_dht.apt_dht_conf import config, version
+from apt_dht.interfaces import IDHT
 
 config_file = []
 
@@ -45,19 +45,31 @@ if __name__ == '__main__':
     config_file = opts.opts['config-file']
 
 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'
 
-myapp = AptDHT()
-site = myapp.getSite()
-s = strports.service('tcp:'+config.defaults()['port'], channel.HTTPFactory(site))
-s.setServiceParent(application)
+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.get('DEFAULT', 'port'), channel.HTTPFactory(site))
+    s.setServiceParent(application)
+else:
+    myDHT.loadConfig(config, config.get('DEFAULT', 'DHT'))
+    myDHT.join()
 
 if __name__ == '__main__':
     # Run on command line