Added support for SSL IRC connections.

This commit is contained in:
Sina Mashek 2016-03-26 02:44:20 -07:00
parent 402b9a7394
commit 2d54bc33ab
4 changed files with 31 additions and 11 deletions

View file

@ -9,7 +9,7 @@ from future.utils import viewkeys
import re
from twisted.application import internet
from twisted.words.protocols import irc
from twisted.internet import protocol
from twisted.internet import protocol, reactor, ssl
from evennia.server.session import Session
from evennia.utils import logger, utils
@ -230,7 +230,7 @@ class IRCBotFactory(protocol.ReconnectingClientFactory):
factor = 1.5
maxDelay = 60
def __init__(self, sessionhandler, uid=None, botname=None, channel=None, network=None, port=None):
def __init__(self, sessionhandler, uid=None, botname=None, channel=None, network=None, port=None, ssl=None):
"""
Storing some important protocol properties.
@ -243,6 +243,7 @@ class IRCBotFactory(protocol.ReconnectingClientFactory):
channel (str): IRC channel to connect to.
network (str): Network address to connect to.
port (str): Port of the network.
ssl (bool): Indicates SSL connection.
"""
self.sessionhandler = sessionhandler
@ -251,6 +252,7 @@ class IRCBotFactory(protocol.ReconnectingClientFactory):
self.channel = str(channel)
self.network = str(network)
self.port = port
self.ssl = ssl
self.bot = None
def buildProtocol(self, addr):
@ -267,6 +269,7 @@ class IRCBotFactory(protocol.ReconnectingClientFactory):
protocol.channel = self.channel
protocol.network = self.network
protocol.port = self.port
protocol.ssl = self.ssl
return protocol
def startedConnecting(self, connector):
@ -308,5 +311,13 @@ class IRCBotFactory(protocol.ReconnectingClientFactory):
"""
if self.port:
service = internet.TCPClient(self.network, int(self.port), self)
if ssl:
"""
Requires PyOpenSSL
"""
service = reactor.connectSSL(self.network, int(self.port), self, ssl.ClientContextFactory())
else:
service = internet.TCPClient(self.network, int(self.port), self)
self.sessionhandler.portal.services.addService(service)