Added List Users
parent
52509d143b
commit
173a3f3d72
36
add-sftp.sh
36
add-sftp.sh
|
@ -1,13 +1,18 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e # Exit immediately if a command exits with a non-zero status
|
||||||
|
|
||||||
LOG_FILE="/home/jelastic/add-sftp-user-addon/logs/script_output.log"
|
LOG_FILE="/home/jelastic/add-sftp-user-addon/logs/script_output.log"
|
||||||
VERBOSE=1 # Set to 1 for verbose mode, 0 for normal mode
|
VERBOSE=1 # Set to 1 for verbose mode, 0 for normal mode
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
|
local filename=${2:-$LOG_FILE}
|
||||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
||||||
echo "$timestamp - $1" >> $LOG_FILE
|
local message="$timestamp - $1"
|
||||||
if [ "$VERBOSE" -eq 1 ]; then
|
if [ "$VERBOSE" -eq 1 ]; then
|
||||||
echo "$timestamp - $1"
|
echo "$message" | tee -a $filename
|
||||||
|
else
|
||||||
|
echo "$message" >> $filename
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,49 +33,38 @@ ROOT_DIRECTORY="/var/www/webroot/ROOT"
|
||||||
log "Script started"
|
log "Script started"
|
||||||
|
|
||||||
# Ensure the ROOT_DIRECTORY exists
|
# Ensure the ROOT_DIRECTORY exists
|
||||||
if [ ! -d "$ROOT_DIRECTORY" ]; then
|
[ ! -d "$ROOT_DIRECTORY" ] && error_exit "ROOT_DIRECTORY $ROOT_DIRECTORY does not exist." 2
|
||||||
error_exit "ROOT_DIRECTORY $ROOT_DIRECTORY does not exist." 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the group ownership of the ROOT_DIRECTORY
|
# Get the group ownership of the ROOT_DIRECTORY
|
||||||
ROOT_GROUP=$(stat -c '%G' $ROOT_DIRECTORY)
|
ROOT_GROUP=$(stat -c '%G' $ROOT_DIRECTORY)
|
||||||
|
|
||||||
# Check if user already exists
|
# Check if user already exists
|
||||||
if id "$USERNAME" &>/dev/null; then
|
id "$USERNAME" &>/dev/null && error_exit "User $USERNAME already exists." 3
|
||||||
log "ERROR: User $USERNAME already exists."
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create user with their own directory under /home/sftpusers/
|
# Create user with their own directory under /home/sftpusers/
|
||||||
mkdir -p $USER_HOME
|
mkdir -p $USER_HOME
|
||||||
useradd -d $USER_HOME $USERNAME
|
useradd -d $USER_HOME $USERNAME
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
error_exit "Failed to create user $USERNAME." 4
|
|
||||||
fi
|
|
||||||
echo "$USERNAME:$PASSWORD" | chpasswd
|
echo "$USERNAME:$PASSWORD" | chpasswd
|
||||||
|
|
||||||
|
# Log to sftp-users.log
|
||||||
|
log "User $USERNAME created with home directory $USER_HOME" "/home/jelastic/add-sftp-user-addon/logs/sftp-users.log"
|
||||||
|
|
||||||
# Create a symlink in the user's directory pointing to the shared ROOT_DIRECTORY
|
# Create a symlink in the user's directory pointing to the shared ROOT_DIRECTORY
|
||||||
ln -s $ROOT_DIRECTORY $USER_HOME/ROOT
|
ln -s $ROOT_DIRECTORY $USER_HOME/ROOT
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
error_exit "Failed to create symlink for $USERNAME." 5
|
|
||||||
fi
|
|
||||||
log "Symlink created for $USERNAME pointing to $ROOT_DIRECTORY"
|
log "Symlink created for $USERNAME pointing to $ROOT_DIRECTORY"
|
||||||
|
|
||||||
# Set user's group to the ROOT_GROUP
|
# Set user's group to the ROOT_GROUP
|
||||||
usermod -aG $ROOT_GROUP $USERNAME
|
usermod -aG $ROOT_GROUP $USERNAME
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
error_exit "Failed to modify groups for $USERNAME." 6
|
|
||||||
fi
|
|
||||||
log "$USERNAME added to group $ROOT_GROUP"
|
log "$USERNAME added to group $ROOT_GROUP"
|
||||||
|
|
||||||
# Adjust permissions and ownership for the user's directory
|
# Adjust permissions and ownership for the user's directory
|
||||||
chown $USERNAME:$ROOT_GROUP $USER_HOME
|
chown $USERNAME:$ROOT_GROUP $USER_HOME
|
||||||
chmod 750 $USER_HOME # Owner has rwx, group has r-x, others have no permissions
|
chmod 750 $USER_HOME
|
||||||
|
|
||||||
# Adjust permissions and ownership for the ROOT_DIRECTORY
|
# Adjust permissions and ownership for the ROOT_DIRECTORY
|
||||||
chown -R :$ROOT_GROUP /var/www/webroot/ROOT/
|
chown -R :$ROOT_GROUP /var/www/webroot/ROOT/
|
||||||
find /var/www/webroot/ROOT/ -type d -exec chmod 770 {} \; # For directories
|
find /var/www/webroot/ROOT/ -type d -exec chmod 770 {} \;
|
||||||
find /var/www/webroot/ROOT/ -type f -exec chmod 660 {} \; # For files
|
find /var/www/webroot/ROOT/ -type f -exec chmod 660 {} \;
|
||||||
|
|
||||||
# Set the SetGID bit on ROOT_DIRECTORY
|
# Set the SetGID bit on ROOT_DIRECTORY
|
||||||
chmod g+s $ROOT_DIRECTORY
|
chmod g+s $ROOT_DIRECTORY
|
||||||
|
|
81
manifest.jps
81
manifest.jps
|
@ -1,4 +1,7 @@
|
||||||
|
version: 0.1
|
||||||
|
id: addsftp
|
||||||
type: update
|
type: update
|
||||||
|
description: An addon to add new SFTP users. It can also manage created user accounts.
|
||||||
name: Add SFTP User
|
name: Add SFTP User
|
||||||
|
|
||||||
targetNodes:
|
targetNodes:
|
||||||
|
@ -34,46 +37,47 @@ globals:
|
||||||
sftpPort: 22
|
sftpPort: 22
|
||||||
|
|
||||||
onInstall:
|
onInstall:
|
||||||
- cmd[cp]: mkdir -p /home/jelastic/add-sftp-user-addon/
|
- cmd [cp]:
|
||||||
- cmd[cp]: mkdir -p /home/jelastic/add-sftp-user-addon/logs
|
user: root
|
||||||
- cmd[cp]: 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
|
commands: |-
|
||||||
- cmd[cp]: chmod +x /home/jelastic/add-sftp-user-addon/*.sh
|
mkdir -p /home/jelastic/add-sftp-user-addon/
|
||||||
|
mkdir -p /home/jelastic/add-sftp-user-addon/logs
|
||||||
|
touch /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
||||||
|
touch /home/jelastic/add-sftp-user-addon/logs/sftp-users.log
|
||||||
|
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
|
||||||
|
chmod +x /home/jelastic/add-sftp-user-addon/*.sh
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
|
user: root
|
||||||
commands:
|
commands:
|
||||||
- echo -e "\nMatch User user*\nPasswordAuthentication yes" >> /etc/ssh/sshd_config
|
- echo -e "\nMatch User user*\nPasswordAuthentication yes" >> /etc/ssh/sshd_config
|
||||||
user: root
|
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
|
user: root
|
||||||
commands:
|
commands:
|
||||||
- systemctl restart sshd
|
- systemctl restart sshd
|
||||||
user: root
|
|
||||||
- api: environment.control.RestartContainer
|
- api: environment.control.RestartContainer
|
||||||
nodeGroup: cp
|
nodeGroup: cp
|
||||||
nodeid: ${nodes.cp.id}
|
nodeid: ${nodes.cp.id}
|
||||||
- return: installSuccess
|
- return: installSuccess
|
||||||
|
|
||||||
|
menu:
|
||||||
|
confirmText: "Do you want to list all users?"
|
||||||
|
loadingText: "Loading users..."
|
||||||
|
action: "list_users"
|
||||||
|
caption: "List Users"
|
||||||
|
successText: "Users listed successfully!"
|
||||||
|
logsPath: "/home/jelastic/add-sftp-user-addon/logs/sftp-users.log"
|
||||||
|
logsNodeGroup: cp
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
add_sftp_user:
|
add_sftp_user:
|
||||||
- cmd[cp]: # Use cmd action to check if user exists
|
- cmd[cp]: # Use cmd action to check if user exists
|
||||||
commands: id ${globals.username} || echo "User not found"
|
commands: id ${globals.username} || echo "User not found"
|
||||||
- if ("${response.out}" == "User not found"): # If user doesn't exist
|
- if ("${response.out}" == "User not found"): # If user doesn't exist
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password}
|
|
||||||
user: root
|
user: root
|
||||||
- switch ("${response.exitStatus}"):
|
commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password}
|
||||||
0:
|
- if ("${response.exitStatus}" != "0"):
|
||||||
return: sftpSuccess
|
return: createUserError
|
||||||
2:
|
|
||||||
return: rootDirectoryError
|
|
||||||
3:
|
|
||||||
return: userExistsError
|
|
||||||
4:
|
|
||||||
return: createUserError
|
|
||||||
5:
|
|
||||||
return: symlinkError
|
|
||||||
6:
|
|
||||||
return: modifyGroupError
|
|
||||||
default:
|
|
||||||
return: unknownError
|
|
||||||
- else:
|
- else:
|
||||||
- setGlobals:
|
- setGlobals:
|
||||||
username: "user${fn.random(10000,99999)}"
|
username: "user${fn.random(10000,99999)}"
|
||||||
|
@ -84,22 +88,28 @@ actions:
|
||||||
- return: sftpSuccess
|
- return: sftpSuccess
|
||||||
change_password:
|
change_password:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
|
user: root
|
||||||
commands:
|
commands:
|
||||||
- echo "${settings.manage_username}:${globals.password}" | chpasswd
|
- echo "${settings.manage_username}:${globals.password}" | chpasswd
|
||||||
- echo "Password changed for ${settings.manage_username}" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
- echo "Password changed for ${settings.manage_username}" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
||||||
user: root
|
|
||||||
- if ("${response.exitStatus}" != "0"):
|
- if ("${response.exitStatus}" != "0"):
|
||||||
return: passwordChangeError
|
return: passwordChangeError
|
||||||
- return: passwordChangeSuccess
|
- return: passwordChangeSuccess
|
||||||
delete_user:
|
delete_user:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
|
user: root
|
||||||
commands:
|
commands:
|
||||||
- userdel ${settings.manage_username}
|
- userdel ${settings.manage_username}
|
||||||
- echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
- echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
||||||
user: root
|
|
||||||
- if ("${response.exitStatus}" != "0"):
|
- if ("${response.exitStatus}" != "0"):
|
||||||
return: deleteUserError
|
return: deleteUserError
|
||||||
- return: deleteUserSuccess
|
- return: deleteUserSuccess
|
||||||
|
list_users:
|
||||||
|
- cmd[cp]:
|
||||||
|
user: root
|
||||||
|
commands: "grep -oP '^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} - user\\d{5}' /home/litespeed/add-sftp-user-addon/logs/script_output.log | while read line; do printf \"%s\\n\" \"$line\"; done"
|
||||||
|
- return: listUsers
|
||||||
|
|
||||||
responses:
|
responses:
|
||||||
installSuccess:
|
installSuccess:
|
||||||
|
@ -123,18 +133,9 @@ responses:
|
||||||
deleteUserSuccess:
|
deleteUserSuccess:
|
||||||
type: success
|
type: success
|
||||||
message: "User ${settings.manage_username} deleted successfully."
|
message: "User ${settings.manage_username} deleted successfully."
|
||||||
rootDirectoryError:
|
listUsers:
|
||||||
type: error
|
type: info
|
||||||
message: "ROOT_DIRECTORY does not exist. Please check the server logs for more details."
|
message: "${response.out}"
|
||||||
symlinkError:
|
|
||||||
type: error
|
|
||||||
message: "Failed to create symlink for the user. Check logs for details."
|
|
||||||
modifyGroupError:
|
|
||||||
type: error
|
|
||||||
message: "Failed to modify groups for the user. Check logs for details."
|
|
||||||
unknownError:
|
|
||||||
type: error
|
|
||||||
message: "An unknown error occurred. Please check the server logs for more details."
|
|
||||||
|
|
||||||
buttons:
|
buttons:
|
||||||
- settings: sfpform
|
- settings: sfpform
|
||||||
|
@ -152,10 +153,6 @@ buttons:
|
||||||
|
|
||||||
onUninstall:
|
onUninstall:
|
||||||
- cmd[cp]:
|
- cmd[cp]:
|
||||||
commands:
|
|
||||||
- rm -vf /home/jelastic/add-sftp-user-addon/add-sftp.sh
|
|
||||||
- rm -vf /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
|
||||||
- rmdir -v /home/jelastic/add-sftp-user-addon/logs/
|
|
||||||
- rmdir -v /home/jelastic/add-sftp-user-addon/
|
|
||||||
user: root
|
user: root
|
||||||
|
commands:
|
||||||
|
- rm -rf /home/jelastic/add-sftp-user-addon/
|
Loading…
Reference in New Issue