summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2017-12-06 16:03:18 +0100
committerSimon Rettberg2017-12-06 16:03:18 +0100
commit06c0abfe129ac9b7cd53d4c0ed6e89696509d588 (patch)
treed74d49f173d0b469fc736fee4c1ef60259b5bf29
parentmount-script: Support dnbd3 (diff)
downloadtmlite-bwlp-06c0abfe129ac9b7cd53d4c0ed6e89696509d588.tar.gz
tmlite-bwlp-06c0abfe129ac9b7cd53d4c0ed6e89696509d588.tar.xz
tmlite-bwlp-06c0abfe129ac9b7cd53d4c0ed6e89696509d588.zip
Update for WS17/18 (systemctl, rebootctl)
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/RemoteReboot.java5
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/Systemctl.java49
2 files changed, 35 insertions, 19 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/RemoteReboot.java b/src/main/java/org/openslx/taskmanager/tasks/RemoteReboot.java
index 041daaa..9f450b6 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/RemoteReboot.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/RemoteReboot.java
@@ -96,11 +96,12 @@ public class RemoteReboot extends AbstractTask
int ret = -1;
try {
Shell shell = new SSH( client.clientip, port, "root", sshkey );
+ String args = " " + minutes + " " + SSH.escape( client.machineuuid );
if ( shutdown ) {
- ret = new Shell.Empty( shell ).exec( SHUTDOWN_CMD + " " + minutes );
+ ret = new Shell.Empty( shell ).exec( SHUTDOWN_CMD + args );
status.clientStatus.put( client.machineuuid, minutes == 0 ? ClientStatus.SHUTDOWN : ClientStatus.SHUTDOWN_AT );
} else {
- ret = new Shell.Empty( shell ).exec( REBOOT_CMD + " " + minutes );
+ ret = new Shell.Empty( shell ).exec( REBOOT_CMD + args );
if ( ret == 0 ) {
status.clientStatus.put( client.machineuuid, minutes == 0 ? ClientStatus.REBOOTING : ClientStatus.REBOOT_AT );
rebootingClients.add( client );
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() ] );
}