aboutsummaryrefslogtreecommitdiff
path: root/src/IRCBot.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-11-05 18:23:02 +0000
committerGravatar jesopo2018-11-05 18:23:02 +0000
commit6b8593a09b6340e902f2522ac0eaf4fb0357e7bd (patch)
tree816f3bbae8837fa0ea42d518a9ff3b7f75a3f4a2 /src/IRCBot.py
parentCheck that a server's STS policy has a `duration` before doing (diff)
signature
Pass connection parameters around in their own object (IRCConnectionParameters)
Diffstat (limited to 'src/IRCBot.py')
-rw-r--r--src/IRCBot.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py
index 95c8f617..69bb3abb 100644
--- a/src/IRCBot.py
+++ b/src/IRCBot.py
@@ -36,14 +36,15 @@ class Bot(object):
self._trigger_client.send(b"TRIGGER")
self.lock.release()
- def add_server(self, server_id: int, connect: bool = True
- ) -> IRCServer.Server:
- (_, alias, hostname, port, password, ipv4, tls, bindhost, nickname,
- username, realname) = self.database.servers.get(server_id)
+ def add_server(self, server_id: int, connect: bool = True,
+ connection_params: typing.Optional[
+ utils.irc.IRCConnectionParameters]=None) -> IRCServer.Server:
+ if not connection_params:
+ connection_params = utils.irc.IRCConnectionParameters(
+ *self.database.servers.get(server_id))
- new_server = IRCServer.Server(self, self._events, server_id, alias,
- hostname, port, password, ipv4, tls, bindhost, nickname, username,
- realname)
+ new_server = IRCServer.Server(self, self._events,
+ connection_params.id, connection_params)
self._events.on("new.server").call(server=new_server)
if not connect or not new_server.get_setting("connect", True):
@@ -129,10 +130,15 @@ class Bot(object):
del self.servers[server.fileno()]
def _timed_reconnect(self, event: EventManager.Event):
- if not self.reconnect(event["server_id"]):
+ if not self.reconnect(event["server_id"], event["connection_params"]):
event["timer"].redo()
- def reconnect(self, server_id: int) -> bool:
- server = self.add_server(server_id, False)
+ def reconnect(self, server_id: int, connection_params: typing.Optional[
+ utils.irc.IRCConnectionParameters]=None) -> bool:
+ old_server = self.get_server(server_id)
+ if old_server:
+ self.disconnect(old_server)
+
+ server = self.add_server(server_id, False, connection_params)
if self.connect(server):
self.servers[server.fileno()] = server
return True
@@ -204,7 +210,8 @@ class Bot(object):
reconnect_delay = self.config.get("reconnect-delay", 10)
self._timers.add("reconnect", reconnect_delay,
- server_id=server.id)
+ server_id=server.id,
+ connection_params=server.connection_params)
print("disconnected from %s, reconnecting in %d seconds" % (
str(server), reconnect_delay))