~launchpad-pqm/launchpad/devel

12221.16.16 by Andrew Bennetts
Reorder some imports and update copyright years as requested by Aaron's review.
1
# Copyright 2009-2011 Canonical Ltd.  This software is licensed under the
8687.15.8 by Karl Fogel
Add the copyright header block to more files.
2
# GNU Affero General Public License version 3 (see the file LICENSE).
3
0.1.8 by Andrew Bennetts
Copyright notices, explain how to use .tac file
4
# This is a Twisted application config file.  To run, use:
5
#     twistd -noy sftp.tac
6
# or similar.  Refer to the twistd(1) man page for details.
7
3858.1.12 by jml at canonical
Make the SFTP tac file use the service defined in c.l.daemons.sftp
8
from twisted.application import service
12221.16.4 by Andrew Bennetts
Move new stuff to new lp.services.twistedsupport.gracefulshutdown module, add OrderedMultiService.
9
from twisted.protocols.policies import TimeoutFactory
3858.1.12 by jml at canonical
Make the SFTP tac file use the service defined in c.l.daemons.sftp
10
14605.1.1 by Curtis Hovey
Moved canonical.config to lp.services.
11
from lp.services.config import config
14600.2.6 by Curtis Hovey
Moved daemons to lp.services.
12
from lp.services.daemons import readyservice
10693.2.11 by Jonathan Lange
Parametrize a bunch of other things
13
10693.3.27 by Jonathan Lange
Move the codehosting-specific stuff out of service and into daemon
14
from lp.codehosting.sshserver.daemon import (
12221.16.16 by Andrew Bennetts
Reorder some imports and update copyright years as requested by Aaron's review.
15
    ACCESS_LOG_NAME,
16
    get_key_path,
17
    LOG_NAME,
18
    make_portal,
19
    OOPS_CONFIG_SECTION,
20
    PRIVATE_KEY_FILE,
21
    PUBLIC_KEY_FILE,
22
    )
10693.5.6 by Jonathan Lange
Move the service logic
23
from lp.services.sshserver.service import SSHService
12221.16.4 by Andrew Bennetts
Move new stuff to new lp.services.twistedsupport.gracefulshutdown module, add OrderedMultiService.
24
from lp.services.twistedsupport.gracefulshutdown import (
12221.16.16 by Andrew Bennetts
Reorder some imports and update copyright years as requested by Aaron's review.
25
    ConnTrackingFactoryWrapper,
26
    make_web_status_service,
27
    OrderedMultiService,
28
    ShutdownCleanlyService,
29
    )
10693.2.7 by Jonathan Lange
Parametrize the portal in the SSH service
30
31
10693.2.8 by Jonathan Lange
Fix old, old comment
32
# Construct an Application that has the codehosting SSH server.
0.1.3 by Andrew Bennetts
Remove cruft, flesh out the code and a sample tac file a bit more
33
application = service.Application('sftponly')
12221.16.1 by Andrew Bennetts
Initial hackery towards #702024.
34
12221.16.4 by Andrew Bennetts
Move new stuff to new lp.services.twistedsupport.gracefulshutdown module, add OrderedMultiService.
35
ordered_services = OrderedMultiService()
36
ordered_services.setServiceParent(application)
37
12221.16.1 by Andrew Bennetts
Initial hackery towards #702024.
38
tracked_factories = set()
39
12221.16.13 by Andrew Bennetts
Add make_web_status_service function to simplify the tac file.
40
web_svc = make_web_status_service(
41
    config.codehosting.web_status_port, tracked_factories)
42
web_svc.setServiceParent(ordered_services)
43
44
shutdown_cleanly_svc = ShutdownCleanlyService(tracked_factories)
45
shutdown_cleanly_svc.setServiceParent(ordered_services)
46
47
def ssh_factory_decorator(factory):
12221.16.15 by Andrew Bennetts
Docstrings and cosmetic code changes requested by Aaron's review.
48
    """Add idle timeouts and connection tracking to a factory."""
12221.16.1 by Andrew Bennetts
Initial hackery towards #702024.
49
    f = TimeoutFactory(factory, timeoutPeriod=config.codehosting.idle_timeout)
12221.16.10 by Andrew Bennetts
Add some tests for ConnTrackingFactoryWrapper.
50
    f = ConnTrackingFactoryWrapper(f)
12221.16.1 by Andrew Bennetts
Initial hackery towards #702024.
51
    tracked_factories.add(f)
52
    return f
53
10693.2.9 by Jonathan Lange
Push the key path parametrization out to the SSH service
54
svc = SSHService(
55
    portal=make_portal(),
56
    private_key_path=get_key_path(PRIVATE_KEY_FILE),
10693.2.11 by Jonathan Lange
Parametrize a bunch of other things
57
    public_key_path=get_key_path(PUBLIC_KEY_FILE),
10693.4.2 by Jonathan Lange
Fix a bunch of stupid oversights
58
    oops_configuration=OOPS_CONFIG_SECTION,
59
    main_log=LOG_NAME,
60
    access_log=ACCESS_LOG_NAME,
61
    access_log_path=config.codehosting.access_log,
10693.2.19 by Jonathan Lange
Fix invocation
62
    strport=config.codehosting.port,
12221.16.13 by Andrew Bennetts
Add make_web_status_service function to simplify the tac file.
63
    factory_decorator=ssh_factory_decorator,
10693.2.11 by Jonathan Lange
Parametrize a bunch of other things
64
    banner=config.codehosting.banner)
12221.16.1 by Andrew Bennetts
Initial hackery towards #702024.
65
svc.setServiceParent(shutdown_cleanly_svc)
0.1.3 by Andrew Bennetts
Remove cruft, flesh out the code and a sample tac file a bit more
66
2902.2.32 by Andrew Bennetts
Move authserver config into launchpad.conf; remove test-only variants of authserver.tac and sftp.tac; remove a hard-coded path from a test.
67
# Service that announces when the daemon is ready
11765.1.1 by Robert Collins
Split out the launchpad-buildd needed component from tachandler.py.
68
readyservice.ReadyService().setServiceParent(application)