What is the MRS?
Pre-requisites
Downloading the MRS
How Releases Work
Important Notes Before Upgrading
Available Releases
Other downloads
Downloading the MRS from a Mirror
Installation Notes
Upgrading the MRS manually
Bug reports
Contact Me
Changelog
The Music Request System is a simple software set allowing users to request songs out of a live DJ's playlist. This makes it easier for the user to know whether or not their request can be played. It also allows a DJ to easily keep track of their music library.
The MRS came about in 2015 when I decided that it would be really nice to have an easy way to make sure requestees would have their songs heard. It was released to the public in 2017.
The MRS can run on any variety of system software. Note that the primary testing environment is Linux, so you will likely have the best results with that. Windows, Mac OS and others, IIS, Apache, Nginx and more, are all supported. If you find they don't work, let me know.
The MRS requires PHP to run, along with the following extra packages:
How you install these depends upon your operating environment. The packages listed are for Linux.
Releases in the 2.x and earlier families use text files to store all information. As such, write access is necessary. See the installation notes.
Any pre-requisites discovered that are not listed here should be brought to my attention.
Please be sure to read the pre-requisite section and installation notes. Report bugs if they are encountered. Also look at the changelog.
The MRS has moved to Github. As such, installation and upgrade packages are no longer hosted here. This information page will continue to be updated. Upgrades from within the MRS will also still go through this website. Nothing is changing, other than the hosting arrangement.
Releases on Github are fairly similar to the previous arrangement, with the exception of the fact that an explicit "install pack" is not provided. Github creates a source code package, in both ZIP and TAR formats, for releases, in addition to any other "binaries" uploaded. Since the install packages are really nothing more than these source code packages, it makes no sense to provide them.
There is a catch: Github inserts the "README.md" file into the source packages. This file isn't required by the MRS. It can be safely deleted, and it can be safely ignored.
Github does not create hashes for source code packages. These aren't required, however they are provided just in case you are paranoid and feel like checking.
Upgrade directions do not apply to MRS releases 2.4 and newer. These newer releases use a different upgrade subsystem that works automatically.
MRS releases, beginning with MRS 2.0b5.77, will automatically download the install packages without intervention, but it is limited to downloading only the latest release. If you wish to upgrade to something other than the latest release (this is discouraged but allowed), you will need to download both the upgrade package and the MD5 checksum file.
Install packs cannot be used to run an upgrade.
Both files must be placed in the "upgrade" subdirectory. The package must be named "latest.zip" and the MD5 text file "latest-md5.txt", or it will not work.
"Downgrades" may be possible but are not explicitly supported. Attempt at your own risk.
If you are running a release prior to MRS 2.0b4.68, you must upgrade manually.
Even if you use a non-destructive upgrade option, back up everything first. You may regret not doing so later!
Most recent releases
2.3.140 (stable release, download this if you are unsure)
2.4.18 (beta release)
Older releases
2.3.137 (stable release)
2.4.11 (beta release)
"Official" alternative system backgrounds
Functional external API files
Modernized upgrade scripts and their required backend files WARNING: You CANNOT use these scripts to upgrade to ANY MRS release prior to 2.2b3.101!
Using 000webhost? Notice a large number of error messages on the homepage? Download this to fix the problem.
Please note that not all mirrors are fully up to date. Want to be listed here? Let me know. Likewise, let me know if you are listed and have recently updated or changed your mirror in any way.
Greyghost: last updated April 29th, 2019, hosting versions 2.2.181 and 2.3b1.107.
Installation is generally straight-forward, with one minor hitch: write-access is required for everything
That is, whatever user the web server is running as (the default with Apache under Linux, as of this writing, is "www-data") MUST be able to write and read to all storage locations of the MRS!
Since this is a potential security vulnerability, if you are unwilling to allow this, you cannot use the MRS software.
Under Linux, the simple solution is to make www-data the owner using the chown command. To make this process quick, use the R switch. For information about what it is doing, use the v switch.
Other changes to permissions may be successful, but you are on your own. Likewise, on Windows, you are on your own. If you do manage to figure it out, let me know and I can post the instructions below.
Upon successful installation, log in to the system using the default password of "admin". The very first thing you should do is change the password. All configuration options should be straightforward. Set them as you wish.
Download the upgrade package from Github. While possible to use the install (source) package, it does not contain everything that you need in order to upgrade fully. Make sure the MRS is not accepting requests before performing an upgrade, so as to not surprise a would-be requester.
Extract the package somewhere. In it will be a bunch of .php files, and a few text files, as well as a background GIF and a favicon. If you wish to use the background and favicon, move these into the "backend" subdirectory.
All text files other than "version.txt", "config.txt" and "addtlconfig.txt" can be removed as they are not required. "version.txt" should be moved into the "backend" subdirectory.
Before moving any PHP files or changing configurations, check for a "preprocess.php" file. If one exists, open it and perform the actions specified in the "preprocessor_run()" function. Alternatively, you can write a PHP script that invokes this function call. It will return true on success, and a status code on failure. Delete the file after completion as it is not needed for anything else.
All single part PHP files, that is those without a dash ('-') in the filename (except for "preprocess.php" and "postprocess.php", if either is present), should be moved to the root of the MRS. For other PHP files, before the dash is the folder, after is the filename. Place these files in the specified folder and rename them, being sure to overwrite any that exist already.
If the above is confusing, here is an example: "index.php" needs to be moved to the root of the MRS, while "upgrade-index.php" needs to become "upgrade/index.php", or "index.php" in the "upgrade" subdirectory.
Open up "config.txt". In it are configuration lines of the format "filename|config". If a file on that list doesn't exist, create it with the specified config as the contents. Overwrite those that you want to overwrite, if any.
Open up "addtlconfig.txt". For all files not present in both this list and the one in "config.txt", remove the file as it is no longer required.
Check for a "postprocess.php" file. If it exists, open it and perform the actions specified in the "postprocessor_run()" function, as with "preprocess.php". The actions performed are likely required in order for the MRS to function properly! Delete it upon completion.
Anything left over after all the processes can be deleted now.
Any bugs or problems encountered should be reported. Please be sure to make a backup before performing an upgrade.
Bug reports should be sent to mrsbugreports@gmail.com to distinguish them from regular contact requests and other emails. Be sure to include the word "bug" in the subject, or the email will never be seen.
Bug reports may also be submitted via the Stereo Dust Particles forum. Note an account on the forum is required to post.
Contact with me was formerly provided through an external form, but this option has been removed due to excessive spam. Your best bet is to contact me directly via YouTube (link is in the copyright notice below), or through email at lowendradiorequests@gmail.com.
Spam will not be responded to or looked at. Be sure to provide a meaningful and descriptive title when sending me messages! Bug reports should contain enough information that I can easily replicate the problem.
Feedback is also welcome, provided it is constructive.
Version 2.0
Revision 66 (Stable): First public release.
Revision 68 (Beta b4): Now contains automated upgrade scripts. Adds preliminary support for information after editing song lists. Added support for system overflow protection. Fixed bug: system ignores "disable requests for users with active requests" setting and denies access anyways.
Revision 69 (Beta b4): Security fixes. More detailed error messages in the event of a problem. Return codes on pages that redirect somewhere else to provide details about what just happened. Removal of "fallback" email sending functionality; the system now sends errors if there is no supplied email address. Ability to send emails is now a configurable option. List editing pages now display the song list format, and also remove problematic characters.
Revision 70 (Stable): Fixed bug: "open requests" setting does not result in open requests being available. Added a bypass to the automatic download of "latest-md5.txt" during an upgrade (allowing for upgrades to previous versions than the latest).
Revision 71 (Beta b5): Fixed bug: "undefined index: '<index name>'" errors when PHP error reporting is changed to E_ALL. Fixed bug: index page reports "over 1 songs" even with an empty song list.
Revision 77 (Beta b5): Reorganized upgrade check page. Upgrade scripts download the latest MRS upgrade package automatically now if the package is absent. Introduced ability to check only for stable builds. Various security enhancements.
Revision 77 (Stable): Added "directive" support to upgrade scripts (backported from 2.1b1.0)
Version 2.1
Revision 0 (Beta b1): Added "directive" support to upgrade scripts (fixes "unable to open securitycheck.php" bug). Fixed bug: warning related to fclose on songlist>baselist copy page. Reorganized administrative page. Added a method to distinguish between played, queued and unseen requests (PARTIAL IMPLEMENTATION).
Revision 1 (Beta b1): Added in a "system unique ID" feature. Added "light mode" functionality. Attempted bug fixes with regards to "open request" logic on the posting pages. Made it clear that the number of requests listed on the index page is the number of requests made all-time on the system.
Revision 6 (Beta b1): Implemented system UID into authentication mechanism. Links to queue, decline and mark requests now appear based on what the current status of the request is. Implemented a feature to hide posts after a specified period of time (disabling post marking, deletion by creator and reporting). Fixed bug: if backend file for light mode is not present, the system UID value is set to "no". Added administration session timeout functionality. A few changes were made to the upgrade process. "Dry run" functionality added to upgrade process.
Revision 7 (Stable): Added support for storing session details in a location other than the default. Fixed bug: certain characters stripped from requests.
Revision 12 (Stable): Added ability to import a text file and parse it into song list format. Modified about page text to be more clear. Fixed bug: "unidentified index" on post2 page. Removed system email functionality. Removed contact page. Modified request report functionality to store information locally instead of emailing it. Added automatic refreshing to the home page. Added ability to display a custom message on the home page.
Version 2.2
Revision 2 (Beta b1): Ground-up-rewrite of the home page, admin validation, administration and post marking pages. Home page now sorts requests: unseen at the top, followed by queued and then declined/played. Admin console features a "killswitch" for the automatic redirect on completion, and the ability to reset all settings to the defaults. Requestees can now submit comments along with the request.
Revision 8 (Beta b1): Ground-up-rewrite of song selection and request creation pages. Enhanced display of songs on selection page. Added support for external interfaces. Added preliminary support for custom fields in song database.
Revision 28 (Stable): FIXED BUG: privilege escalation possible on admin.php page. FIXED BUG: link to post a song not on song list disabled when it shouldn't be. Added support for filenames added to the music list. Added system API calls.
Revision 101 (Beta b3): All pages now have at least some functionality centralized. Modernized the upgrader. Added the license page. Major bug fixes to the internal API. Bundles password_compat for users running PHP versions < 5.5.
Revision 124 (Beta b3): Added custom error handler. Added ability to control what error messages are displayed. Added IP address to post page. FIXED BUG: no favicon on index page. FIXED BUG: undefined variable on login page. FIXED BUG: undefined variables on admin page. FIXED BUG: undefined variable on logout page. FIXED BUG: output on post2 when posting (undefined variables and debugging information). FIXED BUG: submission of blank name allowed when not anonymous. Removed extra unnecessary code from all pages. Reworded about page. FIXED BUG: erroneous setting submissions caused settings to be blanked. Added ability to disable post blanking on main page. Requests sorted newest to oldest, per group.
Revision 132 (Stable): Rewrote banning pages. Banning pages now report success or failure. Added filename support to backend that was previously missing. FIXED BUG: invalid number of parameters supplied to write_request on queue, decline and played pages. FIXED BUG: invalid parameters supplied to fwrite, blank files output on archive page. FIXED BUG: search feature doesn't work when multiple words are specified.
Revision 134 (Stable): FIXED BUG: when system closed and "enabled request viewing when locked" is off, requests do not show up for the administrator. FIXED BUG: external API calls to queue, decline and mark as played do not function.
Revision 140 (Stable): Rewrote numerous pages to use centralized functions. FIXED BUG: API calls still not working in certain circumstances. FIXED BUG: unable to queue, decline or mark requests directly from the MRS.
Revision 148 (Beta b3): Rewrote the ban subsystem. Added capability to log error messages to a file.
Revision 164 (Beta b4): Rewrote login, logout, index, password change, logging information, request edit, about pages. Login and logout no longer automatically redirect to homepage. Rewrote view pages for reports, logs, and rules. Rewrote edit pages for rules, song list edit, base list edit, and song list upload. Rewrote session information purge page. FIXED BUG: in logging mode, the timezone isn't set on the view pages for logs and reports. FIXED BUG: security issues on song list edit, song list upload, base list edit. FIXED BUG: Log file opened unnecessarily on archive page.
Revision 180 (Stable): All pages rewritten to use centralized functions. Added referrer to login links.
Revision 181 (Stable): FIXED BUG: removed second import of functions page from how to search page. Added error levels to error handler.
Version 2.3
Revision 36 (Beta b1): Marked several functions for future removal, and replaced most if not all calls to them with calls to other appropriate or new functions. Implemented new song list mechanism. Added strict searching capablity. Rewrote the administration console. Removed all base list functionality. Rewrote the list editing and list importing pages. Added a separate page for straight additions to song list.
Revision 39 (Beta b1): Removed deprecated song list functions. Upgrade scripts now remove extra core files. FIXED BUG: "0 songs" appears on homepage even with songs in the list.
Revision 42 (Beta b1): FIXED BUG: post dates show up as Unix timestamps. Updated request display on index page. Updated request storage format. Added ability to change date/time format strings. Added ability to update stored date on requests.
Revision 50 (Beta b1): Added support for custom list fields. Added request count field. FIXED BUG: after a song is requested (and before the expiry time), it is still available for request. Removed RSS feed.
Revision 66 (Beta b1): Modification to song search page to allow for slight speed improvements. Added search option for "popular" requests. Fixed API calls to use modernized functions. Removed old request and song list functions. Added a modified error handler for the API pages. Added support for external song lists. Re-added RSS feed functionality. Fixed list import (both main and external) pages for when logging is enabled. Added ability to hide songs that cannot be requested. Added ability to hide Christmas Music option from music search page.
Revision 107 (Beta b1): Made all return codes for the API calls consistent. Added controls for enabling/disabling API calls. Added verification for most if not all necessary configuration files. FIXED BUG: "allowing multiple active requests" setting has backwards effect. Implemented automatic banning rules. Cleaned up a few settings-related issues. Added ability to supply a "reason" for a ban. Fixed bugs in the ban list viewing pages. Reorganized the about page. Added user-entered copyright section to about page. SECURITY PATCH: logging in can no longer be attempted by banned users. Added login tracking functionality. Added a "request database" to try and speed up song searching. FIXED BUG: song selection page wouldn't notify a user they had an unplayed request. FIXED BUG: "view songs" is still visible on the homepage if light mode is enabled but viewing the list on close is also enabled. Added request password lockout. Cleaned up default setting list. Cleaned up and repaired breakage in the API. Fixed error in logging that triggered an undefined variable notice. Removed delete command for logged-out users. Changed cancel link to point back to admin console instead of the index page on several administration pages. FIXED BUG: extra artist and title field show up with system default values on posting page. Removed deprecated automation settings page.
Revision 120 (Stable): Added database of request post dates. Updated display table on song selection page. FIXED BUG: songs requested 0 times are no longer considered "popular". FIXED BUG: redirect reference goes missing on login page if an invalid password is entered. Added automatic system open/close rule subsystem. FIXED BUG: if a filename is part of the MRS format, it is not properly added to the request list. FIXED BUG: "undefined variable" messages on posting page if logging is enabled. Added request database consistency checking and repair tools. Added ability to choose upgrade "mirrors".
Revision 125 (Stable): FIXED BUG: error in ban checking on report page resulted in user always being "banned". Small rewrite of report page. Updated copyright information and fixed typo on about page. Minor changes to function core and error handlers. FIXED BUG: user "lockout" check only executed when request selected from a list, not when a custom request is submitted. FIXED BUG: typo on post page resulted in a custom request being "required" inappropriately. FIXED BUG: user allowed one extra request. FIXED BUG: full upgrade fails to overwrite both background image and favicon.
Revision 129 (Stable): FIXED BUG: error while checking date database resulted in request counts always being 0. FIXED BUG: issue on posting page resulted in custom requests ending up empty and being rejected. Daily request limit expanded from IP address to username, IP, or both. CURL connection timeout parameter added and set to 10 seconds on upgrade pages.
Revision 137 (Stable): FIXED BUG: Comment wasn't defined in some instances in mark as played API call. FIXED BUG: Variables containing ban information weren't changed from arrays on the selection page when the ban subsystem was rewritten. Added version API call Moved function for getting version information from about page to function core. FIXED BUG: multiple instances of function deprecation caused by PHP 8.x changes. Redbat.ca mirror removed. Added separate non-optional deprecation notice logging and viewing facilities. Updated about page. Updated JQuery to 3.7.0.
Revision 140 (Stable): SECURITY FIX: notice about admin password being default no longer appears to signed out users. Updated copyright year. Added count of songs returned by search queries on song selection page.
Version 2.4
Revision 7 (Beta): Upgraded TableSorter to 2.13.1. Upgraded JQuery to 3.6.0. Introduced concept of "build code", removed version tags and concept of "beta" releases. Changed upgrade subsystem. Reformatted about page. Deprecated use of PHP versions lower than 5.5.0.
Revision 8 (Beta): Removed stable/beta update configuration from system settings.
Revision 9 (*): Began removal of pages that are no longer used. Added future support for "dark" mode. Renamed song search and request post pages.
Revision 10 (*): Rewrote API pages to clean up unnecessary code duplication. Moved version info function from about page to functions page. FIXED BUG: upgrade prepare script would prepare previously prepared updates.
Revision 11 (Beta): FIXED BUG: erroneous reference on index page referring to old song search page name.
Revision 12 (*): Replaced deprecated variable filters with appropriate functions. Updated copyright year. Default background officially changed.
Revision 13 (*): Removed obsolete upgrade server mirrors.
Revision 14 (*): SECURITY FIX: system messages (e.g. the "default password" message) on the admin page now display after the user's admin rights are checked. FIXED BUG: installer crashes when attempting to perform a full upgrade and configuration changes need to be made.
Revision 15 (*): Added dedicated "deprecated" error message logging facilities.
Revision 16 (*): Added count of matches found by search/query on song selection page.
Revision 17 (*): FIXED BUG: preparing multiple upgrades that contained the same code file resulted in multiple attempted replacements of such.
Revision 18 (Beta): Includes revisions 12-17. Added a search option for "recently added" on song selection page.
*: This denotes a non-release, published as an update but not as a full version iteration.