Skip to content

Commit

Permalink
Merge pull request #223 from nolim1t/master-softwareupgrade
Browse files Browse the repository at this point in the history
Will put this into master now as its working. Can deal with some of the other coding style issues later.
  • Loading branch information
nolim1t committed May 29, 2019
2 parents efc870e + 871120a commit 3d7323a
Show file tree
Hide file tree
Showing 9 changed files with 242 additions and 148 deletions.
1 change: 1 addition & 0 deletions etc/apk/protected_paths.d/lbu.list
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@
+usr/local/sbin/check-invoicer-status
+usr/local/sbin/lncm-createwallet.py
+usr/local/sbin/lncm-istorprivkeycreated.py
+usr/local/sbin/lncm-configinvoicer.py
166 changes: 107 additions & 59 deletions etc/init.d/lncm-post
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,16 @@ start() {
/usr/bin/pip3 install docker-compose==1.23.2
}

install_noma() {
echo "Install Noma in dependencies"
/sbin/apk add py3-psutil
/usr/bin/pip3 install noma==0.4.5
}

install_toml() {
# Install TOTML parsing library (https://github.com/uiri/toml) so that we can write to the invoicer config files nicely
/usr/bin/pip3 install pip install toml
echo "Install TOML PIP3 Library"
/usr/bin/pip3 install toml==0.10.0
}

