diff options
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; } |