From 0ab359e690cd69977bcdf0838ac5735cf73adcc1 Mon Sep 17 00:00:00 2001
From: Michael Hierweck <michael@hierweck.de>
Date: Thu, 28 Aug 2014 12:40:35 +0200
Subject: [PATCH] Trying to make user/pac deletion more reliable...

---
 hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java       |    7 ++++++-
 hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java |    6 +++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
index e809c1e..da54e59 100644
--- a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
+++ b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
@@ -162,7 +162,12 @@
 	}
 
 	private Processor createDelUserProc(String pacName) {
-		return new ShellProcessor("rm -rf /home/pacs/" + pacName + "/* && deluser --remove-all-files " + pacName + ">/dev/null 2>&1");
+		Processor killProcessesProc = new ShellProcessor("killall -TERM -u " + pacName + " && sleep 5 && killall -KILL -u " + pacName + " && sleep 5");
+		Processor userdelProc = new ShellProcessor("deluser --remove-all-files " + pacName);
+		CompoundProcessor proc = new CompoundProcessor(killProcessesProc, userdelProc);
+		proc.appendProcessor(new ShellProcessor("rm -f '/var/spool/cron/crontabs/" + pacName + "'"));
+		proc.appendProcessor(new ShellProcessor("rm -f '/var/mail/" + pacName + "'"));
+		return proc; 
 	}
 
 	private Processor createMakePacDirectoryStructure(UnixUser unixUser) {
diff --git a/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java b/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java
index 019e4d7..c02a765 100644
--- a/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java
+++ b/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java
@@ -56,12 +56,12 @@
 		UnixUser user = (UnixUser) entity;
 		String uid = user.getName();
 		if (uid != null && uid.length() > 4) {
-			Processor killProcessesProc = new ShellProcessor("killall -u " + uid + " && sleep 2 || echo -n 'no processes'");
+			Processor killProcessesProc = new ShellProcessor("killall -TERM -u " + uid + " && sleep 5 && killall -KILL -u " + uid + " && sleep 5");
 			Processor userdelProc = null;
 			if (user.isDefaultHomedir()) {
-				userdelProc = new ShellProcessor("userdel " + uid + " && rm -rf '" + user.getHomedir() + "'");
+				userdelProc = new ShellProcessor("deluser --remove-all-files " + uid);
 			} else {
-				userdelProc = new ShellProcessor("userdel " + uid);
+				userdelProc = new ShellProcessor("deluser " + uid);
 			}
 			CompoundProcessor proc = new CompoundProcessor(killProcessesProc, userdelProc);
 			proc.appendProcessor(new ShellProcessor("rm -f '/var/spool/cron/crontabs/" + uid + "'"));

--
Gitblit v1.9.3