diff options
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/Systemctl.java')
-rw-r--r-- | src/main/java/org/openslx/taskmanager/tasks/Systemctl.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java new file mode 100644 index 0000000..43df01b --- /dev/null +++ b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java @@ -0,0 +1,97 @@ +package org.openslx.taskmanager.tasks; + +import java.util.ArrayList; +import java.util.List; + +import org.openslx.taskmanager.api.SystemCommandTask; + +import com.google.gson.annotations.Expose; + +public class Systemctl extends SystemCommandTask +{ + /** + * What to do: start, stop... + */ + @Expose + private String operation; + + @Expose + String service; + + private StatusObject status = new StatusObject(); + + @Override + protected String[] initCommandLine() + { + switch ( operation ) { + case "start": + case "stop": + case "enable": + case "disable": + break; + default: + status.addMsg( "Unknown operation: " + operation ); + return null; + } + switch ( service ) { + case "dmsd": + 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" ); + params.add( "/bin/systemctl" ); + params.add( operation ); + params.add( service ); + this.timeoutSeconds = 10; + return params.toArray( new String[ params.size() ] ); + } + + private boolean errorIfNull( String check, String message ) + { + if ( check == null ) + status.addMsg( message ); + return check == null; + } + + @Override + protected boolean processEnded( int exitCode ) + { + return exitCode == 0; + } + + @Override + protected void processStdOut( String line ) + { + status.addMsg( line ); + } + + @Override + protected void processStdErr( String line ) + { + status.addMsg( line ); + } + + @Override + protected boolean initTask() + { + this.setStatusObject( this.status ); + return !errorIfNull( operation, "No operation given" ); + } + + class StatusObject + { + private String messages = ""; + + public void addMsg( String str ) + { + messages = messages + "\n" + str; + } + } + +} |