diff options
| -rw-r--r-- | IRCLineHandler.py | 23 | ||||
| -rw-r--r-- | IRCServer.py | 4 |
2 files changed, 27 insertions, 0 deletions
diff --git a/IRCLineHandler.py b/IRCLineHandler.py index de0fb134..f4cdd2ec 100644 --- a/IRCLineHandler.py +++ b/IRCLineHandler.py @@ -70,6 +70,7 @@ def handle_PING(data): @handler(description="the first line sent to a registered client", default_event=True) def handle_001(data): server = data.server + server.name = Utils.remove_colon(data.prefix) server.set_own_nickname(data.args[0]) server.send_whois(server.nickname) @@ -309,6 +310,28 @@ def handle_PRIVMSG(data): action=action, server=data.server) user.log.add_line(user.nickname, message, action) +@handler(description="we've received a notice") +def handle_NOTICE(data): + nickname, username, hostname = Utils.seperate_hostmask(data.prefix) + message = "" if len(data.args) < 2 else data.args[1] + message_split = message.split(" ") + target = data.args[0] + if nickname == data.server.name or target == "*": + bot.events.on("received.server-notice").call( + message=message, message_split=message_split, + server=data.server) + else: + user = data.server.get_user(nickname) + if target[0] in data.server.channel_types: + channel = data.server.get_channel(target) + bot.events.on("received.notice.channel").call( + message=message, message_split=message_split, + user=user, server=data.server, channel=channel) + elif data.server.is_own_nickname(target): + bot.events.on("received.notice.private").call( + message=message, message_split=message_split, + user=user, server=data.server) + @handler(description="response to a WHO command for user information", default_event=True) def handle_352(data): user = data.server.get_user(data.args[5]) diff --git a/IRCServer.py b/IRCServer.py index 083e211d..56fd6823 100644 --- a/IRCServer.py +++ b/IRCServer.py @@ -33,15 +33,19 @@ class Server(object): self.last_read = None self.attempted_join = {} self.ping_sent = False + self.name = None + if ipv4: self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) else: self.socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) + self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) self.socket.settimeout(5.0) + if self.tls: context = ssl.SSLContext(OUR_TLS_PROTOCOL) context.options |= ssl.OP_NO_SSLv2 |
