3
0
mirror of https://github.com/jlu5/PyLink.git synced 2025-01-23 02:34:09 +01:00

relay: make spawning of subservers toggleable

This commit is contained in:
James Lu 2015-09-28 18:21:52 -07:00
parent 55b642ea30
commit 9e07949730
2 changed files with 16 additions and 7 deletions

View File

@ -39,6 +39,10 @@ relay:
# will see yours.
show_ips: false
# Whether subservers should be spawned for each relay network (requires reload to change).
# Defaults to true.
spawn_servers: true
servers:
yournet:
# Server IP, port, and passwords

View File

@ -164,6 +164,12 @@ def getPrefixModes(irc, remoteirc, channel, user, mlist=None):
def getRemoteSid(irc, remoteirc):
"""Gets the remote server SID representing remoteirc on irc, spawning
it if it doesn't exist."""
try:
spawnservers = irc.conf['relay']['spawn_servers']
except KeyError:
spawnservers = True
if not spawnservers:
return irc.sid
with spawnlocks_servers[irc.name]:
try:
sid = relayservers[irc.name][remoteirc.name]
@ -245,16 +251,11 @@ def getRemoteUser(irc, remoteirc, user, spawnIfMissing=True):
else:
realhost = None
ip = '0.0.0.0'
try:
u = remoteirc.proto.spawnClient(nick, ident=ident,
host=host, realname=realname,
modes=modes, ts=userobj.ts,
opertype=opertype, server=rsid,
ip=ip, realhost=realhost).uid
except ValueError:
log.exception('(%s) Failed to spawn relay user %s on %s.', irc.name,
nick, remoteirc.name)
return
remoteirc.users[u].remote = (irc.name, user)
remoteirc.users[u].opertype = opertype
away = userobj.away
@ -999,7 +1000,11 @@ def handle_disconnect(irc, numeric, command, args):
if irc.name in v:
del relayusers[k][irc.name]
if k[0] == irc.name:
try:
handle_quit(irc, k[1], 'PYLINK_DISCONNECT', {'text': 'Home network lost connection.'})
del relayusers[k]
except KeyError:
pass
for name, ircobj in world.networkobjects.items():
if name != irc.name:
rsid = getRemoteSid(ircobj, irc)