add-sftp-user/manifest.jps

197 lines
6.8 KiB
Plaintext
Raw Normal View History

2025-04-10 13:49:25 +00:00
version: 0.4
2023-11-01 16:48:25 +00:00
id: addsftp
2023-10-26 15:54:56 +00:00
type: update
2023-11-06 13:09:13 +00:00
description: An addon to add new SFTP users. It can also manage created user accounts. If SSH is enabled, WP-CLI will attempt to be installed if it is not yet installed.
2023-10-26 15:54:56 +00:00
name: Add SFTP User
2023-10-27 15:22:09 +00:00
2023-10-26 15:54:56 +00:00
targetNodes:
nodeGroup: cp
settings:
sfpform:
2023-11-08 14:02:19 +00:00
submitUnchanged: true
2023-10-26 15:54:56 +00:00
fields:
2023-11-06 13:09:13 +00:00
- type: displayfield
name: infoField
caption: Root Directory /var/www/webroot/ROOT/
2023-11-06 13:09:13 +00:00
description: "A user-specific directory will be created under /home/username"
2023-10-30 16:13:29 +00:00
required: false
2025-04-07 17:48:45 +00:00
- type: string
name: custom_username
caption: Custom Username
description: "Enter a custom username (3-32 characters, alphanumeric + underscore only)"
2025-04-07 17:00:14 +00:00
required: true
regex: ^[a-zA-Z0-9_]{3,32}$
regexText: "Username must be 3-32 characters long and contain only letters, numbers, and underscores"
2023-11-06 13:09:13 +00:00
- type: checkbox
name: allow
caption: Accept User Creation
2023-11-08 14:02:19 +00:00
default: false
required: false
2023-10-26 15:54:56 +00:00
- type: checkbox
name: enable_ssh
caption: Also enable SSH access
default: false
2023-11-06 13:09:13 +00:00
required: false
2023-10-31 17:59:37 +00:00
manageUserForm:
fields:
2025-04-10 13:49:25 +00:00
- type: string
2023-10-31 17:59:37 +00:00
name: manage_username
caption: Username to Manage
2025-04-10 13:49:25 +00:00
description: "Enter the username you want to manage."
2023-11-08 14:02:19 +00:00
required: true
2025-04-10 13:49:25 +00:00
regex: ^[a-zA-Z0-9_]{3,32}$
regexText: "Username must be 3-32 characters long and contain only letters, numbers, and underscores"
2025-04-10 12:10:26 +00:00
- type: string
name: custom_password
caption: New Password
2025-04-10 13:49:25 +00:00
description: "Enter a new password for the user (leave empty to generate random password)"
2025-04-10 12:10:26 +00:00
required: false
2023-11-08 14:02:19 +00:00
2023-10-26 15:54:56 +00:00
globals:
username: ${settings.custom_username}
2023-10-30 17:09:45 +00:00
password: ${fn.password(min)}
2023-10-26 15:54:56 +00:00
sftpHost: ${env.domain}
sftpPort: 22
onInstall:
2023-11-01 16:48:25 +00:00
- cmd [cp]:
user: root
commands: |-
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
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
2023-10-30 12:52:48 +00:00
- cmd[cp]:
2025-02-26 16:38:19 +00:00
user: root
commands: |-
if grep -qE "^Match User user[0-9]*$" /etc/ssh/sshd_config; then
sed -i '/^Match User user[0-9]*/!b;n;c\ PasswordAuthentication yes' /etc/ssh/sshd_config
2025-02-26 16:38:19 +00:00
else
echo -e "\n# Added by SFTP addon\nMatch User user*\n\tPasswordAuthentication yes" >> /etc/ssh/sshd_config
2025-02-26 16:38:19 +00:00
fi
awk '!seen[$0]++' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp && mv /etc/ssh/sshd_config.tmp /etc/ssh/sshd_config
systemctl restart sshd
2023-10-30 12:52:48 +00:00
- cmd[cp]:
2023-11-01 16:48:25 +00:00
user: root
2023-10-30 12:52:48 +00:00
commands:
- systemctl restart sshd
2023-10-30 13:21:51 +00:00
- api: environment.control.RestartContainer
2023-10-30 13:27:05 +00:00
nodeGroup: cp
nodeid: ${nodes.cp.id}
2023-10-27 15:17:35 +00:00
- return: installSuccess
2023-11-01 16:48:25 +00:00
menu:
confirmText: "Do you want to list all users?"
loadingText: "Loading users..."
action: "list_users"
caption: "List Users"
successText: "Users listed successfully!"
logsNodeGroup: cp
2023-11-01 16:48:25 +00:00
2023-10-26 15:54:56 +00:00
actions:
add_sftp_user:
2023-11-02 17:34:23 +00:00
- cmd[cp]:
user: root
commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password}
- cmd[cp]:
user: root
commands: echo $CREATED_USERNAME
- setGlobals:
username: ${response.out}
- cmd[cp]:
user: root
commands: echo $CREATED_PASSWORD
- setGlobals:
password: ${response.out}
2023-11-08 14:02:19 +00:00
- return:
type: info
message: "Connection Details\n\nSFTP Host: ${globals.sftpHost}\n\nPort: ${globals.sftpPort}\n\nLogin Credentials\n\nUsername: ${globals.username}\n\nPassword: ${globals.password}"
2023-10-31 17:59:37 +00:00
change_password:
2025-04-10 13:49:25 +00:00
- if ('${settings.custom_password}' != ''):
2025-04-10 12:10:26 +00:00
setGlobals:
2025-04-10 13:49:25 +00:00
password: ${settings.custom_password}
- cmd[cp]:
user: root
commands: id ${settings.manage_username} &>/dev/null || { echo "User does not exist"; exit 1; }
- if ("${response.exitStatus}" != "0"):
return:
type: error
message: "User ${settings.manage_username} does not exist."
2023-10-31 17:59:37 +00:00
- cmd[cp]:
2023-11-01 16:48:25 +00:00
user: root
2023-10-31 17:59:37 +00:00
commands:
2025-04-10 13:49:25 +00:00
- echo "${settings.manage_username}:${globals.password}" | chpasswd
2023-10-31 17:59:37 +00:00
- echo "Password changed for ${settings.manage_username}" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
- if ("${response.exitStatus}" != "0"):
return: passwordChangeError
- return: passwordChangeSuccess
delete_user:
- cmd[cp]:
2023-11-01 16:48:25 +00:00
user: root
2023-10-31 17:59:37 +00:00
commands:
- userdel ${settings.manage_username}
2023-11-08 14:02:19 +00:00
- rm -rf /home/sftpusers/${settings.manage_username}
2023-10-31 17:59:37 +00:00
- echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
2023-11-01 16:48:25 +00:00
2023-10-31 17:59:37 +00:00
- if ("${response.exitStatus}" != "0"):
return: deleteUserError
- return: deleteUserSuccess
2023-11-01 16:48:25 +00:00
list_users:
- cmd[cp]:
user: root
2023-11-06 13:09:13 +00:00
commands: ls -ld /home/sftpusers/* | awk '{printf "Username %s - Created %s %s %s\n", substr($9, 17), $6, $7, $8}'
2023-11-01 16:48:25 +00:00
- return: listUsers
2023-10-27 14:37:19 +00:00
responses:
2023-10-27 15:17:35 +00:00
installSuccess:
2023-10-27 16:31:40 +00:00
type: success
2023-10-27 15:17:35 +00:00
message: "Installed Successfully"
2023-10-30 13:13:03 +00:00
sftpError:
type: error
message: "Failed to add SFTP user. Please check the server logs for more details."
2023-10-31 17:59:37 +00:00
sftpSuccess:
type: success
message: "Connection Details\n\nSFTP Host: ${globals.sftpHost}\n\nPort: ${globals.sftpPort}\n\nLogin Credentials\n\nUsername: ${globals.username}\n\nPassword: ${globals.password}"
passwordChangeError:
type: error
message: "Failed to change password for ${settings.manage_username}. Check logs for details."
passwordChangeSuccess:
type: success
2025-04-10 13:49:25 +00:00
message: "Password changed successfully for ${settings.manage_username}.\n\n New password: ${globals.password}"
2023-10-31 17:59:37 +00:00
deleteUserError:
type: error
message: "Failed to delete user ${settings.manage_username}. Check logs for details."
deleteUserSuccess:
type: success
message: "User ${settings.manage_username} deleted successfully."
2023-11-06 13:09:13 +00:00
noUsersFound:
type: error
message: "No SFTP users have been created yet."
2023-11-01 16:48:25 +00:00
listUsers:
type: info
message: "${response.out}"
2023-10-26 15:54:56 +00:00
buttons:
- settings: sfpform
action: add_sftp_user
caption: Add SFTP/SSH User
2023-10-31 17:59:37 +00:00
confirmText: "Are you sure you want to add this SFTP user?"
2023-11-06 13:09:13 +00:00
submitButtonText: Add User
2023-10-31 17:59:37 +00:00
- settings: manageUserForm
action: change_password
caption: Change Password
2023-11-08 14:02:19 +00:00
confirmText: "Are you sure you want to change the password for this user?"
2025-04-10 13:49:25 +00:00
submitButtonText: Change Password
2023-10-31 17:59:37 +00:00
- settings: manageUserForm
action: delete_user
caption: Delete User
confirmText: "Are you sure you want to delete this user?"
2025-04-10 13:49:25 +00:00
submitButtonText: Delete User
onUninstall:
- cmd[cp]:
user: root
2023-11-01 16:48:25 +00:00
commands:
- rm -rf /home/jelastic/add-sftp-user-addon/