Added support for SSL IRC connections.
This commit is contained in:
parent
402b9a7394
commit
2d54bc33ab
4 changed files with 31 additions and 11 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue