1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# Copyright 2004-2005 Canonical Ltd. All rights reserved.
# Twisted Application Configuration file.
# Use with "twistd2.4 -y <file.tac>", e.g. "twistd -noy server.tac"
import os
from twisted.application import service, internet, strports
from twisted.web import server
from canonical.config import config, dbconfig
from canonical.launchpad.daemons import tachandler
from canonical.launchpad.scripts import execute_zcml_for_scripts
from canonical.librarian.libraryprotocol import FileUploadFactory
from canonical.librarian import storage, db
from canonical.librarian import web as fatweb
# Connect to database
dbconfig.setConfigSection('librarian')
execute_zcml_for_scripts()
# Our version of twisted doesn't allow easily to add command-line
# parameters, so we use an environment variable to switch between
# starting the restricted or standard libarian.
restricted = 'RESTRICTED_LIBRARIAN' in os.environ
if restricted:
applicationName = 'RestrictedLibrarian'
uploadPort = config.librarian.restricted_upload_port
webPort = config.librarian.restricted_download_port
else:
applicationName = 'Librarian'
uploadPort = config.librarian.upload_port
webPort = config.librarian.download_port
application = service.Application(applicationName)
librarianService = service.IServiceCollection(application)
# Service that announces when the daemon is ready
tachandler.ReadyService().setServiceParent(librarianService)
path = config.librarian_server.root
storage = storage.LibrarianStorage(path, db.Library(restricted))
f = FileUploadFactory(storage)
strports.service(str(uploadPort), f).setServiceParent(librarianService)
if config.librarian_server.upstream_host:
upstreamHost = config.librarian_server.upstream_host
upstreamPort = config.librarian_server.upstream_port
print 'Using upstream librarian http://%s:%d' % (
upstreamHost, upstreamPort)
else:
upstreamHost = upstreamPort = None
root = fatweb.LibraryFileResource(storage, upstreamHost, upstreamPort)
root.putChild('search', fatweb.DigestSearchResource(storage))
root.putChild('robots.txt', fatweb.robotsTxt)
site = server.Site(root)
site.displayTracebacks = False
strports.service(str(webPort), site).setServiceParent(librarianService)
|