#!/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()