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 errno
|
||||||
import os
|
import os
|
||||||
|
import ssl
|
||||||
import socket
|
import socket
|
||||||
import threading
|
import threading
|
||||||
import traceback
|
import traceback
|
||||||
@ -32,7 +33,7 @@ import xmlparser
|
|||||||
class IRCServer(server.Server):
|
class IRCServer(server.Server):
|
||||||
"""Class to interact with an IRC 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
|
"""Initialize an IRC server
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
@ -40,7 +41,7 @@ class IRCServer(server.Server):
|
|||||||
nick -- nick used by the bot on this server
|
nick -- nick used by the bot on this server
|
||||||
owner -- nick used by the bot owner on this server
|
owner -- nick used by the bot owner on this server
|
||||||
realname -- string used as realname on this server
|
realname -- string used as realname on this server
|
||||||
|
ssl -- require SSL?
|
||||||
"""
|
"""
|
||||||
server.Server.__init__(self)
|
server.Server.__init__(self)
|
||||||
|
|
||||||
@ -49,6 +50,7 @@ class IRCServer(server.Server):
|
|||||||
self.nick = nick
|
self.nick = nick
|
||||||
self.owner = owner
|
self.owner = owner
|
||||||
self.realname = realname
|
self.realname = realname
|
||||||
|
self.ssl = ssl
|
||||||
|
|
||||||
# Listen private messages?
|
# Listen private messages?
|
||||||
self.listen_nick = True
|
self.listen_nick = True
|
||||||
@ -164,6 +166,9 @@ class IRCServer(server.Server):
|
|||||||
def run(self):
|
def run(self):
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
self.s = socket.socket() #Create the socket
|
self.s = socket.socket() #Create the socket
|
||||||
|
if self.ssl:
|
||||||
|
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
|
||||||
|
self.s = ctx.wrap_socket(self.s)
|
||||||
try:
|
try:
|
||||||
self.s.connect((self.host, self.port)) #Connect to server
|
self.s.connect((self.host, self.port)) #Connect to server
|
||||||
except socket.error as e:
|
except socket.error as e:
|
||||||
|
4
bot.py
4
bot.py
@ -183,9 +183,9 @@ class Bot:
|
|||||||
self.update_timer()
|
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"""
|
"""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_hook = lambda h: self.hooks.add_hook("irc_hook", h, self)
|
||||||
srv.add_networkbot = self.add_networkbot
|
srv.add_networkbot = self.add_networkbot
|
||||||
srv.send_bot = lambda d: self.send_networkbot(srv, d)
|
srv.send_bot = lambda d: self.send_networkbot(srv, d)
|
||||||
|
@ -2,12 +2,10 @@
|
|||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import socket
|
|
||||||
import signal
|
import signal
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import shlex
|
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
@ -164,7 +162,7 @@ for correct in config.getNodes("correction"):
|
|||||||
print ("%d corrections loaded"%len(CORRECTIONS))
|
print ("%d corrections loaded"%len(CORRECTIONS))
|
||||||
|
|
||||||
for serveur in config.getNodes("server"):
|
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)
|
srv.launch(None)
|
||||||
|
|
||||||
def sighup_h(signum, frame):
|
def sighup_h(signum, frame):
|
||||||
|
@ -64,7 +64,8 @@ def load_file(filename, context):
|
|||||||
# Preset each server in this file
|
# Preset each server in this file
|
||||||
for server in config.getNodes("server"):
|
for server in config.getNodes("server"):
|
||||||
if context.addServer(server, config["nick"],
|
if context.addServer(server, config["nick"],
|
||||||
config["owner"], config["realname"]):
|
config["owner"], config["realname"],
|
||||||
|
server.hasAttribute("ssl")):
|
||||||
print (" Server `%s:%s' successfully added."
|
print (" Server `%s:%s' successfully added."
|
||||||
% (server["server"], server["port"]))
|
% (server["server"], server["port"]))
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user