Fix conn
This commit is contained in:
parent
9d7ffee465
commit
d1e9a5e517
2 changed files with 25 additions and 45 deletions
62
irc.py
62
irc.py
|
@ -88,8 +88,6 @@ class PesterIRC(QtCore.QThread):
|
||||||
self.host = self.config.server()
|
self.host = self.config.server()
|
||||||
self.port = self.config.port()
|
self.port = self.config.port()
|
||||||
self.ssl = self.config.ssl()
|
self.ssl = self.config.ssl()
|
||||||
self.timeout = 120
|
|
||||||
self.blocking = True
|
|
||||||
self._end = False
|
self._end = False
|
||||||
|
|
||||||
self.send_irc = scripts.irc.outgoing.SendIRC()
|
self.send_irc = scripts.irc.outgoing.SendIRC()
|
||||||
|
@ -150,17 +148,9 @@ class PesterIRC(QtCore.QThread):
|
||||||
# SSL/TLS is disabled, connection is plaintext
|
# SSL/TLS is disabled, connection is plaintext
|
||||||
self.socket = plaintext_socket
|
self.socket = plaintext_socket
|
||||||
|
|
||||||
|
self.socket.settimeout(90)
|
||||||
self.send_irc.socket = self.socket
|
self.send_irc.socket = self.socket
|
||||||
|
|
||||||
# setblocking is a shorthand for timeout,
|
|
||||||
# we shouldn't use both.
|
|
||||||
if self.timeout:
|
|
||||||
self.socket.settimeout(self.timeout)
|
|
||||||
elif not self.blocking:
|
|
||||||
self.socket.setblocking(False)
|
|
||||||
elif self.blocking:
|
|
||||||
self.socket.setblocking(True)
|
|
||||||
|
|
||||||
self.send_irc.nick(self.mainwindow.profile().handle)
|
self.send_irc.nick(self.mainwindow.profile().handle)
|
||||||
self.send_irc.user("pcc31", "pcc31")
|
self.send_irc.user("pcc31", "pcc31")
|
||||||
# if self.connect_cb:
|
# if self.connect_cb:
|
||||||
|
@ -171,7 +161,6 @@ class PesterIRC(QtCore.QThread):
|
||||||
try:
|
try:
|
||||||
buffer = b""
|
buffer = b""
|
||||||
while not self._end:
|
while not self._end:
|
||||||
data = []
|
|
||||||
try:
|
try:
|
||||||
buffer += self.socket.recv(1024)
|
buffer += self.socket.recv(1024)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
|
@ -182,15 +171,19 @@ class PesterIRC(QtCore.QThread):
|
||||||
else:
|
else:
|
||||||
if self._end:
|
if self._end:
|
||||||
break
|
break
|
||||||
if not buffer and self.blocking:
|
|
||||||
PchumLog.debug("len(buffer) = 0")
|
|
||||||
raise OSError("Connection closed")
|
|
||||||
|
|
||||||
data, buffer = self.parse_buffer(buffer)
|
print(repr(buffer.decode()))
|
||||||
print(f"data: {data}")
|
split_buffer = buffer.split(b"\r\n")
|
||||||
for line in data:
|
print(split_buffer)
|
||||||
|
buffer = b""
|
||||||
|
if split_buffer[-1]:
|
||||||
|
# Incomplete line, add it back to the buffer.
|
||||||
|
buffer = split_buffer.pop()
|
||||||
|
|
||||||
|
for line in split_buffer:
|
||||||
|
line = line.decode(encoding="utf-8", errors="replace")
|
||||||
|
print(line)
|
||||||
tags, prefix, command, args = self.parse_irc_line(line)
|
tags, prefix, command, args = self.parse_irc_line(line)
|
||||||
# print(tags, prefix, command, args)
|
|
||||||
try:
|
try:
|
||||||
# Only need tags with tagmsg
|
# Only need tags with tagmsg
|
||||||
if command.casefold() == "tagmsg":
|
if command.casefold() == "tagmsg":
|
||||||
|
@ -211,7 +204,7 @@ class PesterIRC(QtCore.QThread):
|
||||||
self.socket.close()
|
self.socket.close()
|
||||||
raise se
|
raise se
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
PchumLog.exception("Non-socket related exception in conn_generator().")
|
PchumLog.exception("Non-socket exception in conn_generator().")
|
||||||
raise e
|
raise e
|
||||||
else:
|
else:
|
||||||
PchumLog.debug("ending while, end is %s" % self._end)
|
PchumLog.debug("ending while, end is %s" % self._end)
|
||||||
|
@ -235,6 +228,7 @@ class PesterIRC(QtCore.QThread):
|
||||||
data = decoded_buffer.split("\r\n")
|
data = decoded_buffer.split("\r\n")
|
||||||
if data[-1]:
|
if data[-1]:
|
||||||
# Last entry has incomplete data, add back to buffer
|
# Last entry has incomplete data, add back to buffer
|
||||||
|
print(f"data[-1]: {data[-1]}")
|
||||||
buffer = data[-1].encode(encoding="utf-8")
|
buffer = data[-1].encode(encoding="utf-8")
|
||||||
return data[:-1], buffer
|
return data[:-1], buffer
|
||||||
|
|
||||||
|
@ -754,7 +748,7 @@ class PesterIRC(QtCore.QThread):
|
||||||
# Server is not allowing us to connect.
|
# Server is not allowing us to connect.
|
||||||
reason = "Handle is not allowed on this server.\n"
|
reason = "Handle is not allowed on this server.\n"
|
||||||
for x in args:
|
for x in args:
|
||||||
if (x != None) and (x != ""):
|
if x:
|
||||||
reason += x + " "
|
reason += x + " "
|
||||||
self.stopIRC = reason.strip()
|
self.stopIRC = reason.strip()
|
||||||
self.disconnectIRC()
|
self.disconnectIRC()
|
||||||
|
@ -774,31 +768,17 @@ class PesterIRC(QtCore.QThread):
|
||||||
PchumLog.info("nomatchingkey: " + failed_handle)
|
PchumLog.info("nomatchingkey: " + failed_handle)
|
||||||
# No point in GETMOOD-ing services
|
# No point in GETMOOD-ing services
|
||||||
if failed_handle.casefold() not in SERVICES:
|
if failed_handle.casefold() not in SERVICES:
|
||||||
try:
|
|
||||||
self.send_irc.privmsg("#pesterchum", f"GETMOOD {failed_handle}")
|
self.send_irc.privmsg("#pesterchum", f"GETMOOD {failed_handle}")
|
||||||
except OSError as e:
|
|
||||||
PchumLog.warning(e)
|
|
||||||
self.setConnectionBroken()
|
|
||||||
|
|
||||||
def keynotset(self, target, our_handle, failed_handle, key, *error):
|
def keynotset(self, target, our_handle, failed_handle, key, *error):
|
||||||
# Try to get moods the old way if metadata fails.
|
# Try to get moods the old way if metadata fails.
|
||||||
PchumLog.info("nomatchingkey: " + failed_handle)
|
PchumLog.info("nomatchingkey: %s", failed_handle)
|
||||||
chumglub = "GETMOOD "
|
self.send_irc.privmsg("#pesterchum", f"GETMOOD {failed_handle}")
|
||||||
try:
|
|
||||||
self.send_irc.privmsg("#pesterchum", chumglub + failed_handle)
|
|
||||||
except OSError as e:
|
|
||||||
PchumLog.warning(e)
|
|
||||||
self.setConnectionBroken()
|
|
||||||
|
|
||||||
def keynopermission(self, target, our_handle, failed_handle, key, *error):
|
def keynopermission(self, target, our_handle, failed_handle, key, *error):
|
||||||
# Try to get moods the old way if metadata fails.
|
# Try to get moods the old way if metadata fails.
|
||||||
PchumLog.info("nomatchingkey: " + failed_handle)
|
PchumLog.info("nomatchingkey: %s", failed_handle)
|
||||||
chumglub = "GETMOOD "
|
self.send_irc.privmsg("#pesterchum", f"GETMOOD {failed_handle}")
|
||||||
try:
|
|
||||||
self.send_irc.privmsg("#pesterchum", chumglub + failed_handle)
|
|
||||||
except OSError as e:
|
|
||||||
PchumLog.warning(e)
|
|
||||||
self.setConnectionBroken()
|
|
||||||
|
|
||||||
def featurelist(self, target, handle, *params):
|
def featurelist(self, target, handle, *params):
|
||||||
# Better to do this via CAP ACK/CAP NEK
|
# Better to do this via CAP ACK/CAP NEK
|
||||||
|
@ -1101,7 +1081,7 @@ class PesterIRC(QtCore.QThread):
|
||||||
# self.forbiddenchannel.emit(channel, msg)
|
# self.forbiddenchannel.emit(channel, msg)
|
||||||
def forbiddenchannel(self, server, handle, channel, msg):
|
def forbiddenchannel(self, server, handle, channel, msg):
|
||||||
# Channel is forbidden.
|
# Channel is forbidden.
|
||||||
self.forbiddenchannel.emit(channel, msg)
|
self.signal_forbiddenchannel.emit(channel, msg)
|
||||||
self.userPresentUpdate.emit(handle, channel, "left")
|
self.userPresentUpdate.emit(handle, channel, "left")
|
||||||
|
|
||||||
def ping(self, prefix, token):
|
def ping(self, prefix, token):
|
||||||
|
@ -1193,4 +1173,4 @@ class PesterIRC(QtCore.QThread):
|
||||||
cannotSendToChan = QtCore.pyqtSignal("QString", "QString")
|
cannotSendToChan = QtCore.pyqtSignal("QString", "QString")
|
||||||
tooManyPeeps = QtCore.pyqtSignal()
|
tooManyPeeps = QtCore.pyqtSignal()
|
||||||
quirkDisable = QtCore.pyqtSignal("QString", "QString", "QString")
|
quirkDisable = QtCore.pyqtSignal("QString", "QString", "QString")
|
||||||
forbiddenchannel = QtCore.pyqtSignal("QString", "QString")
|
signal_forbiddenchannel = QtCore.pyqtSignal("QString", "QString")
|
||||||
|
|
|
@ -4435,7 +4435,7 @@ class MainProgram(QtCore.QObject):
|
||||||
"quirkDisable(QString, QString, QString)",
|
"quirkDisable(QString, QString, QString)",
|
||||||
"quirkDisable(QString, QString, QString)",
|
"quirkDisable(QString, QString, QString)",
|
||||||
),
|
),
|
||||||
("forbiddenchannel(QString)", "forbiddenchannel(QString)"),
|
("signal_forbiddenchannel(QString)", "forbiddenchannel(QString)"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def ircQtConnections(self, irc, widget):
|
def ircQtConnections(self, irc, widget):
|
||||||
|
@ -4484,7 +4484,7 @@ class MainProgram(QtCore.QObject):
|
||||||
(irc.chanInviteOnly, widget.chanInviteOnly),
|
(irc.chanInviteOnly, widget.chanInviteOnly),
|
||||||
(irc.modesUpdated, widget.modesUpdated),
|
(irc.modesUpdated, widget.modesUpdated),
|
||||||
(irc.cannotSendToChan, widget.cannotSendToChan),
|
(irc.cannotSendToChan, widget.cannotSendToChan),
|
||||||
(irc.forbiddenchannel, widget.forbiddenchannel),
|
(irc.signal_forbiddenchannel, widget.forbiddenchannel),
|
||||||
(irc.tooManyPeeps, widget.tooManyPeeps),
|
(irc.tooManyPeeps, widget.tooManyPeeps),
|
||||||
(irc.quirkDisable, widget.quirkDisable),
|
(irc.quirkDisable, widget.quirkDisable),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue