From 06c0abfe129ac9b7cd53d4c0ed6e89696509d588 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 6 Dec 2017 16:03:18 +0100 Subject: Update for WS17/18 (systemctl, rebootctl) --- .../org/openslx/taskmanager/tasks/Systemctl.java | 49 ++++++++++++++-------- 1 file changed, 32 insertions(+), 17 deletions(-) (limited to 'src/main/java/org/openslx/taskmanager/tasks/Systemctl.java') diff --git a/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java index a63ece3..1e2a9bf 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java +++ b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java @@ -23,39 +23,54 @@ public class Systemctl extends SystemCommandTask @Override protected String[] initCommandLine() { + boolean allowAll = false; + boolean asRoot = true; + // Check if operation is allowed switch ( operation ) { case "start": case "stop": case "enable": case "disable": case "restart": + case "status": + break; + case "show": + case "is-active": + allowAll = true; + asRoot = false; break; default: status.addMsg( "Unknown operation: " + operation ); return null; } - switch ( service ) { - case "dmsd": - break; - case "taskmanager": - if ( !operation.equals( "restart" ) ) { - status.addMsg( "Error: Service taskmanager can only be restarted." ); - return null; - } - break; - default: - status.addMsg( "Unknown service: " + operation ); - return null; + if ( !allowAll ) { + // Check if service is allowed + switch ( service ) { + case "dmsd": + case "dnbd3-server": + break; + case "taskmanager": + if ( !operation.equals( "restart" ) ) { + status.addMsg( "Error: Service taskmanager can only be restarted." ); + return null; + } + break; + default: + status.addMsg( "Unknown service: " + operation ); + return null; + } } List params = new ArrayList<>(); - params.add( "/usr/bin/sudo" ); - params.add( "-n" ); - params.add( "-u" ); - params.add( "root" ); + if ( asRoot ) { + params.add( "/usr/bin/sudo" ); + params.add( "-n" ); + params.add( "-u" ); + params.add( "root" ); + } params.add( "/bin/systemctl" ); params.add( operation ); params.add( service ); - this.timeoutSeconds = 10; + this.timeoutSeconds = 15; return params.toArray( new String[ params.size() ] ); } -- cgit v1.2.3-55-g7522