2
2
EXISTING_PUBKEY=" "
3
3
GETINFO_RESPONSE=" "
4
4
LIGHTNING_RPC=$CORE_LIGHTNING_PATH " /$APP_CORE_LIGHTNING_BITCOIN_NETWORK " " /lightning-rpc"
5
- COMMANDO_CONFIG=" $COMMANDO_CONFIG "
6
-
7
- echo " $LIGHTNING_RPC "
8
5
9
6
getinfo_request () {
10
7
cat << EOF
@@ -21,7 +18,7 @@ commando_rune_request() {
21
18
cat << EOF
22
19
{
23
20
"jsonrpc": "2.0",
24
- "id": 1 ,
21
+ "id": 2 ,
25
22
"method": "commando-rune",
26
23
"params": [null, [["For Application#"]]]
27
24
}
@@ -32,28 +29,53 @@ commando_datastore_request() {
32
29
cat << EOF
33
30
{
34
31
"jsonrpc": "2.0",
35
- "id": 1 ,
32
+ "id": 3 ,
36
33
"method": "datastore",
37
34
"params": [["commando", "runes", "$UNIQUE_ID "], "$RUNE "]
38
35
}
39
36
EOF
40
37
}
41
38
42
39
generate_new_rune () {
43
- # Send 'commando-rune' request
44
- RUNE_RESPONSE=$( (echo " $( commando_rune_request) " ; sleep 1) | socat - UNIX-CONNECT:" $LIGHTNING_RPC " )
45
- RUNE=$( echo " $RUNE_RESPONSE " | jq -r ' .result.rune' )
46
- UNIQUE_ID=$( echo " $RUNE_RESPONSE " | jq -r ' .result.unique_id' )
47
- # Save rune in env file
48
- echo " LIGHTNING_RUNE=\" $RUNE \" " >> $COMMANDO_CONFIG
49
- echo " $RUNE "
50
- # This will fail for v>23.05
51
- DATASTORE_RESPONSE=$( (echo " $( commando_datastore_request) " ; sleep 1) | socat - UNIX-CONNECT:" $LIGHTNING_RPC " ) > /dev/null
40
+ COUNTER=0
41
+ RUNE=" "
42
+ while { [ " $RUNE " = " " ] || [ " $RUNE " = " null" ]; } && [ $COUNTER -lt 10 ]; do
43
+ # Send 'commando-rune' request
44
+ echo " Generating rune attempt: $COUNTER "
45
+ COUNTER=$(( COUNTER+ 1 ))
46
+
47
+ RUNE_RESPONSE=$( (echo " $( commando_rune_request) " ; sleep 2) | socat - UNIX-CONNECT:" $LIGHTNING_RPC " )
48
+
49
+ RUNE=$( echo " $RUNE_RESPONSE " | jq -r ' .result.rune' )
50
+ UNIQUE_ID=$( echo " $RUNE_RESPONSE " | jq -r ' .result.unique_id' )
51
+ echo " RUNE_RESPONSE"
52
+ echo " $RUNE_RESPONSE "
53
+ echo " RUNE"
54
+ echo " $RUNE "
55
+
56
+ if [ " $RUNE " != " " ] && [ " $RUNE " != " null" ]; then
57
+ # Save rune in env file
58
+ echo " LIGHTNING_RUNE=\" $RUNE \" " >> " $COMMANDO_CONFIG "
59
+ fi
60
+
61
+ if [ " $UNIQUE_ID " != " " ] && [ " $UNIQUE_ID " != " null" ]; then
62
+ # This will fail for v>23.05
63
+ DATASTORE_RESPONSE=$( (echo " $( commando_datastore_request) " ; sleep 1) | socat - UNIX-CONNECT:" $LIGHTNING_RPC " ) > /dev/null
64
+ fi
65
+ done
66
+ if [ $COUNTER -eq 10 ] && [ " $RUNE " = " " ]; then
67
+ echo " Error: Unable to generate rune for application authentication!"
68
+ fi
52
69
}
53
70
54
71
# Read existing pubkey
55
72
if [ -f " $COMMANDO_CONFIG " ]; then
56
- EXISTING_PUBKEY=$( head -n1 $COMMANDO_CONFIG )
73
+ EXISTING_PUBKEY=$( head -n1 " $COMMANDO_CONFIG " )
74
+ EXISTING_RUNE=$( sed -n " 2p" " $COMMANDO_CONFIG " )
75
+ echo " EXISTING_PUBKEY"
76
+ echo " $EXISTING_PUBKEY "
77
+ echo " EXISTING_RUNE"
78
+ echo " $EXISTING_RUNE "
57
79
fi
58
80
59
81
# Getinfo from CLN
@@ -69,11 +91,14 @@ LIGHTNING_PUBKEY="$(jq -n "$GETINFO_RESPONSE" | jq -r '.result.id')"
69
91
echo " $LIGHTNING_PUBKEY "
70
92
71
93
# Compare existing pubkey with current
72
- if [ " $EXISTING_PUBKEY " != " LIGHTNING_PUBKEY=\" $LIGHTNING_PUBKEY \" " ]; then
73
- # Pubkey changed; rewrite new data on the file.
74
- echo " Pubkey mismatched; Rewriting the data."
75
- cat /dev/null > $COMMANDO_CONFIG
76
- echo " LIGHTNING_PUBKEY=\" $LIGHTNING_PUBKEY \" " >> $COMMANDO_CONFIG
94
+ if [ " $EXISTING_PUBKEY " != " LIGHTNING_PUBKEY=\" $LIGHTNING_PUBKEY \" " ] ||
95
+ [ " $EXISTING_RUNE " = " " ] ||
96
+ [ " $EXISTING_RUNE " = " LIGHTNING_RUNE=\"\" " ] ||
97
+ [ " $EXISTING_RUNE " = " LIGHTNING_RUNE=\" null\" " ]; then
98
+ # Pubkey changed or missing rune; rewrite new data on the file.
99
+ echo " Pubkey mismatched or missing rune; Rewriting the data."
100
+ cat /dev/null > " $COMMANDO_CONFIG "
101
+ echo " LIGHTNING_PUBKEY=\" $LIGHTNING_PUBKEY \" " >> " $COMMANDO_CONFIG "
77
102
generate_new_rune
78
103
else
79
104
echo " Pubkey matches with existing pubkey."
0 commit comments