#!/bin/sh ########################################################################### # The contents of this file are subject to the license and copyright # detailed in the LICENSE and NOTICE files at the root of the source # tree and available online at # # http://www.dspace.org/license/ ########################################################################### # 'make-handle-config' script # Unix shell script for writing a simple barebones configuration file for the # Handle server, with default options, unencrypted keys and connected # to the DSpace Handle plugin code. # Get the DSPACE/bin directory BINDIR=`dirname $0` echo "Writing simple Handle server configuration" # Read server URL from DSpace config dsurl=`$BINDIR/dspace dsprop --property dspace.server.url` # Parse hostname from URL dshostname=`echo $dsurl | awk -F/ '{ print $3; exit }'` # Determine IP address from hostname dshostip=`host $dshostname | awk '/has address/ { print $4; exit }'` if [ "$dshostip" = "127.0.0.1" ]; then # Just use default. SimpleSetup will fail when trying to bind to localhost addresses. dshostip="" fi dsname=`$BINDIR/dspace dsprop --property dspace.name` handle=`$BINDIR/dspace dsprop --property handle.prefix` handledir=`$BINDIR/dspace dsprop --property handle.dir` tempfile=/tmp/handleconfig$$ contactemail=`$BINDIR/dspace dsprop --property mail.admin` # Write the options to a file we can pipe into the setup tool echo "" >$tempfile # Primary server? Default = y (n = mirror server) echo "" >>$tempfile # Dual-stack (IPv4 and IPv6)? (default=n) echo $dshostip >>$tempfile # IP address echo "" >>$tempfile # DBind address (default=same as IP) echo "" >>$tempfile # Port to listen to (default=2641) echo "" >>$tempfile # Port for HTTP i/f to listen to (default=8000) echo "n" >>$tempfile # Log all accesses? ("y" or "n", default=y) echo "" >>$tempfile # Version/serial no. of site (default=1) echo $dsname Handle Server >>$tempfile # Server description echo $dsname >>$tempfile # Server descriptive name echo "" >>$tempfile # Contact name (default=none) echo "" >>$tempfile # Contact telephone (default=none) echo $contactemail >>$tempfile # Contact email echo "" >>$tempfile # Block UDP access? ("y" or "n", default=n) echo "n" >>$tempfile # Do not encrypt server cert private key # OR do not overwrite old server cert private key echo "n" >>$tempfile # Do not encrypt admin private key # OR do not overwrite old admin private key # Now run Handle server config tool, and pipe our config in $BINDIR/dspace dsrun net.handle.server.SimpleSetup $handledir < $tempfile >/dev/null 2>&1 # Remove temp file rm -f $tempfile # Now update server configuration (config.dct) with our handle prefix and the # DSpace Handle plugin sed 's/YOUR_PREFIX/'$handle'/' <$handledir/config.dct >$tempfile # Remove original config file - will replace rm -f $handledir/config.dct # Insert our HandlePlugin and turn off transaction queue. # This awk script inserts these lines in the server_config section: # "storage_type" = "CUSTOM" # "storage_class" = "org.dspace.handle.HandlePlugin" # "enable_txn_queue" = "n" awk '/.*/ {print $0} /"server_config" = {/ {printf "\"storage_type\" = \"CUSTOM\"\n\"storage_class\" = \"org.dspace.handle.HandlePlugin\"\n\"enable_txn_queue\" = \"no\"\n\n",$0}' <$tempfile >$handledir/config.dct #sed 's/"server_config" = {/"server_config" = {\n"storage_type" = "CUSTOM"\n"storage_class" = "org.dspace.handle.HandlePlugin"/' <$tempfile >$handledir/config.dct #awk 'NR==1 {printf "%s\n\"storage_type\" = \"CUSTOM\"\n\"storage_class\" = \"org.dspace.handle.HandlePlugin\"\n\n",$0} NR!=1 {print $0}' <$tempfile >$handledir/config.dct # Remove temp file rm -f $tempfile