Skip to content

Instantly share code, notes, and snippets.

@dheles
Created July 2, 2018 17:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dheles/479f7ea5e90dc67445e5c6ac99e60290 to your computer and use it in GitHub Desktop.
Save dheles/479f7ea5e90dc67445e5c6ac99e60290 to your computer and use it in GitHub Desktop.
#---------------------------------------------------------------#
#----------------SWORD 2.0 SERVER CONFIGURATIONS----------------#
#---------------------------------------------------------------#
# These configs are only used by the SWORD Server interface, #
# version 2.0 (used by DSpace to accept ingest packages via #
# SWORD 2.0 protocol) #
#---------------------------------------------------------------#
# the base url of the sword 2.0 system
#
# the default if {dspace.url}/swordv2
#
#swordv2-server.url = http://www.myu.ac.uk/swordv2
# The base URL of the SWORD collection. This is the URL from
# which DSpace will construct the deposit location urls for
# collections.
#
# The default is {dspace.url}/swordv2/collection
#
# In the event that you are not deploying DSpace as the ROOT
# application in the servlet container, this will generate
# incorrect URLs, and you should override the functionality
# by specifying in full as below:
#
# swordv2-server.collection.url = http://www.myu.ac.uk/swordv2/collection
# The base URL of the SWORD service document. This is the
# URL from which DSpace will construct the service document
# location urls for the site, and for individual collections
#
# The default is {dspace.url}/swordv2/servicedocument
#
# In the event that you are not deploying DSpace as the ROOT
# application in the servlet container, this will generate
# incorrect URLs, and you should override the functionality
# by specifying in full as below:
#
# swordv2-server.servicedocument.url = http://www.myu.ac.uk/swordv2/servicedocument
# The accept packaging properties, along with their associated
# quality values where appropriate.
#
# Global settings; these will be used on all DSpace collections
#
swordv2-server.accept-packaging.collection.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.accept-packaging.collection.SimpleZip = http://purl.org/net/sword/package/SimpleZip
swordv2-server.accept-packaging.collection.Binary = http://purl.org/net/sword/package/Binary
# The accept packaging properties for items. This is used to determine
# which package types are acceptable to deposit into an existing item,
# either adding to or replacing the media resource
#
swordv2-server.accept-packaging.item.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.accept-packaging.item.SimpleZip = http://purl.org/net/sword/package/SimpleZip
swordv2-server.accept-packaging.item.Binary = http://purl.org/net/sword/package/Binary
# A comma separated list of MIME types that SWORD will accept
swordv2-server.accepts = */*
# Collection Specific settings: these will be used on the collections
# with the given handles
#
#swordv2-server.accept-packaging.collection.[handle].METSDSpaceSIP = http://purl.org/net/sword-types/METSDSpaceSIP
# Should the server offer as the default the list of all Communities
# to a Service Document request. If false, the server will offer
# the list of all collections, which is the default and recommended
# behaviour at this stage.
#
# NOTE: a service document for Communities will not offer any viable
# deposit targets, and the client will need to request the list of
# Collections in the target before deposit can continue
#
swordv2-server.expose-communities = false
swordv2-server.allow-community-deposit = false
# The maximum upload size of a package through the sword interface,
# in bytes
#
# This will be the combined size of all the files, the metadata and
# any manifest data. It is NOT the same as the maximum size set
# for an individual file upload through the user interface. If not
# set, or set to 0, the sword service will default to no limit.
#
swordv2-server.max-upload-size = 0
# Should DSpace store a copy of the original sword deposit package?
#
# NOTE: this will cause the deposit process to run slightly slower,
# and will accelerate the rate at which the repository consumes disk
# space. BUT, it will also mean that the deposited packages are
# recoverable in their original form. It is strongly recommended,
# therefore, to leave this option turned on.
#
# NOTE: this affects all incoming deposits, whether they are package
# deposits or not. That is, if individual files are uploaded to the
# Media Resource, a copy of that file will be stored in the SWORD
# bundle AND into the ORIGINAL bundle.
#
swordv2-server.keep-original-package = true
# The bundle name that SWORD should store incoming packages under if
# keep-original-package is set to true. The default is "SWORD"
# if not value is set
#
# swordv2-server.bundle.name = SWORD
# The bundle name that SWORD should use to store deleted bitstreams
# if versions.keep is set to true. This will be used in the case
# that individual files are updated or removed via SWORD. If
# the entire Media Resource (files in the ORIGINAL bundle) is removed
# this will be backed up in its entirity in a bundle of its own
#
# swordv2-server.bundle.deleted = DELETED
# In the event of package ingest failure, provide an option to store
# the package on the file system. The default is false.
#swordv2-server.keep-package-on-fail=false
#swordv2-server.failed-package.dir=${dspace.dir}/upload
# Should we support mediated deposit via sword? Enabled, this will
# allow users to deposit content packages on behalf of other users.
#
# WARNING: enabling mediated deposit is not intrinsically secure,
# it places a trust relationship between the authenticating user
# and the On-Behalf-Of user account within DSpace. For example,
# ANY authenticated user may make changes to an existing item
# which belongs to the On-Behalf-Of user, which represents a significant
# security risk. It is therefore recommended to either disable
# mediated deposit, or to expressly set a list of accounts which
# are allowed to mediate on behalf of other users
# (see swordv2-server.on-behalf-of.update.mediators)
#
# See the SWORD specification for a detailed explanation of deposit
# On-Behalf-Of another user
#
swordv2-server.on-behalf-of.enable = false
#
# Which user accounts are allowed to do updates on items which already
# exist in DSpace, on-behalf-of other users?
#
# If this is left blank, or omitted, then all accounts can mediate
# updates to items, which could be a security risk, as there is no
# implicit checking that the authenticated user is a "legitimate"
# mediator
#
# FIXME: this would be best maintained in the database with a nice UI
# ... so if you feel the urge to build one please don't hesitate!
#
#swordv2-server.on-behalf-of.update.mediators = user1@myu.edu, user2@myu.edu
# Should the deposit receipt include a verbose description of the deposit?
#
swordv2-server.verbose-description.receipt.enable = false
# should the error document include a verbose description of the error
#
swordv2-server.verbose-description.error.enable = true
# The error document can contain an alternate url, which the client
# can use to follow up any issues.
#
# This is the Contact-Us page on the XMLUI (localise the url space
# first)
#
swordv2-server.error.alternate.url = ${dspace.baseUrl}/contact
# The URL may have an associated content type; if you know what it
# is, you can enter it here
#
swordv2-server.error.alternate.content-type = text/html
# The URL which identifies the sword software which provides
# the sword interface. This is the URL which DSpace will use
# to fill out the atom:generator element of its atom documents.
#
# The default is:
#
# http://www.dspace.org/ns/sword/2.0/
#
# If you have modified your sword software, you should change
# this URI to identify your own version. If you are using the
# standard dspace-sword module you will not, in general, need
# to change this setting
#
# swordv2-server.generator.url = http://www.dspace.org/ns/sword/2.0/
# Which version of SWORD is being used
swordv2-server.generator.version = 2.0
# The form of authentication to use
# This is normally set to 'Basic' for HTTP Basic
# Other valid values: 'None'
swordv2-server.auth-type = Basic
# The location where uploaded files and packages are
# stored while being processed
swordv2-server.upload.tempdir = ${upload.temp.dir}
# The metadata field in which to store the updated date for
# items deposited via SWORD.
swordv2-server.updated.field = dc.date.updated
# The metadata field in which to store the value of the slug
# header if it is supplied
swordv2-server.slug.field = dc.identifier.slug
# The metadata field in which to store the value of the
# atom entry author if it is supplied
swordv2-server.author.field = dc.contributor.author
# The metadata field in which to store the value of the
# atom entry title if it is supplied
swordv2-server.title.field = dc.title
# Supported packaging formats for the dissemination of packages
# FIXME: this format is not supported ...
#swordv2-server.disseminate-packaging.METSDSpaceSIP = http://purl.org/net/sword/package/METSDSpaceSIP
swordv2-server.disseminate-packaging.SimpleZip = http://purl.org/net/sword/package/SimpleZip
# Configure the plugins to process incoming packages. The form of this
# configuration is as per the Plugin Manager's Named Plugin documentation:
#
# plugin.named.[interface] = [implementation] = [package format identifier] \
#
# Package ingesters should implement the SWORDIngester interface, and
# will be loaded when a package of the format specified above in:
#
# swordv2-server.accept-packaging.[package format].identifier = [package format identifier]
#
# is received.
#
# In the event that this is a simple file deposit, with no package
# format, then the class named by "SimpleFileIngester" will be loaded
# and executed where appropriate. This case will only occur when a single
# file is being deposited into an existing DSpace Item
#
plugin.named.org.dspace.sword2.SwordContentIngester = \
org.dspace.sword2.SimpleZipContentIngester = http://purl.org/net/sword/package/SimpleZip, \
org.dspace.sword2.SwordMETSContentIngester = http://purl.org/net/sword/package/METSDSpaceSIP, \
org.dspace.sword2.BinaryContentIngester = http://purl.org/net/sword/package/Binary
#, \
# org.dspace.swordpackagers.SwordDocXIngester = application/vnd.openxmlformats-officedocument.wordprocessingml.document, \
# org.dspace.swordpackagers.SwordXifIngester = image/jpeg
plugin.single.org.dspace.sword2.SwordEntryIngester = \
org.dspace.sword2.SimpleDCEntryIngester
plugin.single.org.dspace.sword2.SwordEntryDisseminator = \
org.dspace.sword2.SimpleDCEntryDisseminator
# note that we replace ";" with "_" as ";" is not permitted in the PluginService names
plugin.named.org.dspace.sword2.SwordContentDisseminator = \
org.dspace.sword2.SimpleZipContentDisseminator = http://purl.org/net/sword/package/SimpleZip, \
org.dspace.sword2.FeedContentDisseminator = application/atom+xml, \
org.dspace.sword2.FeedContentDisseminator = application/atom+xml_type_feed
# note that we replace ";" with "_" as ";" is not permitted in the PluginService names
plugin.named.org.dspace.sword2.SwordStatementDisseminator = \
org.dspace.sword2.AtomStatementDisseminator = atom, \
org.dspace.sword2.OreStatementDisseminator = rdf, \
org.dspace.sword2.AtomStatementDisseminator = application/atom+xml_type_feed, \
org.dspace.sword2.OreStatementDisseminator = application/rdf+xml
# Which bundles should the Statement include in its list of aggregated resources
#
# The Statement will automatically mark any bitstreams which are in the bundle
# identified by the ${bundle.name} property, provided that bundle is also
# listed here (i.e. if you want Original Deposits to be listed in the Statement
# then you should add the SWORD bundle to this list)
#
swordv2-server.statement.bundles = ORIGINAL, SWORD, LICENSE
# Workflow manager implementation - tells us what we are allowed to do
# via the SWORDv2 interface
#
# There are two default workflow managers:
# - org.dspace.sword2.WorkflowManagerDefault: Only items in submission
# are allowed to be UPDATED or DELETED using SWORD.
# - org.dspace.sword2.WorkflowManagerUnrestricted: Items in workflow,
# in archive, or withdrawn can also be UPDATED or DELETED using
# SWORD
plugin.single.org.dspace.sword2.WorkflowManager = \
org.dspace.sword2.WorkflowManagerDefault
# Should the WorkflowManagerDefault allow updates to the item's metadata
# to take place on items which are in states other than the workspace
# (e.g. in the workflow, archive, or withdrawn) ?
#
swordv2-server.workflowmanagerdefault.always-update-metadata = true
# Should the server allow PUT to individual files?
#
# If this is enabled, then DSpace may be used with the DepositMO SWORD
# extensions, BUT the caveat is that DSpace does not formally support
# Bitstream replace, so this is equivalent to a DELETE and then a POST,
# which violates the RESTfulness of the server. The resulting file
# DOES NOT have the same identifier as the file it was replacing. As such
# it is STRONGLY RECOMMENDED to leave this option turned off unless working
# explicitly with DepositMO enabled client environments
#
swordv2-server.workflowmanagerdefault.file-replace.enable = false
# tell the SWORD METS implementation which package ingester to use
# to install deposited content. This should refer to one of the
# classes configured for:
#
# plugin.named.org.dspace.content.packager.PackageIngester
#
# The value of swordv2-server.mets-ingester.package-ingester tells the
# system which named plugin for this interface should be used
# to ingest SWORD METS packages
#
# The default is METS
#
# swordv2-server.mets-ingester.package-ingester = METS
# Should the sword server enable restore-mode when ingesting new
# packages. If this is enabled the item will be treated as a
# previously deleted item from the repository. If the item had
# previously been assigned a handle then that same handle will be
# restored to activity.
swordv2-server.restore-mode.enable = false
# metadata field mapping for SimpleDCEntryIngester, SimpleDCEntryDisseminator and FeedContentDisseminator,
#
swordv2-server.simpledc.abstract = dc.description.abstract
swordv2-server.simpledc.accessRights = dc.rights
#swordv2-server.simpledc.accrualMethod = dc.????
#swordv2-server.simpledc.accrualPeriodicity = dc.????
#swordv2-server.simpledc.accrualPolicy = dc.????
swordv2-server.simpledc.alternative = dc.title.alternative
#swordv2-server.simpledc.audience = dc.???
swordv2-server.simpledc.available = dc.date.available
swordv2-server.simpledc.bibliographicCitation = dc.identifier.citation
#swordv2-server.simpledc.conformsTo = dc.????
swordv2-server.simpledc.contributor = dc.contributor
swordv2-server.simpledc.coverage = dc.coverage
swordv2-server.simpledc.created = dc.date.created
swordv2-server.simpledc.creator = dc.contributor.author
swordv2-server.simpledc.date = dc.date
swordv2-server.simpledc.dateAccepted = dc.date.accepted
# swordv2-server.simpledc.dateCopyrighted = dc.date.???
swordv2-server.simpledc.dateSubmitted = dc.date.submitted
swordv2-server.simpledc.description = dc.description
#swordv2-server.simpledc.educationLevel = dc.???
swordv2-server.simpledc.extent = dc.format.extent
swordv2-server.simpledc.format = dc.format
#swordv2-server.simpledc.hasFormat = dc.????
#swordv2-server.simpledc.hasPart = dc.???
#swordv2-server.simpledc.hasVersion = dc.???
swordv2-server.simpledc.identifier = dc.identifier
#swordv2-server.simpledc.instructionalMethod = dc.???
#swordv2-server.simpledc.isFormatOf = dc.???
swordv2-server.simpledc.isPartOf = dc.relation.ispartof
swordv2-server.simpledc.isReferencedBy = dc.relation.isreferencedby
swordv2-server.simpledc.isReplacedBy = dc.relation.isreplacedby
swordv2-server.simpledc.isRequiredBy = dc.relation.isrequiredby
swordv2-server.simpledc.issued = dc.date.issued
#swordv2-server.simpledc.isVersionOf = dc.????
swordv2-server.simpledc.language = dc.language
#swordv2-server.simpledc.license = dc.????
#swordv2-server.simpledc.mediator = dc.????
swordv2-server.simpledc.medium = dc.format.medium
swordv2-server.simpledc.modified = dc.date.modified
swordv2-server.simpledc.provenance = dc.description.provenance
swordv2-server.simpledc.publisher = dc.publisher
swordv2-server.simpledc.references = dc.relation.references
swordv2-server.simpledc.relation = dc.relation
swordv2-server.simpledc.replaces = dc.relation.replaces
swordv2-server.simpledc.requires = dc.relation.requires
swordv2-server.simpledc.rights = dc.rights
swordv2-server.simpledc.rightsHolder = dc.rights
swordv2-server.simpledc.source = dc.source
swordv2-server.simpledc.spatial = dc.coverage.spatial
swordv2-server.simpledc.subject = dc.subject
#swordv2-server.simpledc.tableOfContents = dc.????
swordv2-server.simpledc.temporal = dc.coverage.temporal
swordv2-server.simpledc.title = dc.title
swordv2-server.simpledc.type = dc.type
#swordv2-server.simpledc.valid = dc.????
swordv2-server.atom.author = dc.contributor.author
swordv2-server.atom.published = dc.date.created
swordv2-server.atom.rights = dc.rights
swordv2-server.atom.summary = dc.description.abstract
swordv2-server.atom.title = dc.title
swordv2-server.atom.updated = dc.date.created
# Used by SimpleDCEntryIngester:
#
# Which metadata fields can be replaced during a PUT to the Item of an
# Atom Entry document? Fields listed here are the ones which will be
# removed when a new PUT comes through (irrespective of whether there
# is a new incoming value to replace them)
#
swordv2-server.metadata.replaceable = dc.description.abstract, \
dc.rights, \
dc.title.alternative, \
dc.identifier.citation, \
dc.contributor, \
dc.coverage, \
dc.contributor.author, \
dc.date, \
dc.description, \
dc.format.extent, \
dc.format, dc.identifier, \
dc.relation.ispartof, \
dc.relation.isreferencedby, \
dc.relation.isreplacedby, \
dc.relation.isrequiredby, \
dc.language, \
dc.format.medium, \
dc.date.modified, \
dc.publisher, \
dc.relation.references, \
dc.relation, \
dc.relation.replaces, \
dc.relation.requires, \
dc.source, \
dc.coverage.spatial, \
dc.subject, \
dc.coverage.temporal, \
dc.title, \
dc.type
# order of precedence for importing multipart content. if entry-first then
# metadata in the package will override metadata in the entry, otherwise
# the entry metadata will be applied before the package metadata, so the
# package may override the metadata supplied in the entry - it depends on
# the specific behaviour of the package ingester selected
#
# Defaults to false
swordv2-server.multipart.entry-first = false
# if the workflow gets started, should there be a notification
# email sent
#
swordv2-server.workflow.notify = true
# when content is replaced, should the old version of the content be kept? This
# creates a copy of the ORIGINAL bundle with the name V_YYYY-MM-DD.X where YYYY-MM-DD
# is the date the copy was created, and X is an integer from 0 upwards.
#
swordv2-server.versions.keep = true
swordv2-server.state.workspace.uri = http://dspace.org/state/inprogress
swordv2-server.state.workspace.description = The item is in the user workspace
swordv2-server.state.workflow.uri = http://dspace.org/state/inreview
swordv2-server.state.workflow.description = The item is undergoing review prior to acceptance to the archive
swordv2-server.state.archive.uri = http://dspace.org/state/archived
swordv2-server.state.archive.description = The item has been archived
swordv2-server.state.withdrawn.uri = http://dspace.org/state/withdrawn
swordv2-server.state.withdrawn.description = The item has been withdrawn from the archive and is no longer available
# URL template for items in the workspace (items in the archive will use
# the handle)
#
# JSPUI
# swordv2-server.workspace.url-template = ${dspace.baseUrl}/view-workspaceitem?submit_view=Yes&workspace_id=#wsid#
# XMLUI
swordv2-server.workspace.url-template = ${dspace.baseUrl}/submit?workspaceID=#wsid#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment