summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extras/import-idp.php31
-rw-r--r--src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java6
-rw-r--r--src/main/java/org/openslx/imagemaster/thrift/server/HttpListener.java4
3 files changed, 31 insertions, 10 deletions
diff --git a/extras/import-idp.php b/extras/import-idp.php
index 4518bbf..1298058 100644
--- a/extras/import-idp.php
+++ b/extras/import-idp.php
@@ -7,7 +7,9 @@ function pdebug($text)
if (DEBUG) echo "$text\n";
}
-if ($argc < 2) die("To few arguments. Pass config file!\n");
+if ($argc < 2)
+ die("Too few arguments. Pass config file!\n");
+
if ($argv[1] === '--debug') {
$argc--;
array_shift($argv);
@@ -15,7 +17,9 @@ if ($argv[1] === '--debug') {
} else {
define('DEBUG', false);
}
-if ($argc < 2) die("To few arguments. Pass config file!\n");
+if ($argc < 2)
+ die("Too few arguments. Pass config file!\n");
+
$handle = fopen($argv[1], 'r') or die("Cannot open mysql config given on command line\n");
$settings = array();
while (($line = fgets($handle)) !== false) {
@@ -26,7 +30,8 @@ fclose($handle);
// Default/Fallback
$requiredAttribute = 'http://aai.dfn.de/category/bwidm-member';
-$url = 'https://www.aai.dfn.de/fileadmin/metadata/dfn-aai-metadata.xml';
+$url = 'http://www.aai.dfn.de/metadata/dfn-aai-idp-metadata.xml';
+$requireEcp = true;
$f = __DIR__ . '/shib.conf.php';
if (is_readable($f)) require_once $f;
@@ -37,7 +42,7 @@ if (empty($settings['host']) || empty($settings['user']) || empty($settings['pas
$db = new mysqli($settings['host'], $settings['user'], $settings['password'], $settings['db']);
if ($db->connect_errno) die("Could not connect to db: " . $db->connect_error . "\n");
-$db->set_charset("utf8");
+$db->set_charset("utf8mb4");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
@@ -140,12 +145,26 @@ foreach ($out[0] as $data) {
}
}
// Now usable: $scope, $name, $ecp (if known, false otherwise)
- if ($ecp === false) {
+ if ($requireEcp && $ecp === false) {
pdebug("No ECP end-point...");
} else {
pdebug("Adding/Updating with ECP URL $ecp, suffixes: " . implode(', ', $scope));
wipeDb();
- $eid = $db->escape_string($scope[0]);
+ $orgid = false;
+ // Try to use any existing organization ID based on the suffixes. This is to avoid adding the same organzation twice, should the first entry in the list change
+ foreach ($scope as $alias) {
+ $ealias = $db->escape_string($alias);
+ $res = $db->query("SELECT organizationid FROM organization_suffix WHERE suffix = '$ealias' LIMIT 1");
+ if ($row = $res->fetch_assoc()) {
+ $orgid = $row['organizationid'];
+ break;
+ }
+ }
+ if ($orgid === false) {
+ // Not known yet, use first
+ $orgid = $scope[0];
+ }
+ $eid = $db->escape_string($orgid);
$ename = $db->escape_string($name);
$eecp = $db->escape_string($ecp);
$db->query("INSERT INTO organization (organizationid, name, authmethod, publickey)
diff --git a/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java b/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java
index 8b6d197..f3831b0 100644
--- a/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java
+++ b/src/main/java/org/openslx/imagemaster/serverconnection/ConnectionHandler.java
@@ -33,7 +33,7 @@ import org.openslx.filetransfer.Uploader;
import org.openslx.imagemaster.Globals;
import org.openslx.imagemaster.db.mappers.DbImage;
import org.openslx.thrifthelper.ImagePublishDataEx;
-import org.openslx.util.GrowingThreadPoolExecutor;
+import org.openslx.util.CascadedThreadPoolExecutor;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -53,9 +53,9 @@ public class ConnectionHandler implements IncomingEvent
private static Map<String, OutgoingTransfer> outgoingTransfers = new ConcurrentHashMap<>();
private static IncomingEvent eventHandler = new ConnectionHandler();
- private final ExecutorService transferPool = new GrowingThreadPoolExecutor( 1, MAX_TRANSFERS * 2, 1, TimeUnit.MINUTES,
+ private final ExecutorService transferPool = new CascadedThreadPoolExecutor( 1, MAX_TRANSFERS * 2, 1, TimeUnit.MINUTES,
new SynchronousQueue<Runnable>(),
- new PrioThreadFactory( "TransferPool", Thread.NORM_PRIORITY - 2 ) );
+ new PrioThreadFactory( "TransferPool", Thread.NORM_PRIORITY - 2 ), null );
private static final Listener plainListener;
private static final Listener sslListener;
diff --git a/src/main/java/org/openslx/imagemaster/thrift/server/HttpListener.java b/src/main/java/org/openslx/imagemaster/thrift/server/HttpListener.java
index b56f64e..b39d993 100644
--- a/src/main/java/org/openslx/imagemaster/thrift/server/HttpListener.java
+++ b/src/main/java/org/openslx/imagemaster/thrift/server/HttpListener.java
@@ -2,6 +2,7 @@ package org.openslx.imagemaster.thrift.server;
import java.io.IOException;
import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -9,6 +10,7 @@ import org.apache.thrift.protocol.TJSONProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TMemoryBuffer;
import org.openslx.bwlp.thrift.iface.MasterServer;
+import org.openslx.util.CascadedThreadPoolExecutor;
import org.openslx.util.Util;
import fi.iki.elonen.NanoHTTPD;
@@ -23,7 +25,7 @@ public class HttpListener extends NanoHTTPD
public HttpListener( String hostname, int port ) throws IOException
{
- super( hostname, port, 64, 16 );
+ super( hostname, port, new CascadedThreadPoolExecutor( 4, 32, 1, TimeUnit.MINUTES, 2, "HTTP" ) );
this.maxRequestSize = 1_000_000;
}