148 lines
4.8 KiB
Plaintext
148 lines
4.8 KiB
Plaintext
version: 0.1
|
|
id: addsftp
|
|
type: update
|
|
description: An addon to add new SFTP users. It can also manage created user accounts.
|
|
name: Add SFTP User
|
|
|
|
targetNodes:
|
|
nodeGroup: cp
|
|
|
|
settings:
|
|
sfpform:
|
|
fields:
|
|
- type: string
|
|
inputType: text
|
|
name: root_directory
|
|
caption: Root Directory
|
|
default: "/var/www/webroot/ROOT/"
|
|
description: "A user-specific directory will be created under this path."
|
|
required: false
|
|
- type: checkbox
|
|
name: enable_ssh
|
|
caption: Also enable SSH access
|
|
default: false
|
|
manageUserForm:
|
|
fields:
|
|
- type: string
|
|
inputType: text
|
|
name: manage_username
|
|
caption: Username to Manage
|
|
description: "Input the username you want to manage."
|
|
required: true
|
|
|
|
globals:
|
|
username: "user${fn.random(10000,99999)}"
|
|
password: ${fn.password(min)}
|
|
sftpHost: ${env.domain}
|
|
sftpPort: 22
|
|
|
|
onInstall:
|
|
- 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
|
|
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]:
|
|
user: root
|
|
commands:
|
|
- echo -e "\nMatch User user*\nPasswordAuthentication yes" >> /etc/ssh/sshd_config
|
|
- cmd[cp]:
|
|
user: root
|
|
commands:
|
|
- systemctl restart sshd
|
|
- api: environment.control.RestartContainer
|
|
nodeGroup: cp
|
|
nodeid: ${nodes.cp.id}
|
|
- return: installSuccess
|
|
|
|
menu:
|
|
confirmText: "Do you want to list all users?"
|
|
loadingText: "Loading users..."
|
|
action: "list_users"
|
|
caption: "List Users"
|
|
|
|
actions:
|
|
add_sftp_user:
|
|
- cmd[cp]:
|
|
user: root
|
|
commands: bash /home/jelastic/add-sftp-user-addon/add-sftp.sh ${globals.username} ${globals.password}
|
|
- if ("${response.exitStatus}" != "0"):
|
|
return: sftpError
|
|
- setGlobals:
|
|
username: ${fn.extract(response.out, "\"USERNAME\": \"(.*?)\"")}
|
|
password: ${fn.extract(response.out, "\"PASSWORD\": \"(.*?)\"")}
|
|
- return: sftpSuccess
|
|
change_password:
|
|
- cmd[cp]:
|
|
user: root
|
|
commands:
|
|
- echo "${settings.manage_username}:${globals.password}" | chpasswd
|
|
- 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]:
|
|
user: root
|
|
commands:
|
|
- userdel ${settings.manage_username}
|
|
- echo "User ${settings.manage_username} deleted" >> /home/jelastic/add-sftp-user-addon/logs/script_output.log
|
|
|
|
- if ("${response.exitStatus}" != "0"):
|
|
return: deleteUserError
|
|
- return: deleteUserSuccess
|
|
list_users:
|
|
- cmd[cp]:
|
|
user: root
|
|
commands: "journalctl -u sshd | grep 'user[0-9]\\{5\\}' | awk '{printf \"Created: %s %s %s Username: %s\\n\", $1, $2, $3, $NF}' | sort -u"
|
|
- return: listUsers
|
|
|
|
responses:
|
|
installSuccess:
|
|
type: success
|
|
message: "Installed Successfully"
|
|
sftpError:
|
|
type: error
|
|
message: "Failed to add SFTP user. Check the logs for more details."
|
|
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
|
|
message: "Password changed successfully for ${settings.manage_username}.\n\n New password: ${globals.password}"
|
|
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."
|
|
listUsers:
|
|
type: info
|
|
message: "${response.out}"
|
|
|
|
buttons:
|
|
- settings: sfpform
|
|
action: add_sftp_user
|
|
caption: Add SFTP/SSH User
|
|
confirmText: "Are you sure you want to add this SFTP user?"
|
|
- settings: manageUserForm
|
|
action: change_password
|
|
caption: Change Password
|
|
confirmText: "Are you sure you want to change the password for this user?"
|
|
- settings: manageUserForm
|
|
action: delete_user
|
|
caption: Delete User
|
|
confirmText: "Are you sure you want to delete this user?"
|
|
|
|
onUninstall:
|
|
- cmd[cp]:
|
|
user: root
|
|
commands:
|
|
- rm -rf /home/jelastic/add-sftp-user-addon/ |