From 3e182978ad370b655c20f25d526175128eeffe36 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 10 Sep 2025 09:14:15 +0200 Subject: [PATCH] Improve npmplus credential retrieval and messaging (#7532) * Improve npmplus credential retrieval and messaging Enhanced the install script to attempt live log monitoring for credentials if not found initially, and updated the info message in npmplus.json to guide users to check docker logs if the credentials file is missing. * Update npmplus.json * Change updateable status to true in npmplus.json --- frontend/public/json/npmplus.json | 6 +++--- install/npmplus-install.sh | 27 ++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/frontend/public/json/npmplus.json b/frontend/public/json/npmplus.json index 96265f859..dd368a431 100644 --- a/frontend/public/json/npmplus.json +++ b/frontend/public/json/npmplus.json @@ -6,7 +6,7 @@ ], "date_created": "2025-03-13", "type": "ct", - "updateable": false, + "updateable": true, "privileged": false, "interface_port": 81, "documentation": "https://github.com/ZoeyVid/NPMplus/blob/develop/README.md", @@ -39,7 +39,7 @@ } ], "default_credentials": { - "username": "root", + "username": "admin@example.org", "password": null }, "notes": [ @@ -52,7 +52,7 @@ "type": "info" }, { - "text": "Application credentials: `cat /opt/.npm_pwd`", + "text": "Application credentials: `cat /opt/.npm_pwd` - if file not exist in LXC check docker logs for password with `docker logs npmplus`", "type": "info" } ] diff --git a/install/npmplus-install.sh b/install/npmplus-install.sh index 1162bc45c..58688240f 100644 --- a/install/npmplus-install.sh +++ b/install/npmplus-install.sh @@ -89,19 +89,36 @@ customize msg_info "Retrieving Default Login (Patience)" PASSWORD_FOUND=0 + for i in {1..60}; do - PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | awk '/Creating a new user:/ { print; exit }') - if [[ -n "$PASSWORD_LINE" ]]; then - PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}') - echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd + PASSWORD_LINE=$( + { awk '/Creating a new user:/{print; exit}' < <(docker logs "$CONTAINER_ID" 2>&1); } || true + ) + + if [[ -n "${PASSWORD_LINE:-}" ]]; then + PASSWORD="${PASSWORD_LINE#*password: }" + printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd msg_ok "Saved default login to /opt/.npm_pwd" PASSWORD_FOUND=1 break fi sleep 2 done +if [[ $PASSWORD_FOUND -eq 0 ]]; then + PASSWORD_LINE=$( + timeout 30s bash -c ' + docker logs -f --since=0s --tail=0 "$1" 2>&1 | awk "/Creating a new user:/{print; exit}" + ' _ "$CONTAINER_ID" || true + ) + if [[ -n "${PASSWORD_LINE:-}" ]]; then + PASSWORD="${PASSWORD_LINE#*password: }" + printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd + msg_ok "Saved default login to /opt/.npm_pwd (live)" + PASSWORD_FOUND=1 + fi +fi if [[ $PASSWORD_FOUND -eq 0 ]]; then - msg_error "Could not retrieve default login after 60 seconds." + msg_error "Could not retrieve default login after 120s." echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n" fi