Added log helper
parent
7d6eb40d13
commit
af8889bd3e
|
@ -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
|
||||
}
|
131
manifest.jps
131
manifest.jps
|
@ -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}" == ""):
|
||||
|
|
Loading…
Reference in New Issue