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
|
from twisted.words.protocols import irc
from twisted.internet import defer, endpoints, protocol, reactor, task
from twisted.python import log
from twisted.internet.endpoints import TCP4ClientEndpoint, connectProtocol
from txsocksx.client import SOCKS5ClientEndpoint
from twisted.internet.protocol import ClientFactory, ReconnectingClientFactory
class MomBot(irc.IRCClient):
def _get_nickname(self):
return self.factory.nickname
nickname = property(_get_nickname)
def signedOn(self):
self.join(self.factory.channel)
print "Signed on as %s." % (self.nickname,)
def joined(self, channel):
print "Joined %s." % (channel,)
def privmsg(self, user, channel, message):
print message
class MomBotFactory(protocol.ClientFactory):
protocol = MomBot
def __init__(self, channel, nickname):
self.channel = channel
self.nickname = nickname
def clientConnectionLost(self, connector, reason):
print "Lost connection (%s), reconnecting." % (reason,)
connector.connect()
def clientConnectionFailed(self, connector, reason):
print "Could not connect: %s" % (reason,)
def connIRC(proxy_ip, proxy_port, irc_server, irc_port, channel, nickname):
"""J'utlise mon ip dans le proxy pour créer une erreur de connection
Sinon, c'est rare que mon vrai ip, ne se connectera pas, donc,
sortira presque jamais d'erreur"""
puttyEndPoint = TCP4ClientEndpoint(reactor, proxy_ip, proxy_port)
ircEndpoint = SOCKS5ClientEndpoint(irc_server, irc_port, puttyEndPoint)
d = ircEndpoint.connect(MomBotFactory('#' + channel, nickname))
d.addCallbacks(printCall, printErr)
def printCall(*args, **kwargs):
print args, kwargs
print 'Response received'
def printErr(failure):
print type(failure.value), failure
print'Tryingto get another one...'
if __name__ == '__main__':
connIRC('127.0.0.1', 1080, 'se.freenode.org', 6667, 'mychannelABC', 'mynicknameBOT') |
Partager