| |
@@ -847,42 +847,80 @@
|
| |
report_err($("#rootdn-pw"), 'Directory Manager passwords do not match!');
|
| |
$("#rootdn-pw-confirm").css("border-color", "red");
|
| |
return;
|
| |
- } else if (root_pw == "" || root_pw_confirm == ""){
|
| |
+ } else if (root_pw == ""){
|
| |
report_err($("#rootdn-pw"), 'Directory Manager password can not be empty!');
|
| |
$("#rootdn-pw-confirm").css("border-color", "red");
|
| |
return;
|
| |
} else {
|
| |
- setup_inf = setup_inf.replace('ROOTPW', 'False');
|
| |
+ setup_inf = setup_inf.replace('ROOTPW', root_pw);
|
| |
}
|
| |
|
| |
+ /*
|
| |
+ * Here are steps we take to create the instance
|
| |
+ *
|
| |
+ * [1] Get FQDN Name for nsslapd-localhost setting in setup file
|
| |
+ * [2] Create a file for the inf setup parameters
|
| |
+ * [3] Set strict permissions on that file
|
| |
+ * [4] Populate the new setup file with settings (including cleartext password)
|
| |
+ * [5] Create the instance
|
| |
+ * [6] Remove setup file
|
| |
+ */
|
| |
cockpit.spawn(["hostname", "--fqdn"], { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
// Failed to get FQDN
|
| |
popup_err("Failed to get hostname!", ex.message);
|
| |
-
|
| |
}).done(function (data){
|
| |
- // Set the hostname in inf file
|
| |
+ /*
|
| |
+ * We have FQDN, so set the hostname in inf file, and create the setup file
|
| |
+ */
|
| |
setup_inf = setup_inf.replace('FQDN', data);
|
| |
-
|
| |
- // Create setup inf file
|
| |
- var cmd = ["/bin/sh", "-c", '/usr/bin/echo -e "' + setup_inf + '" > /tmp/389setup.inf'];
|
| |
- cockpit.spawn(cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ var setup_file = "/tmp/389-setup-" + (new Date).getTime() + ".inf";
|
| |
+ var rm_cmd = ['rm', setup_file];
|
| |
+ var create_file_cmd = ['touch', setup_file];
|
| |
+ cockpit.spawn(create_file_cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ // Failed to create setup file
|
| |
popup_err("Failed to create installation file!", ex.message);
|
| |
}).done(function (){
|
| |
- // Next, create the instance
|
| |
- cmd = ['dscreate', 'fromfile', '/tmp/389setup.inf'];
|
| |
- cockpit.spawn(cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ /*
|
| |
+ * We have our new setup file, now set permissions on that setup file before we add sensitive data
|
| |
+ */
|
| |
+ var chmod_cmd = ['chmod', '600', setup_file];
|
| |
+ cockpit.spawn(chmod_cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ // Failed to set permissions on setup file
|
| |
+ cockpit.spawn(rm_cmd, { superuser: true }); // Remove Inf file with clear text password
|
| |
$("#create-inst-spinner").hide();
|
| |
- popup_err("Failed to create instance!", ex.message);
|
| |
+ popup_err("Failed to set permission on setup file " + setup_file + ": ", ex.message);
|
| |
}).done(function (){
|
| |
- // Cleanup
|
| |
- $("#create-inst-spinner").hide();
|
| |
- $("#server-list-menu").attr('disabled', false);
|
| |
- $("#no-instances").hide();
|
| |
- get_insts(); // Refresh server list
|
| |
- popup_msg("Success!", "Successfully created instance: <b>slapd-" + new_server_id + "</b>", );
|
| |
- $("#create-inst-form").modal('toggle');
|
| |
+ /*
|
| |
+ * Success we have our setup file and it has the correct permissions.
|
| |
+ * Now populate the setup file...
|
| |
+ */
|
| |
+ var cmd = ["/bin/sh", "-c", '/usr/bin/echo -e "' + setup_inf + '" >> ' + setup_file];
|
| |
+ cockpit.spawn(cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ // Failed to populate setup file
|
| |
+ popup_err("Failed to populate installation file!", ex.message);
|
| |
+ }).done(function (){
|
| |
+ /*
|
| |
+ * Next, create the instance...
|
| |
+ */
|
| |
+ cmd = ['dscreate', 'install', setup_file];
|
| |
+ cockpit.spawn(cmd, { superuser: true, "err": "message" }).fail(function(ex) {
|
| |
+ // Failed to create the new instance!
|
| |
+ cockpit.spawn(rm_cmd, { superuser: true }); // Remove Inf file with clear text password
|
| |
+ $("#create-inst-spinner").hide();
|
| |
+ popup_err("Failed to create instance!", ex.message);
|
| |
+ }).done(function (){
|
| |
+ // Success!!! Now cleanup everything up...
|
| |
+ cockpit.spawn(rm_cmd, { superuser: true }); // Remove Inf file with clear text password
|
| |
+ $("#create-inst-spinner").hide();
|
| |
+ $("#server-list-menu").attr('disabled', false);
|
| |
+ $("#no-instances").hide();
|
| |
+ get_insts(); // Refresh server list
|
| |
+ popup_msg("Success!", "Successfully created instance: <b>slapd-" + new_server_id + "</b>", );
|
| |
+ $("#create-inst-form").modal('toggle');
|
| |
+ });
|
| |
+ });
|
| |
+ $("#create-inst-spinner").show();
|
| |
});
|
| |
- $("#create-inst-spinner").show();
|
| |
});
|
| |
});
|
| |
});
|
| |
Description: Changed the names of the two positional arguemnts from
"fromfile" --> "install", and "example" --> "create-template"
https://pagure.io/389-ds-base/issue/49791
Reviewed by: ?