|
|
|
#!/usr/bin/env python3
|
|
|
|
"""Simple plugin to test the connected_hook.
|
|
|
|
|
|
|
|
It can mark some node_ids as rejects and it'll check for each
|
|
|
|
connection if it should be disconnected immediately or if it can
|
|
|
|
continue.
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
from pyln.client import Plugin
|
|
|
|
|
|
|
|
plugin = Plugin()
|
|
|
|
|
|
|
|
|
|
|
|
@plugin.hook('peer_connected')
|
|
|
|
def on_connected(peer, plugin, **kwargs):
|
|
|
|
if peer['id'] in plugin.reject_ids:
|
|
|
|
print("{} is in reject list, disconnecting".format(peer['id']))
|
|
|
|
return {'result': 'disconnect', 'error_message': 'You are in reject list'}
|
|
|
|
|
|
|
|
print("{} is allowed".format(peer['id']))
|
|
|
|
return {'result': 'continue'}
|
|
|
|
|
|
|
|
|
|
|
|
@plugin.init()
|
|
|
|
def init(configuration, options, plugin):
|
|
|
|
plugin.reject_ids = []
|
|
|
|
|
|
|
|
|
|
|
|
@plugin.method('reject')
|
|
|
|
def reject(node_id, plugin):
|
|
|
|
"""Mark a given node_id as reject for future connections.
|
|
|
|
"""
|
|
|
|
print("Rejecting connections from {}".format(node_id))
|
|
|
|
plugin.reject_ids.append(node_id)
|
|
|
|
|
|
|
|
|
|
|
|
plugin.run()
|