Format popup message, email, change username format, updated SFTP creation

main
Anthony 2023-10-25 00:16:51 +08:00
parent 98c21b1a75
commit fd2eb5efdc
2 changed files with 51 additions and 12 deletions

View File

@ -7,17 +7,27 @@ targetNodes:
user: root user: root
globals: globals:
username: "user-${fn.random(10000,99999)}" username: "user${fn.random(10000,99999)}"
password: ${fn.password(min)} password: ${fn.password(min)}
sftpHost: ${env.domain}
sftpPort: 22
actions: actions:
add_sftp_user: add_sftp_user:
script: /scripts/add-sftp-user.cs?_r=${fn.random} script: /scripts/add-sftp-user.cs?_r=${fn.random}
success: success:
email: "Username: ${globals.username}, Password: ${globals.password}" email: |
SFTP Host: ${globals.sftpHost}
Port: ${globals.sftpPort}
Username: ${globals.username}
Password: ${globals.password}
text: text:
en: "Username: ${globals.username}, Password: ${globals.password}" en: |
SFTP Host: ${globals.sftpHost}
Port: ${globals.sftpPort}
Username: ${globals.username}
Password: ${globals.password}
settings: settings:
sftpForm: sftpForm:

View File

@ -1,9 +1,8 @@
// Extract the provided details // Extract the provided details
var USERNAME = "${globals.username}"; var USERNAME = "${globals.username}";
var PASSWORD = "${fn.password(min)}"; var PASSWORD = "${fn.password(12)}"; // Ensure a minimum length of 12 characters for the password
var ROOT_DIRECTORY = "/var/www/webroot/ROOT"; var ROOT_DIRECTORY = "/var/www/webroot/ROOT";
var ENABLE_SSH = false; var ENABLE_SSH = "${request.enable_ssh}" == "true";
var EMAILS = "${user.email}";
// Check if user already exists // Check if user already exists
if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', 'id ' + USERNAME).result == 0) { if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', 'id ' + USERNAME).result == 0) {
@ -13,8 +12,15 @@ if (jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}',
}; };
} }
// Create the user, set password, and configure SFTP // Base commands for user creation and SFTP setup
var cmd = [ var cmd = [
// Install and configure fail2ban
"apt-get update",
"apt-get install -y fail2ban",
"systemctl enable fail2ban",
"systemctl start fail2ban",
// User creation and SFTP setup
"GROUP=$(stat -c '%G' " + ROOT_DIRECTORY + ")", "GROUP=$(stat -c '%G' " + ROOT_DIRECTORY + ")",
"useradd -m -d " + ROOT_DIRECTORY + " -g $GROUP " + USERNAME, "useradd -m -d " + ROOT_DIRECTORY + " -g $GROUP " + USERNAME,
"echo '" + USERNAME + ":" + PASSWORD + "' | chpasswd", "echo '" + USERNAME + ":" + PASSWORD + "' | chpasswd",
@ -22,9 +28,32 @@ var cmd = [
"chown -R root:$GROUP /var/www", "chown -R root:$GROUP /var/www",
"echo 'Match Group $GROUP' >> /etc/ssh/sshd_config", "echo 'Match Group $GROUP' >> /etc/ssh/sshd_config",
"echo ' ChrootDirectory " + ROOT_DIRECTORY + "' >> /etc/ssh/sshd_config", "echo ' ChrootDirectory " + ROOT_DIRECTORY + "' >> /etc/ssh/sshd_config",
"echo ' PasswordAuthentication yes' >> /etc/ssh/sshd_config", "echo ' PasswordAuthentication yes' >> /etc/ssh/sshd_config"
"echo ' ForceCommand internal-sftp' >> /etc/ssh/sshd_config", ];
"systemctl restart sshd"
].join(" && ");
return jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', cmd); // If SSH is not enabled, restrict to SFTP only
if (!ENABLE_SSH) {
cmd.push("echo ' ForceCommand internal-sftp' >> /etc/ssh/sshd_config");
}
// Restart SSHD to apply changes
cmd.push("systemctl restart sshd");
return jelastic.env.control.ExecCmdById('${env.envName}', '${nodes.cp.master.id}', cmd.join(" && "));
// If the command execution was successful, return the SFTP details
if (response && response.result == 0) {
return {
result: 0,
message: "SFTP User Created Successfully!\n\n" +
"Username: " + USERNAME + "\n" +
"Password: " + PASSWORD + "\n" +
"SFTP Host: " + "${env.domain}" + "\n" + // Assuming env.domain provides the domain of the environment
"Port: 22" // Standard SFTP port
};
} else {
return {
result: response.result,
error: response.error || "An error occurred while creating the SFTP user."
};
}