From 91990062dfea38aa92e4590579dd7e1e0d0ef7ec Mon Sep 17 00:00:00 2001 From: Jannik Schönartz Date: Wed, 24 Nov 2021 00:55:33 +0100 Subject: Add script for downloading/merging the edited image --- .../org/openslx/taskmanager/tasks/ScpSnapshot.java | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/main/java/org/openslx/taskmanager/tasks/ScpSnapshot.java (limited to 'src/main/java/org/openslx/taskmanager/tasks') diff --git a/src/main/java/org/openslx/taskmanager/tasks/ScpSnapshot.java b/src/main/java/org/openslx/taskmanager/tasks/ScpSnapshot.java new file mode 100644 index 0000000..0fe0c24 --- /dev/null +++ b/src/main/java/org/openslx/taskmanager/tasks/ScpSnapshot.java @@ -0,0 +1,96 @@ +package org.openslx.taskmanager.tasks; + +import java.util.Map; + +import org.openslx.satserver.util.Constants; +import org.openslx.taskmanager.api.SystemCommandTask; + +import com.google.gson.annotations.Expose; + +public class ScpSnapshot extends SystemCommandTask +{ + @Expose + private String lectureUuid = null; + @Expose + private String username = null; + @Expose + private String clientIp = null; + @Expose + private String snapshotPath = null; + + private final Output status = new Output(); + + + @Override + protected boolean initTask() + { + this.setStatusObject( this.status ); + if ( this.lectureUuid == null ) + this.lectureUuid = ""; + if ( this.username == null ) + this.username = ""; + if ( this.clientIp == null ) + this.clientIp = ""; + if ( this.snapshotPath == null ) + this.snapshotPath = ""; + + return true; + } + + @Override + protected String[] initCommandLine() + { + return new String[] { + "/usr/bin/sudo", + "-n", + "-u", "root", + // "/bin/bash", + Constants.BASEDIR + "/scripts/scp-snapshot" + }; + } + + @Override + protected void initEnvironment( Map environment ) + { + environment.put( "TM_UUID", this.lectureUuid ); + environment.put( "TM_USERNAME", this.username); + environment.put( "TM_CLIENT_IP", this.clientIp); + environment.put( "TM_SNAPSHOT_PATH", this.snapshotPath); + } + + @Override + protected boolean processEnded( int exitCode ) + { + return exitCode == 0; + } + + @Override + protected void processStdOut( String line ) + { + status.addMessage( line ); + } + + @Override + protected void processStdErr( String line ) + { + status.addMessage( line ); + } + + /** + * Output - contains additional status data of this task + */ + class Output + { + private String messages = null; + + private void addMessage( String str ) + { + if ( messages == null ) { + messages = str; + } else { + messages += "\n" + str; + } + } + } + +} -- cgit v1.2.3-55-g7522