mirror of
https://github.com/raspiblitz/raspiblitz.git
synced 2025-04-11 21:29:29 +02:00
#386 set external lndAddress
This commit is contained in:
parent
1a6234f866
commit
88078e9a40
@ -87,7 +87,7 @@ if [ ${existsHDD} -gt 0 ]; then
|
||||
echo "WARNING: No publicIP information at all yet - working with placeholder : ${localIP}"
|
||||
freshPublicIP="${localIP}"
|
||||
fi
|
||||
echo "publicIP=${freshPublicIP}" >> $configFile
|
||||
echo "publicIP='${freshPublicIP}'" >> $configFile
|
||||
|
||||
fi
|
||||
|
||||
|
@ -87,6 +87,10 @@ do
|
||||
# every 15min - not too often
|
||||
# because its a ping to external service
|
||||
recheckPublicIP=$((($counter % 900)+1))
|
||||
# prevent when lndAddress is set
|
||||
if [ ${#lndAddress} -gt 3 ]; then
|
||||
recheckPublicIP=0
|
||||
fi
|
||||
updateDynDomain=0
|
||||
if [ ${recheckPublicIP} -eq 1 ]; then
|
||||
echo "*** RECHECK PUBLIC IP ***"
|
||||
@ -120,8 +124,8 @@ do
|
||||
|
||||
# 1) update config file
|
||||
echo "update config value"
|
||||
sed -i "s/^publicIP=.*/publicIP=${freshPublicIP}/g" ${configFile}
|
||||
publicIP=${freshPublicIP}
|
||||
sed -i "s/^publicIP=.*/publicIP='${freshPublicIP}'/g" ${configFile}
|
||||
publicIP='${freshPublicIP}'
|
||||
|
||||
# 2) only restart LND if dynDNS is activated
|
||||
# because this signals that user wants "public node"
|
||||
|
@ -302,38 +302,65 @@ echo "Check if HDD contains configuration .." >> $logFile
|
||||
configExists=$(ls ${configFile} | grep -c '.conf')
|
||||
if [ ${configExists} -eq 1 ]; then
|
||||
|
||||
# make sure lndAddress & lndPort exist
|
||||
valueExists=$(cat ${configFile} | grep -c 'lndPort=')
|
||||
if [ ${valueExists} -eq 0 ]; then
|
||||
lndPort=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep "^listen=*" | cut -f2 -d':')
|
||||
if [ ${#lndPort} -eq 0 ]; then
|
||||
lndPort="9735"
|
||||
fi
|
||||
echo "lndPort='${lndPort}'" >> ${configFile}
|
||||
fi
|
||||
valueExists=$(cat ${configFile} | grep -c 'lndAddress=')
|
||||
if [ ${valueExists} -eq 0 ]; then
|
||||
echo "lndAddress=''" >> ${configFile}
|
||||
fi
|
||||
|
||||
# load values
|
||||
echo "load and update publicIP" >> $logFile
|
||||
source ${configFile}
|
||||
freshPublicIP=""
|
||||
|
||||
# determine the publicIP/domain that LND should announce
|
||||
if [ ${#lndAddress} -gt 3 ]; then
|
||||
|
||||
# update public IP on boot
|
||||
# wait otherwise looking for publicIP fails
|
||||
sleep 5
|
||||
freshPublicIP=$(curl -s http://v4.ipv6-test.com/api/myip.php)
|
||||
# use domain as PUBLICIP
|
||||
freshPublicIP="${lndAddress}"
|
||||
|
||||
# sanity check on IP data
|
||||
# see https://github.com/rootzoll/raspiblitz/issues/371#issuecomment-472416349
|
||||
echo "-> sanity check of IP data: ${freshPublicIP}"
|
||||
if [[ $freshPublicIP =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
|
||||
echo "OK IPv6"
|
||||
elif [[ $freshPublicIP =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]; then
|
||||
echo "OK IPv4"
|
||||
else
|
||||
echo "FAIL - not an IPv4 or IPv6 address"
|
||||
freshPublicIP=""
|
||||
|
||||
# update public IP on boot
|
||||
# wait otherwise looking for publicIP fails
|
||||
sleep 5
|
||||
freshPublicIP=$(curl -s http://v4.ipv6-test.com/api/myip.php)
|
||||
|
||||
# sanity check on IP data
|
||||
# see https://github.com/rootzoll/raspiblitz/issues/371#issuecomment-472416349
|
||||
echo "-> sanity check of IP data: ${freshPublicIP}"
|
||||
if [[ $freshPublicIP =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
|
||||
echo "OK IPv6"
|
||||
elif [[ $freshPublicIP =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]; then
|
||||
echo "OK IPv4"
|
||||
else
|
||||
echo "FAIL - not an IPv4 or IPv6 address"
|
||||
freshPublicIP=""
|
||||
fi
|
||||
|
||||
if [ ${#freshPublicIP} -eq 0 ]; then
|
||||
# prevent having no publicIP set at all and LND getting stuck
|
||||
# https://github.com/rootzoll/raspiblitz/issues/312#issuecomment-462675101
|
||||
if [ ${#publicIP} -eq 0 ]; then
|
||||
localIP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
|
||||
echo "WARNING: No publicIP information at all - working with placeholder: ${localIP}" >> $logFile
|
||||
freshPublicIP="${localIP}"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# set publicip value in raspiblitz.conf
|
||||
if [ ${#freshPublicIP} -eq 0 ]; then
|
||||
# prevent having no publicIP set at all and LND getting stuck
|
||||
# https://github.com/rootzoll/raspiblitz/issues/312#issuecomment-462675101
|
||||
if [ ${#publicIP} -eq 0 ]; then
|
||||
localIP=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
|
||||
echo "WARNING: No publicIP information at all - working with placeholder: ${localIP}" >> $logFile
|
||||
freshPublicIP="${localIP}"
|
||||
fi
|
||||
fi
|
||||
if [ ${#freshPublicIP} -eq 0 ]; then
|
||||
echo "WARNING: Was not able to determine external IP on startup." >> $logFile
|
||||
echo "WARNING: Was not able to determine external IP/domain on startup." >> $logFile
|
||||
else
|
||||
publicIPValueExists=$( sudo cat ${configFile} | grep -c 'publicIP=' )
|
||||
if [ ${publicIPValueExists} -gt 1 ]; then
|
||||
@ -344,10 +371,10 @@ if [ ${configExists} -eq 1 ]; then
|
||||
fi
|
||||
if [ ${publicIPValueExists} -eq 0 ]; then
|
||||
echo "create value (${freshPublicIP})" >> $logFile
|
||||
echo "publicIP=${freshPublicIP}" >> $configFile
|
||||
echo "publicIP='${freshPublicIP}'" >> $configFile
|
||||
else
|
||||
echo "update value (${freshPublicIP})" >> $logFile
|
||||
sed -i "s/^publicIP=.*/publicIP=${freshPublicIP}/g" ${configFile}
|
||||
sed -i "s/^publicIP=.*/publicIP='${freshPublicIP}'/g" ${configFile}
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -10,7 +10,7 @@ After=bitcoind.service
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/mnt/hdd/raspiblitz.conf
|
||||
ExecStart=/usr/local/bin/lnd --externalip=${publicIP}
|
||||
ExecStart=/usr/local/bin/lnd --externalip=${publicIP}:{lndPort}
|
||||
PIDFile=/home/bitcoin/.lnd/lnd.pid
|
||||
User=bitcoin
|
||||
Group=bitcoin
|
||||
|
@ -37,6 +37,11 @@ StandardOutput=journal
|
||||
WantedBy=multi-user.target
|
||||
"""
|
||||
|
||||
# get LND port form lnd.conf
|
||||
LNDPORT = subprocess.getoutput("sudo cat /mnt/hdd/lnd/lnd.conf | grep '^listen=*' | cut -f2 -d':'")
|
||||
if len(LNDPORT) == 0:
|
||||
LNDPORT="9735"
|
||||
|
||||
#
|
||||
# RESTORE = SWITCHING ON with restore flag on
|
||||
# on restore other external scripts dont need calling
|
||||
@ -93,6 +98,11 @@ if sys.argv[1] == "on":
|
||||
if port_external.isdigit() == False:
|
||||
print("[INTERNAL-PORT]<[EXTERNAL-PORT] external not number '%s'" % (sys.argv[i]))
|
||||
sys.exit(1)
|
||||
if port_internal == LNDPORT:
|
||||
if port_internal != port_external:
|
||||
print("FAIL: When tunneling your local LND port '%s' it needs to be the same on the external server, but is '%s'" % (LNDPORT,port_external))
|
||||
print("Try again by using the same port. If you cant change the external port, change local LND port with: /home/config.scripts/lnd.setport.sh")
|
||||
sys.exit(1)
|
||||
|
||||
ssh_ports = ssh_ports + "\"%s\" " % (sys.argv[i])
|
||||
additional_parameters= additional_parameters + "-R %s:localhost:%s " % (port_external,port_internal)
|
||||
@ -140,6 +150,9 @@ if sys.argv[1] == "on":
|
||||
if file_content.count("sshtunnel=") == 0:
|
||||
file_content = file_content+"\nsshtunnel=''"
|
||||
file_content = re.sub("sshtunnel=.*", "sshtunnel='%s %s'" % (ssh_server, ssh_ports), file_content)
|
||||
if restoringOnUpdate == False:
|
||||
serverdomain=ssh_server.split("@")[1]
|
||||
file_content = re.sub("lndAddress=.*", "lndAddress='%s'" % (serverdomain), file_content)
|
||||
file_content = "".join([s for s in file_content.splitlines(True) if s.strip("\r\n")]) + "\n"
|
||||
print(file_content)
|
||||
with open("/mnt/hdd/raspiblitz.conf", "w") as text_file:
|
||||
@ -189,6 +202,7 @@ elif sys.argv[1] == "off":
|
||||
with open('/mnt/hdd/raspiblitz.conf') as f:
|
||||
file_content = f.read()
|
||||
file_content = re.sub("sshtunnel=.*", "", file_content)
|
||||
file_content = re.sub("lndAddress=.*", "lndAddress=''", file_content)
|
||||
file_content = re.sub("\n\n", "\n", file_content)
|
||||
print(file_content)
|
||||
with open("/mnt/hdd/raspiblitz.conf", "w") as text_file:
|
||||
|
@ -64,18 +64,18 @@ echo "change port in lnd config"
|
||||
sudo sed -i "s/^listen=.*/listen=0.0.0.0:${portnumber}/g" /mnt/hdd/lnd/lnd.conf
|
||||
|
||||
# add to raspiblitz.config (so it can survive update)
|
||||
valueExists=$(sudo cat /mnt/hdd/raspiblitz.conf | grep -c 'customPortLND=')
|
||||
valueExists=$(sudo cat /mnt/hdd/raspiblitz.conf | grep -c 'lndPort=')
|
||||
if [ ${valueExists} -eq 0 ]; then
|
||||
# add as new value
|
||||
echo "customPortLND=${portnumber}" >> /mnt/hdd/raspiblitz.conf
|
||||
echo "lndPort=${portnumber}" >> /mnt/hdd/raspiblitz.conf
|
||||
else
|
||||
# update existing value
|
||||
sudo sed -i "s/^customPortLND=.*/customPortLND=${portnumber}/g" /mnt/hdd/raspiblitz.conf
|
||||
sudo sed -i "s/^lndPort=.*/lndPort=${portnumber}/g" /mnt/hdd/raspiblitz.conf
|
||||
fi
|
||||
|
||||
# editing service file
|
||||
echo "editing /etc/systemd/system/lnd.service"
|
||||
sudo sed -i "s/^ExecStart=\/usr\/local\/bin\/lnd.*/ExecStart=\/usr\/local\/bin\/lnd --externalip=\${publicIP}:${portnumber}/g" /etc/systemd/system/lnd.service
|
||||
sudo sed -i "s/^ExecStart=\/usr\/local\/bin\/lnd.*/ExecStart=\/usr\/local\/bin\/lnd --externalip=\${publicIP}:\${lndPort}/g" /etc/systemd/system/lnd.service
|
||||
|
||||
# enable service again
|
||||
echo "enable service again"
|
||||
|
Loading…
x
Reference in New Issue
Block a user