Difference between revisions of "EPrints 3.4.3"
(Removed known issue as rolled in 3.4.3) |
m (Switch column headings to correct columns) |
||
| Line 129: | Line 129: | ||
|- | |- | ||
! Setting | ! Setting | ||
| + | ! Example | ||
! CGI Setting | ! CGI Setting | ||
| − | |||
! CGI Example | ! CGI Example | ||
|- | |- | ||
Revision as of 12:11, 27 April 2021
Contents
Release Notes
EPrints 3.4.3 is now available on files.eprints.org and GitHub.
- Zero codename: Snickerdoodle Sandstorm
- Publications flavour codename: Banana Bread Rainbow
New Dependencies
None. Check earlier dependencies for EPrints 3.4.2 and before.
Changes Since 3.4.2
New Functionality
- Provides function (EPrints::Utils::compare_version) for comparing EPrints software versions so plugins can choose to behave differently.
- Adds jquery EPrints 3.4 ingredient to allow JQuery resources to be incorporated if required by non-core EPrints functionality. Ingredient added but commented out in flavours/pub_lib/inc.
- Provides picker for date fields to reduce potential for human error.
Security and Privacy Improvements
- Makes JSON export respect value set for export_as_xml to avoid exporting unintended fields.
- Sets contact_email to not export by default for better GDPR compliance.
- Rate limits failed local login attempts for a particular user. Defaults to 10 failed login attempts in 10 minutes (using $c->{max_login_attempts} and $c->{lockout_minutes} configuration options).
- Rate limits new account requests. Defaults to 100 requests in a hour long period to avoid causing problems with planned mass sign up events. Configured using $c->{max_account_requests} and $c->{max_account_requests_minutes} options.
- Limits the maximum length of a password (default 200 characters) to prevent specific Denial-of-Service attacks.
- Modifies
latexinvocation to make more secure an ensure it rights to the correct output directory. - Removes legacy
/cgi/latex2pngscript to prevent Remote Code Execution (RCE) from CVE-2021-3342. - Validates parameters passed to
/cgi/calscript to protect against RCE and Cross Site Scripting (XSS) from CVE-2021-26475 and CVE-2021-26476. - Validates
datasetparameter passed to/cgi/dataset_dictionaryto protect against XSS from CVE-2021-26702. - Validates parameters passed to
/cgi/history_searchto protect against the possibility of XSS and MySQL injection vulnerabilities, although none currently exploitable. - Validates
verbpassed to/cgi/toolbox/toolboxto protect against RCE from CVE-2021-26704. - Allows
EPrints::XML::parse_stringto temporarily modify parser configuration to disable expanding of XML entities by the/cgi/ajax/phrasescript to protect against CVE-2021-26703. - Ensure
eprints_langcookie explicitly setsSameSiteattribute toLaxif HTTPS is not enabled or setssecureattribute to1if it is. - Doubles (to 16) number of characters used for randomly generated password suggestions (e.g. for database user created by
epadmin).
General Improvements
- Resolves all accessibility errors and most alerts (as reported by the WAVE Web Accessibility Evaluation Tool) for backend admin pages as listed in the Accessibility report.
- Tidies up the use of configuration URLs and Paths
- Uses HTML class for Longtext_counter counter line and provides CSS to by default make this red and bold if the maxwords limit is exceeded.
- Allows full path or just subject name to be displayed for values set in subjects field by setting render_path attribute (true by default).
- Allows time between password reset requests to be configured (to a number of hours) rather than hard-coded to 24 hours.
- Adds option to set status of EPrints that should be checked by check_xapian script.
- Adds date_embargo_retained field to Documents to retain the embargo date after the embargo is lifted.
- Adds deprecation warning to indicate only LibXML library will be supported in future versions of EPrints. (Version for removal yet to be confirmed).
- Adds basic default citation for files.
- Adds validation for date fields to prevent invalid dates being set.
- Allows files to be stored to disk with generic filenames (i.e.
<fileid>.bin) rather than the upload filename that can cause retrieval problem by setting the$c->{generic_filenames}configuration setting. - Adds code to
libandpub_libversions ofsecurity.plto deal with request a copy access issue if repository has coversheets plugin enabled. - Allows sub-fields to have help texts configured.
- Generates log message for views that have reached their
max_itemslimit. - Allows document fields displayed in an eprint's Details tab to be configured.
- Adds data-context attributes to aid CSS styling of HTML div elements within search forms.
- Improves scaling of of Lightbox popups on narrow screens.
- Allows a pin to set the id or class attribute for a template HTML element to facilitate different CSS styling on different pages.
- Prompts for organisation name when creating a new archive using
epadmin create. - Allows classes to be assigned to parts (i.e. top, left, main, after, etc.) of abstract/summary pages to facilitate better CSS styling.
- Allows search results forms to be configured to automatically reload on ordering change.
- Allows classes for EPrints' user menu (i.e. by default
ep_tm_key_tools) to be configured to better integrate with institutional branding. - Adds commented advice on fixing issues with PDF thumbnail generation using ImageMagick.
- Tidies up citations by removing identical
flavours/pub_lib/citations that appear inlib/. - Allows
max_filesthat can be expanded from an uploaded zip file to be configured. (Previously hardcoded to 100 file limit). - Allows customisable overriding of type-mapping based on
ispublishedvalue for BiBTeX and RIS export. (I.e. not using@unpublishedtype ifispublishedset tounpub). - Provides
has_roleEPC function to allow more granular control of workflows that can be edited by specific group of user that have has this role added to their profile. - Allows positioning of hovering document preview to be set to left or right and implements this in
summary_pageandresulteprint citations to improve preview positioning. - Improves verbosity of
get_inputandget_input_hiddento explain better why input is invalid. Assistingepadmindata entry. - Makes
id_number(i.e. for DOIs, etc.) field default typeidrather thantextto facilitate search for exact IDs, especially those containing non-alphanumeric characters (e.g. 10.1016/j.ejor.2018.02.047). - Restricts characters that can be used in new user-added subject IDs to alphanumeric characters, underscores and hyphens.
- Ensures subject-type field behaves the same in default (i.e. multiple select form element) as it does in subject tree format. I.e. subject tree mode lets previously selected subjects stay selected, even if the subject itself has been set as undepositable in the intervening period. Default mode silently unselects these.
- Switches to using real bazaar ingredient rather than bazaar_stub for zero flavour in
EPrints::SystemSettingsas this former is now available in core codebase. - Prevents removing items that have and have once been in the live archive, without an extra permission:
eprints/remove_once_archived. (Retiring items is still permitted without extra permission).
Bug Fixes
- Prevents access code from changing if request a copy is approved multiple times (and warns if request has already been approved).
- Fixes bug with logged in users not being able to access approved request a copy documents that they would not normally have access.
- Fixes formatting of results from user search introduced by accessibility changes in 3.4.2.
- Updates issue citation to use
<div>rather thanandtags so it works with accessibility changes introduced in 3.4.2. - Deals more gracefully if History DataObj's parent does not exist when checking if it is an
EPrints::List. - Fixes internal server error when trying to save values to a non-multiple compound field.
- Fixes issue with XML import setting unset compound subfields to NULL rather than empty string.
- Fixes errors on import pages caused by Accessibility improvements and fixes other Accessibility issues for import pages.
- Fixes broken link of default 401 error page.
- Sets STDOUT and STDERR binmode to utf8 to avoid wide character errors.
- Fixes user history layout as a result of earlier Accessibility improvements.
- Fixes missing phrases reported in error logs. Typically fieldhelp phrases for sub-fields of compound fields, which are generally not rendered but still report missing phrase warnings.
- Sets
SameSiteproperty toNonefor secure login and request copy cookies as Google Chrome is now quite strict about this. - Provides handling for XML parsing of revision files to show warning for particular revision in the hostory tab rather than an internal server error for the whole page.
- Allows use of same pin multiple times within a phrase.
- Prevents undefined
$c->{aliases}from causingepadmin config_coreto fail. - Ensures saved searches indicate email notifications cannot be sent when the
Xapianv2(in addition toXapian) plugin has been used for the original search. - Adds missing
event_queuephrases. - Fixes inappropriate mapping of
monograph_typein BibTeX import. - Fixes erroneous post-login redirection when login required to access eprint summary/abstract pages and long URLs (e.g. /id/eprint/1234) enabled.
- Ensures
readonlyattribute works forMetaField::Setin compound-multiple fields. - Adds missing
reasonphrase forRejectWithEmailscreen plugin. - Prevents HEAD requests (e.g. email link checkers) for password from resets from actioning the reset. (Otherwise, when the user clicks the link it will say the password has already been reset, which may concern the user).
- Forces full day-month-year to be set for document embargo expiry to avoid any ambiguity.
- Improves
epadminby removing unusable functionality and reporting if database tables do not get created as expected. - Adds symlinks between
briefanddefaultcitations for various data objects to prevent log warnings. - Better handles DOI not being set when parsing it.
- Provides more useful logging when field has invalid parameters.
- Fixes missing pin for error message phrase when restarting indexer.
- Fixes
MetaField::Listingfrom logging an error that nodatasetidis defined when on its index page (listing datasets). - Updates positions for plugins that appear in key tools menu to ensure deterministic ordering.
- Fixes bug to allow REST calls for subjects with IDs that contain full stops (.).
- Better handles finding parent eprint when this has been deleted.
- Fixes
tools/map_config.plto use correct directory for EPrints 3.4 and allow flavour to be specified as a parameter. - Fixes
tools/update_phrase/fileto ensure EPrints libraries can be used and allows specified base path, current working directory or full path to be used for phrase file parameters. - Fixes BibTeX import using uploaded files broken by update to third-party
BibTeX::Parserin EPrints 3.4.2. - Fixes RDF export by adding doi namespace for when id_number field is set to a DOI and is then translated to and owl:sameAs in a RDF export.
- Fixes bug preventing exporting file data objects in various metadata formats (e.g. Atom, EP3XML, CSV, etc.).
Known Issues
None at present.
Configuration URLs and Paths
EPrints has various configuration settings for URLs and paths that are automatically configured based on the settings in an archive's cfg/cfg.d/10_core.pl. The six most significant are the following:
http_url- The HTTP version of the URL (e.g. http://example.eprints.org). Since EPrints 3.4.1, this will be set to the same as
https_urlif$c->{host}is undefined in the archive's cfg/cfg.d/10_core.pl. https_url- The HTTPS version of the URL (e.g. https://example.eprints.org). If
$c->{securehost}is not defined in the archive'scfg/cfg.d/directory (typically in10_core.plorhttps.pl) then the URL will be set to HTTP (e.g. http://example.eprints.org) base_url- This is set to
http_urlor https_url depending on whether$c->{securehost}is defined. http_root- The HTTP version of the root path. Typically this will an empty string unless EPrints needs to run under its own path (e.g. http://example.eprints.org/eprints will need the
http_rootset to/eprints). https_root- The HTTPS version of the root path. Typically this will be empty string unless EPrints needs to run under its own path (e.g. https://example.eprints.org/eprints will need the
https_rootset to /eprints). rel_path- Like
base_urlthis is the same as thehttp_rootorhttps_rootdependent on whether$c->{securehost}is defined.
Each of the six configuration settings above have their sister configuration settings for their CGI URLs or paths:
| Setting | Example | CGI Setting | CGI Example |
|---|---|---|---|
| http_url | http://example.eprints.org | http_cgiurl | http://example.eprints.org/cgi |
| https_url | https://example.eprints.org | https_cgiurl | https://example.eprints.org/cgi |
| base_url | https://example.eprints.org | perl_url | https://example.eprints.org/cgi |
| http_root | http_cgiroot | /cgi | |
| https_root | https_cgiroot | /cgi | |
| rel_path | rel_cgipath | /cgi |
Over time there has been a move from EPrints repositories being HTTP-only to HTTP and HTTPS and further towards HTTPS only (with HTTP redirects). EPrints configuration has had to evolve over time to support all these use cases, so those running EPrints can (continue to) run the HTTP/HTTPS setup that works for them. (Although, the recommendation would be to use the most secure configuration available). However, this has led to inconsistent use of the twelve configuration settings for URLs and paths described above. Therefore, EPrints 3.4.3 has attempted to tidy up much of this.
The use of http_url, https_url, http_cgiurl and https_cgiurl is unnecessary, when base_url and perl_url by default will consistently provide the most secure available option. (The only case where there may be issue is for URIs representing eprint items. Where changing the repository setup should not change permanent URIs. For this the recently introduced uri_url configuration option can be used). Using base_url and perl_url consistently also ensure that there is not switching between the use of HTTPS and HTTP. In particular, this helps avoid problems with the web browser reporting mixed content warnings (e.g. HTTP images on HTTPS pages) and warnings when forms are submitted to an HTTP URL and the current page is HTTPS.
Using a full URL (with a protcol and hostname) is excessive in most cases and therefore rel_path and rel_cgipath should be the preferred options. However, there are a number of situations where this would not be appropriate, as the URL may be used outside the scope of the EPrint repository:
- In export formats for eprint items
- In citations for eprint items
- In generated email messages
- Links in the web page head to related alternate resources of services independent of the web page (i.e. to export formats, API services but not CSS, JavaScript, favicons, etc.).
For all these scenarios not using a full URLs might prevent the resource being accessed once the content has been exported, embedded, emailed or consumed by a user or third-party application.
The use of http_root, https_root, http_cgiroot and https_cgiroot is also unnecessary, when rel_path and rel_cgipath are available. Except when being used to define other URL and path configuration settings or (with http_url) generating Apache configuration (using bin/generate_apacheconf).
Summary of Changes
- All existing URL and path configuration settings have been retained to ensure existing plugins and bespoke code continue to function.
- Eliminated use of
http_url(except in Apache configuration generation),https_url,http_cgiurlandhttps_cgiurl. - Used
base_urlandperl_urlfor links related to user-generated content (i.e. eprint summary/abstract pages, document download URLs, document preview images/thumbnails, etc.), links defined in the head of a web page that are not directly related to the generation of the page (i.e. everything but CSS stylesheets, JavaScript and favicons) and links that are rendered as text on a web page. - Used
rel_pathandrel_cgipathfor all other purposes where it is unnecessary to usebase_urlorperl_url. - Eliminated use of
http_cgirootandhttps_cgirootand limited use ofhttp_rootandhttps_rootto Apache configuration generation and in defining other configuration settings. - Ensured
rel_pathandrel_cgipathare used for links in templates, static pages and other places where previously no URL/path configuration setting was used. To ensure these links work when EPrints is not running on the root path (i.e.rel_pathis not an empty string).
Planned Development
See EPrints 3.4.4