committed by
ZmnSCPxj, ZmnSCPxj jxPCSmnZ
1 changed files with 54 additions and 0 deletions
@ -0,0 +1,54 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
"""This plugin is used to check that forward_event calls are working correctly. |
||||
|
""" |
||||
|
from lightning import Plugin |
||||
|
|
||||
|
plugin = Plugin() |
||||
|
|
||||
|
|
||||
|
def check(forward, dbforward): |
||||
|
# After finding the corresponding notification record, this function will |
||||
|
# make some changes on mutative fields of this record to make this record |
||||
|
# same as the ideal format with given status. |
||||
|
record = forward |
||||
|
if record['status'] == 'offered': |
||||
|
if dbforward['status'] == 'local_failed': |
||||
|
record['failcode'] = dbforward['failcode'] |
||||
|
record['failreason'] = dbforward['failreason'] |
||||
|
elif dbforward['status'] != 'offered': |
||||
|
record['resolved_time'] = dbforward['resolved_time'] |
||||
|
record['status'] = dbforward['status'] |
||||
|
if record == dbforward: |
||||
|
return True |
||||
|
else: |
||||
|
return False |
||||
|
|
||||
|
|
||||
|
@plugin.init() |
||||
|
def init(configuration, options, plugin): |
||||
|
plugin.forward_list = [] |
||||
|
|
||||
|
|
||||
|
@plugin.subscribe("forward_event") |
||||
|
def notify_warning(plugin, forward_event): |
||||
|
# One forward payment may have many notification records for different status, |
||||
|
# but one forward payment has only one record in 'listforwards' eventrually. |
||||
|
plugin.log("receive a forward recored, status: {}, payment_hash: {}".format(forward_event['status'], forward_event['payment_hash'])) |
||||
|
plugin.forward_list.append(forward_event) |
||||
|
|
||||
|
|
||||
|
@plugin.method('recordcheck') |
||||
|
def record_lookup(payment_hash, status, dbforward, plugin): |
||||
|
# Check if we received all notifications when forward changed. |
||||
|
# This check is based on the records of 'listforwards' |
||||
|
plugin.log("recordcheck: payment_hash: {}, status: {}".format(payment_hash, status)) |
||||
|
for forward in plugin.forward_list: |
||||
|
if forward['payment_hash'] == payment_hash and forward['status'] == status: |
||||
|
plugin.log("record exists") |
||||
|
check_result = check(forward, dbforward) |
||||
|
return check_result |
||||
|
plugin.log("no record") |
||||
|
return False |
||||
|
|
||||
|
|
||||
|
plugin.run() |
Loading…
Reference in new issue