~oubiwann/bot-prakasha-ke/trunk

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
61
62
63
64
65
66
67
68
69
70
71
72
73
from twisted.web import vhost
from twisted.web import server
from twisted.web import static
from twisted.application import service, internet
from twisted.internet.protocol import ServerFactory
from twisted.internet.ssl import ClientContextFactory

from prakasha import auth, config, shell
from prakasha.logger import LoggerFactory
from prakasha.publisher import Listener, PublisherFactory


application = service.Application("prakasha")
services = service.IServiceCollection(application)

# XXX move these services into prakasha.services
# setup message server
serverFactory = ServerFactory()
serverFactory.protocol = Listener
serverFactory.publisher = PublisherFactory()

msgServer = internet.TCPServer(config.listener.port, serverFactory)
msgServer.setName(config.listener.servicename)
msgServer.setServiceParent(services)


# setup IRC message client
if config.irc.sslEnabled:
    msgService = internet.SSLClient(config.irc.server, config.irc.port,
        serverFactory.publisher, ClientContextFactory())
else:
    msgService = internet.TCPClient(config.irc.server, config.irc.port,
        serverFactory.publisher)
msgService.setName(config.irc.servicename)
msgService.setServiceParent(services)


# setup IRC log client
logger = LoggerFactory(config.irc.server, config.log.channels)
logService = internet.TCPClient(config.irc.server, config.irc.port,
    logger)
logService.setName(config.log.servicename)
logService.setServiceParent(services)


# setuplog rotator
rotService = internet.TimerService(config.log.rotate.checkInterval,
    logger.rotateLogs, logService)
rotService.setName(config.log.rotate.servicename)
rotService.setServiceParent(services)


# setup log file web server
webroot = static.File(config.log.http.docRoot)
if config.log.http.vhostEnabled:
    vResource = vhost.VHostMonsterResource()
    webroot.putChild('vhost', vResource)
if config.log.http.auth == 'basic':
    guarded = auth.guardResourceWithBasicAuth(webroot, config.log.http.realm,
        config.log.http.users)
    site = server.Site(guarded)
else:
    site = server.Site(webroot)
webserver = internet.TCPServer(config.log.http.port, site)
webserver.setName(config.log.http.servicename)
webserver.setServiceParent(services)


# setup ssh access to a Python shell
sshFactory = shell.getShellFactory(app=application, services=services)
sshserver = internet.TCPServer(config.ssh.port, sshFactory)
sshserver.setName(config.ssh.servicename)
sshserver.setServiceParent(services)