New feature: can now connect to SSL servers (using TLS v1)

This commit is contained in:
nemunaire 2014-05-01 02:34:43 +02:00
commit d56f873fd4
4 changed files with 12 additions and 8 deletions

View file

@ -18,6 +18,7 @@
import errno
import os
import ssl
import socket
import threading
import traceback
@ -32,7 +33,7 @@ import xmlparser
class IRCServer(server.Server):
"""Class to interact with an IRC server"""
def __init__(self, node, nick, owner, realname):
def __init__(self, node, nick, owner, realname, ssl=False):
"""Initialize an IRC server
Arguments:
@ -40,7 +41,7 @@ class IRCServer(server.Server):
nick -- nick used by the bot on this server
owner -- nick used by the bot owner on this server
realname -- string used as realname on this server
ssl -- require SSL?
"""
server.Server.__init__(self)
@ -49,6 +50,7 @@ class IRCServer(server.Server):
self.nick = nick
self.owner = owner
self.realname = realname
self.ssl = ssl
# Listen private messages?
self.listen_nick = True
@ -164,6 +166,9 @@ class IRCServer(server.Server):
def run(self):
if not self.connected:
self.s = socket.socket() #Create the socket
if self.ssl:
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
self.s = ctx.wrap_socket(self.s)
try:
self.s.connect((self.host, self.port)) #Connect to server
except socket.error as e: