=== Neutrope Protected Audio Player ===
Contributors: neutropeinc
Tags: audio, mp3, audio player, download protection, protected
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Protected audio player that hides direct audio file URLs and serves audio through short-lived, signed playback URLs.

== Description ==

Neutrope Protected Audio Player lets you publish MP3 audio on your WordPress site without exposing the real file URL in your page source. Files are stored in a protected uploads folder that denies direct access, and the player streams audio through a short-lived, signed playback URL instead of a permanent, guessable link.

**This is not DRM.** It makes casual downloading harder, but it cannot provide DRM or perfect copy protection. If audio can be played in a browser, it can potentially be captured by determined users. The goal is simply to stop ordinary visitors from finding and saving the MP3 with a right-click or a quick look at the page source.

= What it does =

* Adds a "Protected Audio" item type where you upload an MP3 and get a shortcode.
* Stores uploads in `wp-content/uploads/neutrope-protected-audio-player/`, protected by an `.htaccess` file.
* Serves audio through a signed URL such as `/npap-stream/123/.../.../` that expires after 10 minutes.
* Outputs an `<audio>` player with `controlslist="nodownload"` so the browser's download button is hidden.
* Keeps an anonymous play count per item.

== What this plugin can and cannot do ==

This is not DRM.
This plugin makes casual downloading harder, but cannot provide DRM or perfect copy protection.
If users can play audio in a browser, advanced users may still capture it.
No external services.
No tracking.
No cookies.
No personal data stored by default.
Apache/LiteSpeed uses .htaccess protection.
Nginx may require additional server configuration.

= Privacy =

* No external services, CDNs, scripts or APIs are used. Everything runs on your own server.
* No tracking.
* No cookies are set.
* No personal data is stored by default. The plugin records only an aggregate play count per item. It never stores IP addresses and never sets cookies.

= Server requirements =

* On Apache and LiteSpeed, direct access to the protected folder is blocked automatically with the `.htaccess` file the plugin creates.
* On Nginx, `.htaccess` files are ignored. You will need to add server configuration to deny direct access to the protected uploads folder. The admin screen shows a reminder when it detects Nginx.
* On some Nginx or reverse proxy configurations, byte-range responses may be buffered or altered by the server. Audio playback can still work, but seeking behavior may depend on server configuration.
* Pretty permalinks are recommended. When they are disabled, the plugin falls back to a query-string playback URL.

== Installation ==

1. Upload the `neutrope-protected-audio-player` folder to the `/wp-content/plugins/` directory, or install the plugin through the Plugins screen in WordPress.
2. Activate the plugin through the "Plugins" screen in WordPress. Activation creates the protected uploads folder.
3. Open the new "Protected Audio" menu, add an item, upload an MP3, and publish it.
4. Copy the shortcode shown on the edit screen, for example `[npap_audio id="123"]`, and paste it into any post or page.

== Frequently Asked Questions ==

= Does this stop people from downloading my audio? =

No tool can fully prevent that. This plugin removes the easy ways to grab a file (visible URLs, the browser download button, predictable links) so casual users cannot simply save it. Anyone able to play the audio could still capture it with the right tools.

= Is this DRM? =

No. It is an obfuscation and access-control layer, not digital rights management.

= Which file types are supported? =

MP3 only in this version. Uploads are checked by extension and by their real MIME type (`audio/mpeg`).

= I use Nginx. Is the folder still protected? =

Nginx ignores `.htaccess`, so you must add a server rule that denies direct access to `wp-content/uploads/neutrope-protected-audio-player/`. Until you do, the folder may be reachable directly.

= Does the plugin delete my files when I uninstall it? =

No. By default nothing is deleted on uninstall. Data is only removed when the `protected_audio_player_delete_data` option is set to a truthy value, which you can enable under Settings &rarr; Neutrope Protected Audio Player.

== Screenshots ==

1. Manage protected audio files from the WordPress admin.
2. Upload an MP3 file and copy the shortcode from the audio edit screen.
3. Display a simple audio player on the front end with a shortcode.
4. Choose whether plugin data should be removed on uninstall.
5. Clear notes explain that this is not DRM and that server configuration may affect protection.

== Changelog ==

= 0.1.2 =
* Polished the admin audio edit screen, settings page, and front-end player styling.
* Improved the shortcode display (with a copy button) and explanatory notices without changing playback behavior.
* Added Shortcode, File and Plays columns to the Protected Audio list screen.

= 0.1.1 =
* Added clearly documented `phpcs:ignore` annotations for the byte-range streaming file handle (fopen/fread/fclose).
* Removed `suppress_filters` from the uninstall cleanup query.
* Removed the explicit `load_plugin_textdomain()` call; WordPress loads the translations automatically.
* Hardened the streaming response headers and added `X-Accel-Buffering: no` to reduce reverse-proxy buffering.
* Documented reverse-proxy/Nginx byte-range behavior in the readme and the admin screen.
* Updated "Tested up to".

= 0.1.0 =
* Initial release.
* Protected Audio post type with MP3 upload and per-item shortcode.
* Protected uploads folder with `.htaccess` and `index.html`.
* Short-lived, HMAC-signed streaming endpoint with HTTP Range support.
* Anonymous play counter.

== Upgrade Notice ==

= 0.1.2 =
Visual polish only for the admin and front-end UI. No changes to stored data or playback behavior.

= 0.1.1 =
Quality and coding-standards update for WordPress.org review. No changes to stored data or playback behavior.

= 0.1.0 =
Initial release.
