add logging and logfile

This commit is contained in:
serinko
2025-11-24 11:40:22 +01:00
parent 52f98de73b
commit 28dc7cae4d
2 changed files with 83 additions and 22 deletions
@@ -3,6 +3,8 @@
# run this script as root
set -euo pipefail
set +o errtrace
###############################################################################
# colors (no emojis)
@@ -11,6 +13,8 @@ GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m'
CYAN='\033[0;36m'
RESET='\033[0m'
info() {
printf "%b\n" "${YELLOW}[INFO] $*${NC}"
@@ -32,6 +36,44 @@ if [ "$(id -u)" -ne 0 ]; then
exit 1
fi
###############################################################################
# Logging
###############################################################################
LOG_FILE="/var/log/nym/network_tunnel_manager.log"
mkdir -p "$(dirname "$LOG_FILE")"
touch "$LOG_FILE"
chmod 640 "$LOG_FILE"
# rotate log if >10MB
if [[ -f "$LOG_FILE" && $(stat -c%s "$LOG_FILE") -gt 10485760 ]]; then
mv "$LOG_FILE" "${LOG_FILE}.1"
touch "$LOG_FILE"
chmod 640 "$LOG_FILE"
fi
echo "----- $(date '+%Y-%m-%d %H:%M:%S') START network-tunnel-manager -----" | tee -a "$LOG_FILE"
echo -e "${CYAN}Logs are being saved locally to:${RESET} $LOG_FILE"
echo -e "${CYAN}These logs never leave your machine.${RESET}"
echo "" | tee -a "$LOG_FILE"
# safe logger
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
# simple redirection that keeps function scope intact
add_log_redirection() {
exec > >(sed -u 's/\x1b\[[0-9;]*m//g' | tee -a "$LOG_FILE") 2>&1
}
add_log_redirection
trap 'log "ERROR: exit=$? line=$LINENO cmd=$(printf "%q" "$BASH_COMMAND")"' ERR
START_TIME=$(date +%s)
###############################################################################
# basic config
###############################################################################
@@ -662,7 +704,7 @@ apply_spamhaus_blocklist() {
mkdir -p "$(dirname "$POLICY_FILE")"
if ! wget -q "$EXIT_POLICY_LOCATION" -O "$POLICY_FILE" 2>/dev/null; then
arror "failed to download exit policy, using minimal blocklist"
error "failed to download exit policy, using minimal blocklist"
cat >"$POLICY_FILE" <<EOF
ExitPolicy reject 5.188.10.0/23:*
ExitPolicy reject 31.132.36.0/22:*
@@ -1107,6 +1149,7 @@ complete_networking_configuration() {
###############################################################################
cmd="${1:-help}"
log "COMMAND: $cmd ARGS: $*"
case "$cmd" in
full_tunnel_setup)
@@ -1254,6 +1297,11 @@ EOF
esac
if [[ "$cmd" != help && "$cmd" != "--help" && "$cmd" != "-h" && ${status:-1} -eq 0 ]]; then
echo ""
echo "Logs saved locally at: $LOG_FILE"
ok "operation ${cmd} completed"
fi
END_TIME=$(date +%s)
ELAPSED=$((END_TIME - START_TIME))
echo "----- $(date '+%Y-%m-%d %H:%M:%S') END operation ${cmd} (status $status, duration ${ELAPSED}s) -----" >> "$LOG_FILE"
exit $status
@@ -7,6 +7,7 @@
# RUN AS ROOT
set -euo pipefail
set +o errtrace
# Colors
RED="\033[0;31m"
@@ -17,25 +18,39 @@ BOLD="\033[1m"
RESET="\033[0m"
# Logging
LOG_FILE="/var/log/nym-bridge-helper.log"
LOG_FILE="/var/log/nym/quic_bridge_deployment.log"
mkdir -p "$(dirname "$LOG_FILE")"
# rotate log if >10MB BEFORE writing START header
if [[ -f "$LOG_FILE" && $(stat -c%s "$LOG_FILE") -gt 10485760 ]]; then
mv "$LOG_FILE" "${LOG_FILE}.1"
fi
touch "$LOG_FILE"
chmod 640 "$LOG_FILE"
echo "----- $(date '+%Y-%m-%d %H:%M:%S') START quic-bridge-manager -----" | tee -a "$LOG_FILE"
echo -e "${CYAN}Logs are being saved locally to:${RESET} $LOG_FILE"
echo -e "${CYAN}These logs never leave your machine.${RESET}"
echo "" | tee -a "$LOG_FILE"
# safe logger
# safe logger function
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
# simple redirection that keeps function scope intact
# global redirection, strip ANSI before writing to log
add_log_redirection() {
exec > >(tee -a "$LOG_FILE") 2>&1
exec > >(sed -u 's/\x1b\[[0-9;]*m//g' | tee -a "$LOG_FILE") 2>&1
}
add_log_redirection
# trap errors with full visibility
trap 'log "ERROR: exit=$? line=$LINENO cmd=\"$BASH_COMMAND\""' ERR
START_TIME=$(date +%s)
# Constants / Paths
REQUIRED_CMDS=(ip jq curl openssl dpkg)
BRIDGE_BIN="/usr/local/bin/nym-bridge"
@@ -493,7 +508,7 @@ full_bridge_setup() {
echo "Step 2/6: Installing bridge binary..."
install_bridge_binary
echo "[Bridge Install] $(date '+%F %T') $( $BRIDGE_BIN --version 2>/dev/null || echo 'nym-bridge (unknown)')" \
>> /var/log/nym-bridge-version.log
>> /var/log/nym/nym-bridge-version.log
press_enter "Press Enter to continue..."
echo ""
@@ -533,10 +548,6 @@ full_bridge_setup() {
echo -e "${YELLOW}------------------------------------------${RESET}"
echo -e "All done! You can safely close this session."
echo -e "${YELLOW}------------------------------------------${RESET}"
echo ""
echo "Logs saved locally at: $LOG_FILE"
echo "Operation 'full_bridge_setup' completed."
echo ""
hr
echo -e "${CYAN}Next steps and verification:${RESET}"
@@ -574,22 +585,26 @@ full_bridge_setup() {
graceful_exit() {
local exit_code=$?
echo ""
echo -e "${YELLOW}------------------------------------------${RESET}"
END_TIME=$(date +%s)
ELAPSED=$((END_TIME - START_TIME))
# Only print success message when there were NO errors
if [[ $exit_code -eq 0 ]]; then
echo -e "${GREEN}Setup completed successfully. Exiting cleanly.${RESET}"
else
echo -e "${RED}Script exited with errors (code: $exit_code).${RESET}"
echo "Check the log at: $LOG_FILE"
echo "Operation '${COMMAND}' completed."
fi
echo -e "${YELLOW}------------------------------------------${RESET}"
echo ""
exec >&- 2>&-
# END footer always logged
echo "----- $(date '+%Y-%m-%d %H:%M:%S') END operation ${COMMAND} (status $exit_code, duration ${ELAPSED}s) -----" >> "$LOG_FILE"
exit $exit_code
}
trap graceful_exit EXIT
# Command menu
COMMAND="${1:-help}"
trap 'log "ERROR: exit=$? line=$LINENO cmd=$(printf "%q" "$BASH_COMMAND")"' ERR
trap graceful_exit EXIT
case "${1:-}" in
full_bridge_setup) full_bridge_setup ;;
install_bridge_binary) install_bridge_binary ;;
@@ -615,5 +630,3 @@ case "${1:-}" in
;;
esac
echo "Operation '${1:-help}' completed."