New feature: can now connect to SSL servers (using TLS v1)
This commit is contained in:
parent
b925cee08a
commit
d56f873fd4
@ -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:
|
||||
|
4
bot.py
4
bot.py
@ -183,9 +183,9 @@ class Bot:
|
||||
self.update_timer()
|
||||
|
||||
|
||||
def addServer(self, node, nick, owner, realname):
|
||||
def addServer(self, node, nick, owner, realname, ssl=False):
|
||||
"""Add a new server to the context"""
|
||||
srv = IRCServer(node, nick, owner, realname)
|
||||
srv = IRCServer(node, nick, owner, realname, ssl)
|
||||
srv.add_hook = lambda h: self.hooks.add_hook("irc_hook", h, self)
|
||||
srv.add_networkbot = self.add_networkbot
|
||||
srv.send_bot = lambda d: self.send_networkbot(srv, d)
|
||||
|
@ -2,12 +2,10 @@
|
||||
# coding=utf-8
|
||||
|
||||
import sys
|
||||
import socket
|
||||
import signal
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import shlex
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
@ -164,7 +162,7 @@ for correct in config.getNodes("correction"):
|
||||
print ("%d corrections loaded"%len(CORRECTIONS))
|
||||
|
||||
for serveur in config.getNodes("server"):
|
||||
srv = Server(serveur, config["nick"], config["owner"], config["realname"])
|
||||
srv = Server(serveur, config["nick"], config["owner"], config["realname"], serveur.hasAttribute("ssl"))
|
||||
srv.launch(None)
|
||||
|
||||
def sighup_h(signum, frame):
|
||||
|
@ -64,7 +64,8 @@ def load_file(filename, context):
|
||||
# Preset each server in this file
|
||||
for server in config.getNodes("server"):
|
||||
if context.addServer(server, config["nick"],
|
||||
config["owner"], config["realname"]):
|
||||
config["owner"], config["realname"],
|
||||
server.hasAttribute("ssl")):
|
||||
print (" Server `%s:%s' successfully added."
|
||||
% (server["server"], server["port"]))
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user