from twisted.application import internet, service from twisted.internet import protocol, reactor, defer from twisted.words.protocols import irc from twisted.protocols import basic from twisted.web import resource, server, static from twisted.internet.protocol import Protocol class ircProtocol(irc.IRCClient): def _get_nickname(self): return self.factory.nickname nickname = property(_get_nickname) def signedOn(self): self.join(self.factory.channel) # def privmsg(self, user, channel, msg): # user = user.split('!')[0] # d = self.factory.msgAlert(msg) # def onError(err): # return 'Internal error in server' # d.addErrback(onError) # def writeResponse(message): # irc.IRCClient.msg(self, channel, msg+': '+message) # d.addCallback(writeResponse) # def msgAlert(self, alert): # self.factory. def dupa1(self, msg): print msg #irc.IRCClient.msg(self, '#asdf666', msg) self.IRCClient.msg('#asdf666', msg) class ircFactory(protocol.ClientFactory): protocol = ircProtocol def __init__(self, nickname, channel): self.nickname = nickname self.channel = channel def dupa(self, msg): self.protocol.dupa1(msg) # def msgAlert(self, alert): # print "alert=> " + alert class nagiosProtocol(Protocol): def connectionMade(self): print "New connection from nagios" def connectionLost(self, reason): print "Lost connection from nagios: %s" % reason def dataReceived(self, line): self.factory.irc.dupa(line) class nagiosFactory(protocol.ServerFactory): protocol = nagiosProtocol def __init__(self, irc): self.irc = irc # def sendAlert(self, alert): # print "sendAlert" # self.ircFactory.msgAlert(alert) #b = internet.TCPServer(6666, nagiosFactory()) #b.setName('fnagios') #b.setServiceParent(myservice) #myservice.setServiceParent(application) application = service.Application("dupa") ircf = ircFactory('asdfasdf', '#asdf666') irc = internet.TCPClient('irc.freenode.net', 6667, ircf) irc.setName('irc') irc.setServiceParent(application) nagios = internet.TCPServer(6666, nagiosFactory(ircf)) nagios.setName("Nagios") nagios.setServiceParent(application)