* Fixed a bug in 'lib/rdevent_line.cpp' that caused an embedded traffic
import event to be assigned incorrect link parameters when scheduled
at midnight.
* Fixed a bug in 'lib/rdevent_line.cpp' that caused embedded traffic
import events to be assigned incorrect link parameters when scheduled
immediately after a voice track.
* Fixed a bug in 'lib/rdevent_line.cpp' that caused embedded traffic
import events to be assigned incorrect link parameters when scheduled
immediately after a voice track.
* Added an 'RDEscapeShellString()' function in 'lib/rdescape_string.h'
and 'lib/rdescape_string.cpp'.
* Fixed a bug in 'lib/rduser.cpp' that caused PAM authentication of
accounts with a password containing one or more '$' characters to fail.
* Added a 'SYSTEM.SHOW_USER_LIST' field to the database.
* Incremented the database version to 265.
* Added 'RDSystem::showUserList()' and 'RDSystem::setShowUserList()'
methods in 'lib/rdsystem.cpp' and 'lib/rdsystem.h'.
* Added a 'Show User List in RDLogin' control to the 'Edit System'
dialog in 'rdadmin/edit_settings.cpp' and 'rdadmin/edit_settings.h'.
* Altered RDLogin to display a text input field for the user name
when 'Show User List in RDLogin' is unchecked.
* Fixed a bug in 'web/rdxport/carts.cpp' and 'web/rdxport/import.cpp'
that caused the 'EditCart' web API call to return an error when
attempting to set the Title field to its current value when
Allow Duplicate Cart Titles was not enabled.
* Added a '<fadedownGain>' parameter to the return of the 'ListLog'
web API call.
* Added 'FADEUP_GAIN' and 'FADEDOWN_GAIN' parameters to the 'SaveLog'
web API call.
* Added a 'SYSTEM.FIX_DUP_CART_TITLES' field to the database.
* Incremented the database version to 264.
* Added 'RDSystem::fixDuplicateCartTitles()' and
'RDSystem::setFixDuplicateCartTitles()' methods in 'lib/rdsystem.cpp'
and 'lib/rdsystem.h'.
* Added an 'Auto-Correct Duplicate Cart Titles' checkbox to the
'System Settings' dialog in 'rdadmin/edit_settings.cpp' and
'rdadmin/edit_settings.h'.
* Modified the 'EditCart' web call to enforce the 'Auto-Correct
Duplicate Cart Titles' setting.
* Added an 'RDMatrix::KernelGpio' element to the 'RDMatrix::Type enum.
* Implemented a Kernel GPIO switcher driver in 'ripcd/kernelgpio.cpp'
and 'ripcd/kernelgpio.h'.
* Added pseudo-schema change 263 to restore missing LOG_MODES table
records [GitHub issue #000175].
* Added code to create and remove LOG_MODES table records when
adding and removing Host definitions.
* Incremented the database version to 263.
* Added an 'RDMatrix::Modbus' element to the 'RDMatrix::Type enum.
* Implemented a Modbus TCP switcher driver in 'ripcd/modbus.cpp' and
'ripcd/modbus.h'.
* Fixed a bug in 'lib/rdcart.cpp' that caused the 'Import' web API call
to return 404 when importing with 'CREATE' set to '1' and unique titles
enabled in the database.
* Added an rdauth(1) utility in 'utils/rdauth/'.
* Fixed a regression in 'lib/rdcart.cpp' that caused the 'Import'
web API call to fail with an 'unsupported format' error.
* Added a 'USERS.LOCAL_AUTH' field to the database.
* Added a 'USERS.PAM_SERVICE' field to the database.
* Added an index on 'STATIONS.IPV4_ADDRESS' to the database.
* Incremented the database version to 262.
* Added 'RDUser::localAuthentication()',
'RDUser::setLocalAuthentication()', 'RDUser::pamService()' and
'RDUser::setPamService()' methods in 'lib/rduser.cpp' and
'lib/rduser.h'.
* Added 'PAM Service' and 'Authenticate This User Locally' controls
to the Edit User dialog in 'rdadmin/edit_user.cpp' and
'rdadmin/edit_user.h'.
* Added a PAM service configuration in 'conf/rivendell.pam'.
* Added a 'CUTS.SHA1_HASH' field to the database.
* Incremented the database version to 261.
* Added a 'Sha1' column to the Cut List in 'rdlibrary/audio_cart.cpp'.
* Added 'RDCut::sha1Hash()' and 'RDCut::setSha1Hash()' methods in
'lib/rdcut.cpp' and 'lib/rdcut.h'.
* Added a '--rehash=' directive to rddbcheck(8).
* Added a 'Rehash' Web API call.
* Added an 'RDRehash' class in 'lib/rdrehash.cpp' and 'lib/rdrehash.h'.
* Added a 'WEBAPI_AUTHS' table to the database.
* Added a 'USERS.WEBAPI_AUTH_TIMEOUT' field to the database.
* Incremented the database version to 260.
* Added 'RDUser::webapiAuthTimeout()' and
'RDUser::setWebapiAuthTimeout()' methods in 'lib/rduser.cpp' and
'lib/rduser.h'.
* Added a 'WebAPI Timeout' control to the Edit User dialog in
'rdadmin/edit_user.cpp' and 'rdadmin/edit_user.h'.
* Implemented a 'CreateTicket' Web API call.
* Fixed a bug in 'lib/rdaudioconvert.cpp' that caused conversions
from MPEG Layer 3 VBR data to be truncated when no end point
was specified.
* Fixed a bug in 'web/rdxport/import.cpp' that caused the
end marker to be positioned incorrectly when importing MPEG
Layer 3 VBR files.
* Fixed a bug in 'rdlibrary/audio_cart.cpp' where the 'Conductor'
failed to be imported from RDXL chunks.
* Added a 'songId' field to the cart metadata XML.
* Added 'RDCart::xmlSql()' and second 'RDCart::xml()' methods.
* Refactored the 'RDCart::xml()' method to use a SQL query.
* Refactored the Cart and Cut web methods in 'web/rdxport/carts.cpp'
to use SQL queries.
* Modified 'lib/rdformpost.cpp' to use read-only accessors for
std::map values.
* Added a check for valid event IDs for the 'SaveLog' method in
'web/rdxport/logs.cpp'.
* Modified the '<forcedLength>', '<averageLength>',
'<lengthDeviation>', '<averageSegueLength>' and
'<averageHookLength>' fields in the return of the 'ListCart'
and 'ListCarts' web methods to return a two-digit hours field.
* Fixed a bug in 'lib/rdlog_line.cpp' that caused the event start
time to be incorrect in the 'ListLog' Web API method for times of
'00:00:00.0' for 'hard' type.
* Changed the DLL load target for libmad from 'libmad.so' to
'libmad.so.0' in 'cae/cae.cpp' and 'lib/rdaudioconvert.cpp'.
* Changed the DLL load target for lame from 'libmp3lame.so' to
'libmp3lame.so.0' in 'cae/cae.cpp' and 'lib/rdaudioconvert.cpp'.
* Changed the DLL load target for faad from 'libfaad.so' to
'libfaad.so.2' in 'cae/cae.cpp' and 'lib/rdmp4.cpp'.
* Changed the DLL load target for mp4v2 from 'libmp4v2.so' to
'libmp4v2.so.2' in 'cae/cae.cpp' and 'lib/rdaudioconvert.cpp'.
* Added an 'AddLog' method to the Web API.
* Added an 'DeleteLog' method to the Web API.
* Added a 'SaveLog' method to the Web API.
* Added 'eventLength', 'linkEventName', 'linkStartSlop',
'linkEndSlop', 'linkId', 'linkEmbedded', 'extStartTime',
'extLength', 'extCartName', 'extData', 'extEventId',
and 'extAnncType' XML fields to the return of the ListLog web
API method