From 14c261bc71f7adffb607d8762b185c4cef932393 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 18 Sep 2015 17:11:21 +0200 Subject: Update --- scripts/mount-store | 9 +- scripts/system-restore | 42 +++++----- .../openslx/taskmanager/tasks/BackupRestore.java | 33 ++++++-- .../taskmanager/tasks/CreateLdapConfig.java | 4 +- .../openslx/taskmanager/tasks/DozmodLauncher.java | 86 ------------------- .../org/openslx/taskmanager/tasks/LdapSearch.java | 2 +- .../org/openslx/taskmanager/tasks/Systemctl.java | 97 ++++++++++++++++++++++ 7 files changed, 156 insertions(+), 117 deletions(-) delete mode 100644 src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java create mode 100644 src/main/java/org/openslx/taskmanager/tasks/Systemctl.java diff --git a/scripts/mount-store b/scripts/mount-store index cd777a8..260b0c7 100755 --- a/scripts/mount-store +++ b/scripts/mount-store @@ -56,11 +56,17 @@ fi # Unmount and not requested to mount (local mode) if [[ "${SOURCE}" == "null" ]]; then rm -f "${FLAG}" + echo "Success. Now using internal storage." exit 0 fi touch "${FLAG}" +if [[ "${SOURCE}" == "unknown" ]]; then + echo "Storage type not configured, doing nothing." + exit 0 +fi + # Mount! if grep -E -q '^[^/].+:.+' <<<$SOURCE; then @@ -94,7 +100,8 @@ echo "----------------------------------" if [ "$RET" == "0" ]; then rm -f "${FLAG}" if [ -e "${FLAG}" ]; then - echo "Error: File '.notmounted' exists on remote storage. Delete first!" >&2 + echo "Error: File '.notmounted' exists on remote storage and could not be deleted." >&2 + echo "Error: Make sure the share is writable." >&2 umount -v "$DEST" exit 5 fi diff --git a/scripts/system-restore b/scripts/system-restore index 8a66558..7b0de12 100755 --- a/scripts/system-restore +++ b/scripts/system-restore @@ -1,29 +1,33 @@ #!/bin/bash -RES_OPENSLX=0 -RES_SAT=0 -case "$1" in - both) - RES_OPENSLX=1 - RES_SAT=1 - ;; - openslx) - RES_OPENSLX=1 - ;; - sat) - RES_SAT=1 - ;; - *) - echo "Error: Restore mode must be one of both, openslx, sat" - exit 1 - ;; -esac - BACKUP="$1" if [ -z "$BACKUP" ] || [ ! -f "$BACKUP" ]; then echo "Backup file not found: $BACKUP" exit 1 fi +shift + +RES_OPENSLX=0 +RES_SAT=0 +while [ $# -gt 0 ]; do + case "$1" in + openslx) + RES_OPENSLX=1 + echo "Restoring system config" + ;; + dozmod) + RES_SAT=1 + echo "Restoring VM and lecture db" + ;; + *) + echo "Error: Restore mode params must be one of openslx, dozmod (Got $1)" + exit 1 + ;; + esac + shift +done + +[ "$RES_OPENSLX$RES_SAT" = "00" ] && exit 1 if [ "$(whoami)" != "root" ]; then echo "Must be running as root!" diff --git a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java index bbb68f5..20f5363 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java +++ b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java @@ -1,5 +1,8 @@ package org.openslx.taskmanager.tasks; +import java.util.ArrayList; +import java.util.List; + import org.openslx.satserver.util.Constants; import org.openslx.taskmanager.api.SystemCommandTask; @@ -11,6 +14,10 @@ public class BackupRestore extends SystemCommandTask private String mode; @Expose private String backupFile; + @Expose + private boolean restoreOpenslx; + @Expose + private boolean restoreDozmod; private Output status = new Output(); @@ -37,14 +44,24 @@ public class BackupRestore extends SystemCommandTask @Override protected String[] initCommandLine() { - if ( backupFile == null ) - backupFile = "ignored"; - return new String[] { - "/usr/bin/sudo", - "-n", - "-u", "root", Constants.BASEDIR + "/scripts/system-" + mode, - backupFile - }; + List args = new ArrayList<>(); + args.add( "/usr/bin/sudo" ); + args.add( "-n" ); + args.add( "-u" ); + args.add( "root" ); + args.add( Constants.BASEDIR + "/scripts/system-" + mode ); + if ( mode.equals( "restore" ) ) { + if ( backupFile != null ) { + args.add( backupFile ); + } + if ( restoreDozmod ) { + args.add( "dozmod" ); + } + if ( restoreOpenslx ) { + args.add( "openslx" ); + } + } + return args.toArray( new String[ args.size() ] ); } @Override diff --git a/src/main/java/org/openslx/taskmanager/tasks/CreateLdapConfig.java b/src/main/java/org/openslx/taskmanager/tasks/CreateLdapConfig.java index 8fb8287..9a5022f 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/CreateLdapConfig.java +++ b/src/main/java/org/openslx/taskmanager/tasks/CreateLdapConfig.java @@ -75,7 +75,7 @@ public class CreateLdapConfig extends AbstractTask try { // Generate keys { - int ret = Exec.sync( 10, "openssl", "req", + int ret = Exec.sync( 20, "openssl", "req", "-x509", "-new", "-newkey", "rsa:4096", "-keyout", keyFile, "-out", certFile, "-days", "5000", "-nodes", "-subj", "/C=DE/ST=Nowhere/L=Springfield/O=Dis/CN=" + this.proxyip ); if ( ret == -1 ) { @@ -137,7 +137,7 @@ public class CreateLdapConfig extends AbstractTask "-u", "root", Constants.BASEDIR + "/scripts/ldadp-setperms", Integer.toString( this.moduleid ) ) ) - status.error = "Could not chown/chmod ldadp config!"; + status.error = "Warning: Could not chown/chmod ldadp config!"; } catch ( IOException e ) { status.error = e.toString(); return false; diff --git a/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java b/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java deleted file mode 100644 index 0061a4f..0000000 --- a/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.openslx.taskmanager.tasks; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.openslx.taskmanager.api.SystemCommandTask; - -import com.google.gson.annotations.Expose; - -public class DozmodLauncher extends SystemCommandTask -{ - /** - * What to do: start, stop... - */ - @Expose - private String operation; - - private StatusObject status = new StatusObject(); - - @Override - protected String[] initCommandLine() - { - List params = new ArrayList<>(); - params.addAll( - Arrays.asList( - "/usr/bin/sudo", - "-n", - "-u", "dmsd", - "/opt/dmsd/control.sh" ) ); - switch ( operation ) { - case "start": - case "stop": - params.add( operation ); - break; - default: - status.addMsg( "Unknown operation: " + operation ); - return null; - } - this.timeoutSeconds = 5; - return params.toArray( new String[ 0 ] ); - } - - 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; - } - } - -} diff --git a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java index 37d09d8..3e641a5 100644 --- a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java +++ b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java @@ -157,7 +157,7 @@ public class LdapSearch extends SystemCommandTask this.userCount++; } } - if ( this.getDn && line.startsWith( "dn: " ) ) { + if ( line.startsWith( "dn: " ) ) { status.dn = line.substring( 4 ); } } 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 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; + } + } + +} -- cgit v1.2.3-55-g7522