Added log helper

main
Anthony 2025-04-11 01:48:07 +08:00
parent 7d6eb40d13
commit af8889bd3e
2 changed files with 176 additions and 177 deletions

24
log_helper.sh 100644
View File

@ -0,0 +1,24 @@
#!/bin/bash
# Simple logging function for SFTP User Addon
log_message() {
local level="$1"
local message="$2"
local logfile="$3"
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$timestamp][$level] $message" >> "/home/jelastic/add-sftp-user-addon/logs/$logfile"
# Also log to main log
echo "[$timestamp][$level] $message" >> "/home/jelastic/add-sftp-user-addon/logs/script_output.log"
# Log errors/warnings
if [[ "$level" == "ERROR" || "$level" == "WARNING" ]]; then
echo "[$timestamp][$level] $message" >> "/home/jelastic/add-sftp-user-addon/logs/errors.log"
fi
# Log success/info
if [[ "$level" == "INFO" || "$level" == "SUCCESS" ]]; then
echo "[$timestamp][$level] $message" >> "/home/jelastic/add-sftp-user-addon/logs/operations.log"
fi
}

View File

@ -76,7 +76,10 @@ onInstall:
# Download scripts
wget https://deploy-proxy.mightybox.io/addons/add-sftp-user/raw/branch/main/add-sftp.sh -O /home/jelastic/add-sftp-user-addon/add-sftp.sh
wget https://deploy-proxy.mightybox.io/addons/add-sftp-user/raw/branch/main/log_helper.sh -O /home/jelastic/add-sftp-user-addon/log_helper.sh
chmod +x /home/jelastic/add-sftp-user-addon/add-sftp.sh
chmod +x /home/jelastic/add-sftp-user-addon/log_helper.sh
# Very important - fix /home directory permissions for SFTP chroot
echo "$(date) - Checking and fixing /home directory permissions for SFTP chroot" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
@ -91,16 +94,6 @@ onInstall:
chmod 755 /home
echo "Fixed /home ownership to root:root with 755 permissions" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
# Create standard SFTP config helper
cat > /home/jelastic/add-sftp-user-addon/log_helper.sh << 'EOF'
#!/bin/bash
# Logging helper script
# ... content of log_helper.sh ...
EOF
chmod +x /home/jelastic/add-sftp-user-addon/log_helper.sh
echo "$(date) - Installing SFTP addon on Jelastic environment" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
- cmd[cp]:
@ -216,24 +209,22 @@ actions:
LOG_FILE="/home/jelastic/add-sftp-user-addon/logs/password_change.log"
touch "$LOG_FILE"
# Silent source and redirect all logging
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "======== STARTING PASSWORD CHANGE ========" "password_change.log"
jps_log "INFO" "Verifying user exists: ${settings.manage_username}" "password_change.log"
# Log start of process
log_message "INFO" "======== STARTING PASSWORD CHANGE ========" "password_change.log"
log_message "INFO" "Verifying user exists: ${settings.manage_username}" "password_change.log"
# Check if user exists without logging to stdout
# Check if user exists
if id ${settings.manage_username} &>/dev/null; then
jps_log "INFO" "User ${settings.manage_username} exists" "password_change.log"
log_message "INFO" "User ${settings.manage_username} exists" "password_change.log"
exit 0
else
jps_log "ERROR" "User ${settings.manage_username} does not exist" "password_change.log"
# Only output the error message
log_message "ERROR" "User ${settings.manage_username} does not exist" "password_change.log"
echo "User does not exist"
exit 1
fi
} &>> "$LOG_FILE"
- if ("${response.exitStatus}" != "0"):
return:
type: error
@ -251,24 +242,22 @@ actions:
- cmd[cp]:
user: root
commands: |-
# Redirect all logging
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "Changing password for user: ${settings.manage_username}" "password_change.log"
log_message "INFO" "Changing password for user: ${settings.manage_username}" "password_change.log"
# Change password using echo and chpasswd
if echo "${settings.manage_username}:${globals.password}" | /usr/sbin/chpasswd; then
jps_log "SUCCESS" "Password changed successfully for ${settings.manage_username}" "password_change.log"
log_message "SUCCESS" "Password changed successfully for ${settings.manage_username}" "password_change.log"
echo "Password changed for ${settings.manage_username} at $(date)" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
exit 0
else
jps_log "ERROR" "Failed to change password for ${settings.manage_username}" "password_change.log"
log_message "ERROR" "Failed to change password for ${settings.manage_username}" "password_change.log"
exit 1
fi
jps_log "SUCCESS" "======== PASSWORD CHANGE COMPLETED ========" "password_change.log"
} &>> /home/jelastic/add-sftp-user-addon/logs/password_change.log
log_message "SUCCESS" "======== PASSWORD CHANGE COMPLETED ========" "password_change.log"
- if ("${response.exitStatus}" != "0"):
return: passwordChangeError
- return: passwordChangeSuccess
@ -281,23 +270,22 @@ actions:
LOG_FILE="/home/jelastic/add-sftp-user-addon/logs/user_deletion.log"
touch "$LOG_FILE"
# Silent source and redirect all logging
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "======== STARTING USER DELETION ========" "user_deletion.log"
jps_log "INFO" "Verifying user exists: ${settings.manage_username}" "user_deletion.log"
# Log start of process
log_message "INFO" "======== STARTING USER DELETION ========" "user_deletion.log"
log_message "INFO" "Verifying user exists: ${settings.manage_username}" "user_deletion.log"
# Check if user exists without logging to stdout
# Check if user exists
if id ${settings.manage_username} &>/dev/null; then
jps_log "INFO" "User ${settings.manage_username} exists" "user_deletion.log"
log_message "INFO" "User ${settings.manage_username} exists" "user_deletion.log"
exit 0
else
jps_log "ERROR" "User ${settings.manage_username} does not exist" "user_deletion.log"
# Only output the error message
log_message "ERROR" "User ${settings.manage_username} does not exist" "user_deletion.log"
echo "User does not exist"
exit 1
fi
} &>> "$LOG_FILE"
- if ("${response.exitStatus}" != "0"):
return:
type: error
@ -307,21 +295,19 @@ actions:
- cmd[cp]:
user: root
commands: |-
# Redirect all logging
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "Checking home directory for: ${settings.manage_username}" "user_deletion.log"
log_message "INFO" "Checking home directory for: ${settings.manage_username}" "user_deletion.log"
if test -d /home/sftpusers/${settings.manage_username}; then
jps_log "INFO" "Home directory found: /home/sftpusers/${settings.manage_username}" "user_deletion.log"
log_message "INFO" "Home directory found: /home/sftpusers/${settings.manage_username}" "user_deletion.log"
exit 0
else
jps_log "ERROR" "Home directory not found for user: ${settings.manage_username}" "user_deletion.log"
# Only output the error message
log_message "ERROR" "Home directory not found for user: ${settings.manage_username}" "user_deletion.log"
echo "User home directory not found"
exit 1
fi
} &>> /home/jelastic/add-sftp-user-addon/logs/user_deletion.log
- if ("${response.exitStatus}" != "0"):
return:
type: error
@ -331,44 +317,40 @@ actions:
- cmd[cp]:
user: root
commands: |-
# Redirect all logging
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "Starting deletion of user: ${settings.manage_username}" "user_deletion.log"
log_message "INFO" "Starting deletion of user: ${settings.manage_username}" "user_deletion.log"
# First unmount any bind mounts
if mount | grep -q "/home/sftpusers/${settings.manage_username}/data/ROOT"; then
jps_log "INFO" "Unmounting bind mount for user: ${settings.manage_username}" "user_deletion.log"
log_message "INFO" "Unmounting bind mount for user: ${settings.manage_username}" "user_deletion.log"
umount /home/sftpusers/${settings.manage_username}/data/ROOT
fi
# Remove from fstab
if grep -q "/home/sftpusers/${settings.manage_username}/data/ROOT" /etc/fstab; then
jps_log "INFO" "Removing bind mount from fstab for user: ${settings.manage_username}" "user_deletion.log"
log_message "INFO" "Removing bind mount from fstab for user: ${settings.manage_username}" "user_deletion.log"
sed -i "\|/home/sftpusers/${settings.manage_username}/data/ROOT|d" /etc/fstab
fi
# Delete user account
if userdel ${settings.manage_username}; then
jps_log "SUCCESS" "User account deleted: ${settings.manage_username}" "user_deletion.log"
log_message "SUCCESS" "User account deleted: ${settings.manage_username}" "user_deletion.log"
else
jps_log "ERROR" "Failed to delete user account: ${settings.manage_username}" "user_deletion.log"
log_message "ERROR" "Failed to delete user account: ${settings.manage_username}" "user_deletion.log"
exit 1
fi
# Remove home directory
if rm -rf /home/sftpusers/${settings.manage_username}; then
jps_log "SUCCESS" "Home directory removed: /home/sftpusers/${settings.manage_username}" "user_deletion.log"
log_message "SUCCESS" "Home directory removed: /home/sftpusers/${settings.manage_username}" "user_deletion.log"
else
jps_log "WARNING" "Failed to remove home directory for: ${settings.manage_username}" "user_deletion.log"
log_message "WARNING" "Failed to remove home directory for: ${settings.manage_username}" "user_deletion.log"
fi
# Log to main log file
echo "User ${settings.manage_username} deleted at $(date)" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
jps_log "SUCCESS" "======== USER DELETION COMPLETED ========" "user_deletion.log"
} &>> /home/jelastic/add-sftp-user-addon/logs/user_deletion.log
log_message "SUCCESS" "======== USER DELETION COMPLETED ========" "user_deletion.log"
exit 0
- if ("${response.exitStatus}" != "0"):
return: deleteUserError
- return: deleteUserSuccess
@ -380,32 +362,25 @@ actions:
LOG_FILE="/home/jelastic/add-sftp-user-addon/logs/list_users.log"
touch "$LOG_FILE"
# For list_users, log only to file, return clean output to response
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
# Source the logging helper
source /home/jelastic/add-sftp-user-addon/log_helper.sh
jps_log "INFO" "======== LISTING SFTP USERS ========" "list_users.log"
jps_log "INFO" "Retrieving list of SFTP users" "list_users.log"
} &>> "$LOG_FILE"
# Log start of process
log_message "INFO" "======== LISTING SFTP USERS ========" "list_users.log"
log_message "INFO" "Retrieving list of SFTP users" "list_users.log"
# List users without logging to stdout - only return the clean list
USERS_LIST=$(ls -ld /home/sftpusers/* 2>/dev/null | grep -v "total" | awk '{printf "Username: %s - Created: %s %s %s\n", substr($9, 17), $6, $7, $8}')
# Check if any users were found
if [ -z "$USERS_LIST" ]; then
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
jps_log "WARNING" "No SFTP users found" "list_users.log"
jps_log "INFO" "======== USER LISTING COMPLETED ========" "list_users.log"
} &>> "$LOG_FILE"
log_message "WARNING" "No SFTP users found" "list_users.log"
log_message "INFO" "======== USER LISTING COMPLETED ========" "list_users.log"
echo ""
else
{
source /home/jelastic/add-sftp-user-addon/log_helper.sh &>/dev/null
jps_log "SUCCESS" "Retrieved list of SFTP users" "list_users.log"
jps_log "DEBUG" "Found users: $(echo "$USERS_LIST" | wc -l)" "list_users.log"
jps_log "INFO" "======== USER LISTING COMPLETED ========" "list_users.log"
} &>> "$LOG_FILE"
log_message "SUCCESS" "Retrieved list of SFTP users" "list_users.log"
log_message "DEBUG" "Found users: $(echo "$USERS_LIST" | wc -l)" "list_users.log"
log_message "INFO" "======== USER LISTING COMPLETED ========" "list_users.log"
echo "$USERS_LIST"
fi
- if ("${response.exitStatus}" != "0" || "${response.out}" == ""):