3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-24 03:29:28 +01:00

inspircd: always make PyLink handle WHOIS (closes #267)

This removes the use_experimental_whois option, which is always enabled now.

The rationale behind this is that PyLink cannot accurately track signon and idle times for things like relay users, without forwarding WHOIS requests between servers in a way the hooks system is really not optimized to do. However, no IDLE response means that no WHOIS data is ever sent back to the calling user, so this workaround is probably the best solution, aside from faking values.
This commit is contained in:
James Lu 2016-07-10 21:55:16 -07:00
parent 8f78205406
commit 84452bec2e
2 changed files with 12 additions and 15 deletions

View File

@ -132,13 +132,6 @@ servers:
# This setting defaults to sha256.
#ssl_fingerprint_type: sha256
# The following option is specific to InspIRCd networks:
# Force PyLink to handle WHOIS requests locally for all its clients
# (experimental). This is required if you want custom WHOIS handlers
# implemented by plugins like relay to work. Defaults to false.
#use_experimental_whois: false
ts6net:
ip: ::1

View File

@ -608,19 +608,23 @@ class InspIRCdProtocol(TS6BaseProtocol):
return {'target': target, 'modes': changedmodes}
def handle_idle(self, numeric, command, args):
"""Handles the IDLE command, sent between servers in remote WHOIS queries."""
"""
Handles the IDLE command, sent between servers in remote WHOIS queries.
"""
# <- :70MAAAAAA IDLE 1MLAAAAIG
# -> :1MLAAAAIG IDLE 70MAAAAAA 1433036797 319
sourceuser = numeric
targetuser = args[0]
if self.irc.serverdata.get("use_experimental_whois"):
# EXPERIMENTAL HACK: make PyLink handle all WHOIS requests if configured to do so.
# HACK: make PyLink handle the entire WHOIS request.
# This works by silently ignoring the idle time request, and sending our WHOIS data as
# raw numerics instead.
# The rationale behind this is that PyLink cannot accurately track signon and idle times for
# things like relay users, without forwarding WHOIS requests between servers in a way the
# hooks system is really not optimized to do. However, no IDLE response means that no WHOIS
# data is ever sent back to the calling user, so this workaround is probably the best
# solution (aside from faking values). -GLolol
return {'target': args[0], 'parse_as': 'WHOIS'}
else:
self._send(targetuser, 'IDLE %s %s 0' % (sourceuser, self.irc.users[targetuser].ts))
def handle_ftopic(self, numeric, command, args):
"""Handles incoming FTOPIC (sets topic on burst)."""