summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/Systemctl.java')
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/Systemctl.java49
1 files changed, 32 insertions, 17 deletions
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<String> 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() ] );
}