* 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 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.
* Added a 'SERVICE_CLOCKS' table to the database.
* Incremented the database version to 259.
* Modified 'rdlogmanager/edit_clock.cpp' to use the new
'SERVICE_CLOCKS' table.
* Modified 'rdlogmanager/list_clocks.cpp' to use the new
'SERVICE_CLOCKS' table.
* Added a 'setautorefresh' command to rdclilogedit(1).
* Added a 'setdesc' command to rdclilogedit(1).
* Added a 'setenddate' command to rdclilogedit(1).
* Added a 'setpurgedate' command to rdclilogedit(1).
* Added a 'setservice' command to rdclilogedit(1).
* Added a 'setstartdate' command to rdclilogedit(1).
* Added a 'save' command to rdclilogedit(1) in
'utils/rdclilogedit/rdclilogedit.cpp' and
'utils/rdclilogedit/rdclilogedit.h'.
* Added a 'saveas' command to rdclilogedit(1) in
'utils/rdclilogedit/rdclilogedit.cpp' and
'utils/rdclilogedit/rdclilogedit.h'.
* Added '--bitrate=', '--channels=', '--format=', '--quality='
and '--samplerate=' to rdexport(1) in 'utils/rdexport/rdexport.cpp'
and 'utils/rdexport/rdexport.h'.
Most files are simple swaps to get rid of extra " as a NULL return will give
invalid SQL if used as follows UPDATE x SET y="NULL";
See github issue 121 for more info.
Extra changes have been made to the following files:
* lib/rdcartslot.cpp
- Added a QDateTime variable to prevent EVENT_DATETIME becoming
"2016-06-09" "NULL" as it was checked separately for date and time
* lib/rdcut.cpp
- Reworked START_DATETIME and END_DATETIME to save the SQL ifs. I believe this
makes it easier to read and understand.
- The >QDate(1900,1,1) and < 8000 is probably not needed but I left it there
just in case.
* lib/rdescape_string.cpp
- Reworked to add extra " if the date is not NULL see issue 121
* lib/rdfeed.cpp && lib/rdpodcast.cpp
- Had to add a SetRow for QDateTime as with the string conversion the existing
SetRow would add an extra set of "
* lib/rdsound_panel.cpp && rdairplay/log_traffic.cpp
&& utils/rddgimport/rddgimport.cpp
- Added a QString to contain EVENT_DATETIME to prevent double checks of date
and time separately (similar to lib/rdcartslot.cpp)
* rdcatchd/rdcatchd.cpp
- Reverted the changes. The RML here is not touching the DB so is fine, plus
with the RDCheckDateTime changes you'd have extra " unless it was NULL
* tests/sas_switch_torture.cpp && sas_torture.cpp
- Included missing rdescape_string.h