This commit is contained in:
Your Name
2025-05-03 20:13:21 +12:00
parent ec779e51c2
commit 866046b505
7 changed files with 84 additions and 2 deletions

View File

@ -144,6 +144,48 @@ bool service_runner::uninstall() {
return true;
}
bool service_runner::nuke()
{
maketitle("Nuking " + mService + " (" + mServiceInfo.template_name + ") on " + mServer);
if (!mServerEnv.is_valid()) return false; // should never hit this.
// 2. Check if service directory exists on server
if (!mServerEnv.check_remote_dir_exists(remotepath::service(mServer, mService)))
std::cerr << "Service is not installed: " << mService << std::endl;
else
{
// try uninstalling.
mServerEnv.run_remote_template_command(mService, "uninstall", {});
mServerEnv.run_remote_template_command(mService, "nuke", {});
std::string rm_cmd = "rm -rf " + quote(remotepath::service(mServer, mService));
if (!mServerEnv.execute_ssh_command(rm_cmd)) {
std::cerr << "Failed to remove service directory" << std::endl;
return false;
}
}
std::cout << "Service " << mService << " successfully nuked from " << mServer << std::endl;
std::cout << "Now deleteing local files..." << std::endl;
std::string local_service_path = localpath::service(mServer,mService);
if (local_service_path.empty() || !fs::exists(local_service_path)) {
std::cerr << "Error: Service directory not found: " << local_service_path << std::endl;
}
else
{
std::string rm_cmd = "rm -rf " + quote(local_service_path);
if (!mServerEnv.execute_local_command(rm_cmd)) {
std::cerr << "Failed to remove service directory" << std::endl;
return false;
}
}
std::cout << "Service " << mService << " successfully nuked from " << mServer << std::endl;
return true;
}
// ------------------------------------------------------------------------------------------------
// Run a command on the service.
@ -193,6 +235,10 @@ bool service_runner::run_command(const std::string& command, std::vector<std::st
if (command == "uninstall")
return uninstall();
if (command == "nuke")
return nuke();
if (command == "ssh") {
interactive_ssh_service();
return true;
@ -531,6 +577,7 @@ bool service_runner::restore(std::string backup_file, bool silent)
return true;
}
bool name_breaks_backups(std::string name)
{
// if name contains -_-, return true

View File

@ -84,6 +84,9 @@ class service_runner {
bool backup(bool silent=false);
bool restore(std::string backup_file, bool silent=false);
// nuke the service
bool nuke();
// launch an interactive ssh session on a server or service
// replaces the current dropshell process with the ssh process
void interactive_ssh_service();