summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-17 15:54:51 +0200
committerSimon Rettberg2015-06-17 15:54:51 +0200
commitef4bb7ee0933d6f850f94b542d0617b181c22fdb (patch)
tree4c294199d242b78ec90f1f5a188bef702c1fa062
parentUpdate CreateAdConfig to match new ldadp config format (diff)
downloadtmlite-bwlp-ef4bb7ee0933d6f850f94b542d0617b181c22fdb.tar.gz
tmlite-bwlp-ef4bb7ee0933d6f850f94b542d0617b181c22fdb.tar.xz
tmlite-bwlp-ef4bb7ee0933d6f850f94b542d0617b181c22fdb.zip
Add new tasks, add timeouts to system process tasks
-rwxr-xr-xscripts/system-restore3
-rw-r--r--src/main/java/org/openslx/satserver/util/Exec.java3
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/CompileIPxe.java2
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/CreateAdConfig.java13
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/DiskStat.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java3
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/LighttpdHttps.java10
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/Netstat.java64
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/PsList.java61
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/Reboot.java1
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/SyncdaemonLauncher.java1
15 files changed, 154 insertions, 12 deletions
diff --git a/scripts/system-restore b/scripts/system-restore
index 5d77dda..dfc5c3a 100755
--- a/scripts/system-restore
+++ b/scripts/system-restore
@@ -57,6 +57,9 @@ RET=$?
if [ $RET -ne 0 ]; then
echo "WARNING: Restoring filesystem contents failed with exit code $RET - backup might be incomplete!"
fi
+# Make sure the directory tree is owned by taskmanager, as tar will create intermediate
+# directories as owned by root if they do not exist.
+chown -R taskmanager /srv/openslx/www/boot /opt/openslx/configs
rm -rf -- "$DIR"
rm -f -- "$BACKUP"
diff --git a/src/main/java/org/openslx/satserver/util/Exec.java b/src/main/java/org/openslx/satserver/util/Exec.java
index b7de984..e273409 100644
--- a/src/main/java/org/openslx/satserver/util/Exec.java
+++ b/src/main/java/org/openslx/satserver/util/Exec.java
@@ -47,10 +47,11 @@ public class Exec
// Wait...
}
}
+ // Timeout
return -1;
}
} catch ( IOException | InterruptedException e ) {
- return -1;
+ return -2;
} finally {
try {
if ( p != null ) {
diff --git a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java
index c2f20c6..bbb68f5 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/BackupRestore.java
@@ -30,6 +30,7 @@ public class BackupRestore extends SystemCommandTask
status.addMessage( "No backup file given to restore!" );
return false;
}
+ this.timeoutSeconds = 15;
return true;
}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/CompileIPxe.java b/src/main/java/org/openslx/taskmanager/tasks/CompileIPxe.java
index 33fae6e..7795d21 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/CompileIPxe.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/CompileIPxe.java
@@ -123,7 +123,7 @@ public class CompileIPxe extends AbstractTask
return false;
}
// Compile
- if ( 0 != Exec.syncAt( 15, "/opt/openslx/ipxe/src", "make", "EMBED=../ipxelinux.ipxe,../pxelinux.0", "bin/undionly.kkkpxe" ) ) {
+ if ( 0 != Exec.syncAt( 120, "/opt/openslx/ipxe/src", "make", "EMBED=../ipxelinux.ipxe,../pxelinux.0", "bin/undionly.kkkpxe" ) ) {
status.error = "Compiling ipxelinux.0 failed";
return false;
}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/CreateAdConfig.java b/src/main/java/org/openslx/taskmanager/tasks/CreateAdConfig.java
index ec34716..69ed2b6 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/CreateAdConfig.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/CreateAdConfig.java
@@ -71,13 +71,18 @@ public class CreateAdConfig extends AbstractTask
try {
// Generate keys
{
- int ret = Exec.sync( 3, "openssl", "req",
+ int ret = Exec.sync( 10, "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 != 0 ) {
+ if ( ret == -1 ) {
+ status.error = "openssl process didn't finish in time.";
+ } else if ( ret == -2 ) {
+ status.error = "Internal error generating certificate.";
+ } else if ( ret != 0 ) {
status.error = "openssl exited with code " + ret;
- return false;
}
+ if ( ret != 0 )
+ return false;
}
// ldadp config
String ldadpConf = String.format(
@@ -120,7 +125,7 @@ public class CreateAdConfig extends AbstractTask
}
try {
FileUtils.writeStringToFile( new File( fileName ), ldadpConf, StandardCharsets.UTF_8 );
- if ( 0 != Exec.sync( 3,
+ if ( 0 != Exec.sync( 10,
"/usr/bin/sudo",
"-n",
"-u", "root",
diff --git a/src/main/java/org/openslx/taskmanager/tasks/DiskStat.java b/src/main/java/org/openslx/taskmanager/tasks/DiskStat.java
index 4d2caa5..9d0c665 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/DiskStat.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/DiskStat.java
@@ -18,6 +18,7 @@ public class DiskStat extends SystemCommandTask
@Override
protected String[] initCommandLine()
{
+ this.timeoutSeconds = 2;
return new String[] {
"/bin/df",
"-P", "-B", "1024"
diff --git a/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java b/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java
index 8c8720d..0061a4f 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/DozmodLauncher.java
@@ -37,6 +37,7 @@ public class DozmodLauncher extends SystemCommandTask
status.addMsg( "Unknown operation: " + operation );
return null;
}
+ this.timeoutSeconds = 5;
return params.toArray( new String[ 0 ] );
}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java b/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java
index bfd9570..73c792b 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/LdadpLauncher.java
@@ -41,6 +41,7 @@ public class LdadpLauncher extends SystemCommandTask
for ( int i = 0; i < ids.length; ++i ) {
args.add( Integer.toString( this.ids[i] ) );
}
+ this.timeoutSeconds = 5;
return args.toArray( new String[ args.size() ] );
}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java
index ef0998c..37443d5 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/LdapSearch.java
@@ -40,6 +40,7 @@ public class LdapSearch extends SystemCommandTask
status.messages = "Missing parameter";
return false;
}
+ this.timeoutSeconds = 5;
return true;
}
@@ -98,7 +99,7 @@ public class LdapSearch extends SystemCommandTask
status.addMessage( "Exit code is " + exitCode );
if ( exitCode == 0 && this.userCount < 4 && !this.getDn )
status.addMessage( "Found less than 4 users. Are you sure you got the right credentials." );
- return this.userCount >= 4 || (this.getDn && status.dn != null);
+ return this.userCount >= 4 || ( this.getDn && status.dn != null );
}
@Override
diff --git a/src/main/java/org/openslx/taskmanager/tasks/LighttpdHttps.java b/src/main/java/org/openslx/taskmanager/tasks/LighttpdHttps.java
index 2250d84..362191b 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/LighttpdHttps.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/LighttpdHttps.java
@@ -46,7 +46,7 @@ public class LighttpdHttps extends AbstractTask
private boolean createRandom()
{
- int ret = Exec.sync( 5, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--random", this.proxyip );
+ int ret = Exec.sync( 10, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--random", this.proxyip );
if ( ret != 0 ) {
status.error = "generator exited with code " + ret;
return false;
@@ -75,16 +75,16 @@ public class LighttpdHttps extends AbstractTask
return false;
}
int ret;
- ret = Exec.sync( 5, "/opt/taskmanager/scripts/install-https", "--test", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath() );
+ ret = Exec.sync( 10, "/opt/taskmanager/scripts/install-https", "--test", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath() );
if ( ret != 0 ) {
status.error = "Given key and certificate do not match, or have invalid format (exit code: " + ret + ")";
return false;
}
if ( tmpChain != null ) {
- ret = Exec.sync( 5, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--import", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath(),
+ ret = Exec.sync( 10, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--import", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath(),
tmpChain.getAbsolutePath() );
} else {
- ret = Exec.sync( 5, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--import", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath() );
+ ret = Exec.sync( 10, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--import", tmpKey.getAbsolutePath(), tmpCert.getAbsolutePath() );
}
if ( ret != 0 ) {
status.error = "import exited with code " + ret;
@@ -101,7 +101,7 @@ public class LighttpdHttps extends AbstractTask
private boolean disableHttps()
{
- int ret = Exec.sync( 5, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--disable" );
+ int ret = Exec.sync( 10, "sudo", "-n", "-u", "root", "/opt/taskmanager/scripts/install-https", "--disable" );
if ( ret != 0 ) {
status.error = "disable exited with code " + ret;
return false;
diff --git a/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java b/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java
index 893209e..ded2a1f 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/MountVmStore.java
@@ -30,6 +30,7 @@ public class MountVmStore extends SystemCommandTask
this.username = "";
if ( this.password == null )
this.password = "";
+ this.timeoutSeconds = 10;
return true;
}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/Netstat.java b/src/main/java/org/openslx/taskmanager/tasks/Netstat.java
new file mode 100644
index 0000000..7cf6d87
--- /dev/null
+++ b/src/main/java/org/openslx/taskmanager/tasks/Netstat.java
@@ -0,0 +1,64 @@
+package org.openslx.taskmanager.tasks;
+
+import org.openslx.taskmanager.api.SystemCommandTask;
+
+public class Netstat extends SystemCommandTask
+{
+ private final Output status = new Output();
+
+ @Override
+ protected String[] initCommandLine()
+ {
+ this.timeoutSeconds = 4;
+ return new String[] {
+ "/usr/bin/sudo",
+ "-n",
+ "-u", "root",
+ "/bin/netstat",
+ "-tulpn"
+ };
+ }
+
+ @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 );
+ }
+
+ @Override
+ protected boolean initTask()
+ {
+ this.setStatusObject( status );
+ return true;
+ }
+
+ /**
+ * 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;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/PsList.java b/src/main/java/org/openslx/taskmanager/tasks/PsList.java
new file mode 100644
index 0000000..e77e4fc
--- /dev/null
+++ b/src/main/java/org/openslx/taskmanager/tasks/PsList.java
@@ -0,0 +1,61 @@
+package org.openslx.taskmanager.tasks;
+
+import org.openslx.taskmanager.api.SystemCommandTask;
+
+public class PsList extends SystemCommandTask
+{
+ private final Output status = new Output();
+
+ @Override
+ protected String[] initCommandLine()
+ {
+ this.timeoutSeconds = 3;
+ return new String[] {
+ "/bin/ps",
+ "auxf"
+ };
+ }
+
+ @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 );
+ }
+
+ @Override
+ protected boolean initTask()
+ {
+ this.setStatusObject( status );
+ return true;
+ }
+
+ /**
+ * 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;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/org/openslx/taskmanager/tasks/Reboot.java b/src/main/java/org/openslx/taskmanager/tasks/Reboot.java
index c90289e..c7b8d26 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/Reboot.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/Reboot.java
@@ -9,6 +9,7 @@ public class Reboot extends SystemCommandTask
@Override
protected String[] initCommandLine()
{
+ this.timeoutSeconds = 5;
return new String[] {
"/usr/bin/sudo",
"-n",
diff --git a/src/main/java/org/openslx/taskmanager/tasks/SyncdaemonLauncher.java b/src/main/java/org/openslx/taskmanager/tasks/SyncdaemonLauncher.java
index 22c092d..98d512a 100644
--- a/src/main/java/org/openslx/taskmanager/tasks/SyncdaemonLauncher.java
+++ b/src/main/java/org/openslx/taskmanager/tasks/SyncdaemonLauncher.java
@@ -73,6 +73,7 @@ public class SyncdaemonLauncher extends SystemCommandTask
status.addMsg( "Unknown operation: " + operation );
return null;
}
+ this.timeoutSeconds = 5;
return params.toArray( new String[ 0 ] );
}