usb_setup() {
Expand Down Expand Up @@ -92,19 +99,33 @@ start() {
# Replace strings with what was generated
RPCAUTHLINE="$(cat /media/important/important/rpcauth.txt)"
GENERATEDPW="$(cat /media/important/important/rpcpass.txt)"

# Configure bitcoind
echo "Configuring bitcoind..."
/bin/sed -i "s/GENERATEDRPCAUTH/$RPCAUTHLINE/g;" /home/lncm/bitcoin/bitcoin.conf

# Configure LND
echo "Configuring LND..."
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/lnd/lnd.conf
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/lnd/tor/lnd.conf
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/lnd/clearnet/lnd.conf
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/lnd/lnd.conf
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/lnd/tor/lnd.conf
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/lnd/clearnet/lnd.conf

# Write to docker compose
echo "Configuring docker-compose..."
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/compose/docker-compose.yml
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/compose/tor/docker-compose.yml
/bin/sed -i "s/RANDOMUSER/lncm/g;" /home/lncm/compose/clearnet/docker-compose.yml
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/compose/docker-compose.yml
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/compose/tor/docker-compose.yml
/bin/sed -i "s/RANDOMPASS/$GENERATEDPW/g;" /home/lncm/compose/clearnet/docker-compose.yml

# Configure invoicer
echo "Configuring invoicer..."
/usr/local/sbin/lncm-configinvoicer.py "lncm" "$GENERATEDPW" || exit 1

else
echo "Error generating RPC configuration"
exit 1
Expand All @@ -126,11 +147,11 @@ start() {
setup_tor() {
CHECKTOR_HOSTNAME=1
# Check to see if Tor generated directory exists
while [ ! -d /var/lib/tor/lightning ] && [ $CHECKTOR_HOSTNAME -lt 10 ];
while [ ! -d /var/lib/tor/lnd-v3 ] && [ $CHECKTOR_HOSTNAME -lt 10 ];
do
echo "Tor generated directory doesn't exist yet.. waiting";
CHECKTOR_HOSTNAME=$((CHECKTOR_HOSTNAME+1))
sleep 1;
sleep 2;
done

# Now check to see if hostname exists
Expand All @@ -143,59 +164,81 @@ start() {
fi
}

# config_bitcoind() {
# echo "Checking for existing bitcoind config"
# if [ -f /media/important/important/bitcoin/bitcoin.conf ]; then
# echo "bitcoin.conf exists, making backup and replacing"
# /bin/cp /media/important/important/bitcoin/bitcoin.conf /media/important/important/bitcoin/bitcoin.conf.backup &&
# /bin/cp -f /home/lncm/bitcoin/bitcoin.conf /media/important/important/bitcoin/bitcoin.conf
# else
# echo "bitcoind.conf does not exist, creating"
# /bin/cp -f /home/lncm/bitcoin/bitcoin.conf /media/important/important/bitcoin/bitcoin.conf
# fi
# }

# config_lnd() {
# echo "Checking for existing lnd config"
# if [ -f /media/important/important/lnd/lnd.conf ]; then
# echo "lnd.conf exists, making backup and replacing"
# /bin/cp /media/important/important/lnd/lnd.conf /media/important/important/lnd/lnd.conf.backup &&
# /bin/cp -f /home/lncm/lnd/lnd.conf /media/important/important/lnd/lnd.conf
# else
# echo "lnd.conf does not exist, creating"
# /bin/cp -f /home/lncm/lnd/lnd.conf /media/important/important/lnd/lnd.conf
# fi
# }

# config_nginx() {
# echo "Checking for existing nginx config"
# if [ -f /media/important/important/nginx/nginx.conf ]; then
# echo "nginx.conf exists, making backup and replacing"
# /bin/cp /media/important/important/nginx/nginx.conf /media/important/important/nginx/nginx.conf.backup &&
# /bin/cp -f /home/lncm/nginx/nginx.conf /media/important/important/nginx/nginx.conf
# else
# echo "nginx.conf does not exist, creating"
# /bin/cp -f /home/lncm/nginx/nginx.conf /media/important/important/nginx/nginx.conf
# fi

# if [ -f /media/important/important/nginx/conf.d/default.conf ]; then
# echo "default.conf exists, making backup and replacing"
# /bin/cp /media/important/important/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf.backup &&
# /bin/cp -f /home/lncm/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf
# else
# echo "default.conf does not exists, creating"
# /bin/cp -f /home/lncm/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf
# fi

# if [ -f /media/important/important/nginx/mime.types ]; then
# echo "mime.types exists, making backup and replacing"
# /bin/cp /media/important/important/nginx/mime.types /media/important/important/nginx/mime.types.backup &&
# /bin/cp -f /home/lncm/nginx/mime.types /media/important/important/nginx/mime.types
# else
# echo "mime.types does not exist, creating"
# /bin/cp -f /home/lncm/nginx/mime.types /media/important/important/nginx/mime.types
# fi
# }
config_bitcoind() {
echo "Checking for existing bitcoind config (Archive folder)"
if [ -f /media/archive/archive/bitcoin/bitcoin.conf ]; then
echo "bitcoin.conf exists, making backup and replacing"
/bin/cp /media/archive/archive/bitcoin/bitcoin.conf /media/archive/archive/bitcoin/bitcoin.conf.backup &&
/bin/cp -f /home/lncm/bitcoin/bitcoin.conf /media/archive/archive/bitcoin/bitcoin.conf
else
echo "bitcoind.conf does not exist, creating"
/bin/cp -f /home/lncm/bitcoin/bitcoin.conf /media/archive/archive/bitcoin/bitcoin.conf
fi
}

config_lnd() {
echo "Checking for existing lnd config"
if [ -f /media/important/important/lnd/lnd.conf ]; then
echo "lnd.conf exists, making backup and replacing"
/bin/cp /media/important/important/lnd/lnd.conf /media/important/important/lnd/lnd.conf.backup &&
/bin/cp -f /home/lncm/lnd/lnd.conf /media/important/important/lnd/lnd.conf
else
echo "lnd.conf does not exist, creating"
/bin/cp -f /home/lncm/lnd/lnd.conf /media/important/important/lnd/lnd.conf
fi
}

config_nginx() {
if [[ ! -d /media/important/important/nginx ]]; then
echo "Creating nginx folders"
/bin/mkdir -p /media/important/important/nginx/conf.d
fi
if [[ ! -d /media/important/important/nginx/conf.d ]]; then
echo "Creating conf.d if it still doesn't exist"
/bin/mkdir -p /media/important/important/nginx/conf.d
fi
echo "Checking for existing nginx config"
if [ -f /media/important/important/nginx/nginx.conf ]; then
echo "nginx.conf exists, making backup and replacing"
/bin/cp /media/important/important/nginx/nginx.conf /media/important/important/nginx/nginx.conf.backup &&
/bin/cp -f /home/lncm/nginx/nginx.conf /media/important/important/nginx/nginx.conf
else
echo "nginx.conf does not exist, creating"
/bin/cp -f /home/lncm/nginx/nginx.conf /media/important/important/nginx/nginx.conf
fi

if [ -f /media/important/important/nginx/conf.d/default.conf ]; then
echo "default.conf exists, making backup and replacing"
/bin/cp /media/important/important/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf.backup &&
/bin/cp -f /home/lncm/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf
else
echo "default.conf does not exists, creating"
/bin/cp -f /home/lncm/nginx/conf.d/default.conf /media/important/important/nginx/conf.d/default.conf
fi

if [ -f /media/important/important/nginx/mime.types ]; then
echo "mime.types exists, making backup and replacing"
/bin/cp /media/important/important/nginx/mime.types /media/important/important/nginx/mime.types.backup &&
/bin/cp -f /home/lncm/nginx/mime.types /media/important/important/nginx/mime.types
else
echo "mime.types does not exist, creating"
/bin/cp -f /home/lncm/nginx/mime.types /media/important/important/nginx/mime.types
fi
}

# for v0.4.0 invoicer configuration
fetch_invoicerconfig() {
# Set up logs directory
if [[ ! -d /media/volatile/volatile/invoicer ]]; then
/bin/mkdir -p /media/volatile/volatile/invoicer
fi
# Set up config directory
if [[ ! -d /media/important/important/invoicer ]]; then
/bin/mkdir -p /media/important/important/invoicer
fi
cd /media/important/important/invoicer
wget https://raw.githubusercontent.com/lncm/invoicer/0.4.0/invoicer.example.conf -O /media/important/important/invoicer/invoicer.conf
}

fetch_invoicerui() {
echo "Checking for invoicer-ui"
Expand Down Expand Up @@ -249,17 +292,22 @@ start() {
move_cache
install_compose
install_toml
install_noma
usb_setup
verify_usb
# Fetch invoicer into path
fetch_invoicerconfig
fetch_rpcauth
check_rpc
# Configure invoicer, and services stage
generate_rpc
install_tor
enable_tor
setup_tor
# config_bitcoind
# config_lnd
# config_nginx
# Copy into path
config_bitcoind
config_lnd
config_nginx
fetch_invoicerui
install_crontab
disable_post
Expand Down
29 changes: 23 additions & 6 deletions etc/init.d/nginx
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,27 @@ depend() {

start() {
sleep 2 && \
docker load --input /media/mmcblk0p1/nginx.tar.gz && \
docker run --name=nginx -d --restart=unless-stopped --net host \
-v /etc/nginx:/etc/nginx \
-v /var/log/nginx:/var/log/nginx \
-v /home/lncm/public_html:/www \
nginx:1.14.2-alpine
docker load --input /media/mmcblk0p1/nginx.tar.gz

# Lets see which config file to use
if [[ ! -d /media/important/important/nginx ]]; then
# Old location
# nginx doesn't exist in /media/important/important so use the location on filesystem

docker run --name=nginx -d --restart=unless-stopped --net host \
-v /etc/nginx:/etc/nginx \
-v /var/log/nginx:/var/log/nginx \
-v /home/lncm/public_html:/www \
nginx:1.14.2-alpine
else
# Location on persistent store
docker run --name=nginx -d --restart=unless-stopped --net host \
-v /media/important/important/nginx:/etc/nginx \
-v /var/log/nginx:/var/log/nginx \
-v /home/lncm/public_html:/www \
nginx:1.14.2-alpine
# Store an empty file so we can script that we are using the important mount rather than filesystem
touch /media/important/important/using-nginx-important-mount
# TODO: Delete or Move old nginx location (or just leave it alone)
fi
}
18 changes: 6 additions & 12 deletions home/lncm/compose/tor/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
version: '3.7'
services:
bitcoind:
image: lncm/bitcoind:0.17.1
image: lncm/bitcoind:0.18.0-linux-arm
entrypoint: bitcoind -zmqpubrawblock=tcp://0.0.0.0:28332 -zmqpubrawtx=tcp://0.0.0.0:28333
volumes:
- /media/archive/archive/bitcoin/:/root/.bitcoin/
restart: always
network_mode: host

lnd:
Expand All @@ -20,21 +22,13 @@ services:
network_mode: host

invoicer:
image: lncm/invoicer:0.1.1
image: lncm/invoicer:0.4.0
volumes:
- /media/important/important/invoicer:/root/.lncm
- /media/important/important/lnd:/lnd
- /home/lncm/public_html:/static
- /media/volatile/volatile/invoicer:/logs
depends_on:
- lnd
restart: on-failure
environment:
- LNDHOST=localhost
- LNDPORT=10009
- PORT=8088
- GRPC_GO_RETRY=on
- BTCHOST=localhost
- BTCRPCUSER=RANDOMUSER
- BTCRPCPASS=RANDOMPASS
- INVOICER_HOSTPORT=invoicer:defaultpassw0rd@localhost:8088
- STATICDIR=/static/
network_mode: host
1 change: 0 additions & 1 deletion home/lncm/crontab
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
* * * * * /usr/local/sbin/lncm-unlock.py >> /var/log/unlocks.log 2>&1
* * * * * /usr/local/sbin/check-invoicer-status >> /var/log/checkinvoicer.log 2>&1
3 changes: 2 additions & 1 deletion home/lncm/lnd/tor/lnd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,5 @@ tor.active=1
tor.socks=9050
tor.control=9051
tor.v2=1
tor.dns=nodes.lightning.directory
; Uncomment as this is broken since May 28 2019
; tor.dns=nodes.lightning.directory
52 changes: 32 additions & 20 deletions home/lncm/nginx/conf.d/default.conf
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
# This is a default site configuration which will simply return 404, preventing
# chance access to any other virtualhost.

server {
listen 80 default_server;
listen [::]:80 default_server;
listen 80 default_server;
listen [::]:80 default_server;
# by default but currently is overridden
root /www;

location = / {
root /www/pos;
try_files $uri $uri/index.html =404;
}

# Default root
root /www;
# No special handling for /
location / {
}
location = /wifi {
root /www;
auth_basic "WiFi";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/index.html =404;
}

# You may need this to prevent return 404 recursion.
location = /404.html {
internal;
}
location /invoicer/ {
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
proxy_pass http://invoicer:8080/api/;
}
}
# invoicer
location /api {
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
proxy_pass http://localhost:8088/api;
}

# iotwifi endpoints
location /connect {
proxy_pass http://localhost:8080/connect;
}
location /status {
proxy_pass http://localhost:8080/status;
}
location /scan {
proxy_pass http://localhost:8080/scan;
}
}

0 comments on commit 3d7323a

Please sign in to comment.