v1.0.0 - v1.0.13 14 Releases - Changes not logged on forum. However, they were pretty significant to speed, performance and compatibility. v1.1.0 [Core] Added playlist caching functionality. Can be turned on in Settings. Will cache playlists for x minutes per client. [Core] Removed Restream IP Blocking, turning an account off should suffice. [Core] Disabled CPU / Memory limit detection for now to improve compatibility with new system which will run in background. [Core] Cleaned up license code to remove legacy instructions. [Core] Updated Watch Folder to run series multithreaded once again, fixed some issues with matching series. [Core] Removed LLOD v1, replaced with LLOD v2. Should be faster than standard on-demand, compatibility is still dependent on stream. [Core] Stream probing is now done immediately after stream starts to give you bitrate and resolution info quicker. [Core] Movie symlink changed to allow /path/ without a server ID in the url. Will use server ID of selected server instead. [Core] Removed xui-id from playlists if not encrypted, deleted tvg-id for VOD. [Core] Updated Timeshift to use the same limiting techniques as VOD. [Core] Modified ministra URL's to fix some URL encoding issues with Cloudflare. [Core] Fixed API not allowing tar.gz files to be transfered, breaking auto-update. [Core] Fixed get_epg panel_api function, wasn't working previously breaking some panel_api dependent apps. [Core] Moved Probe API to have it's own dedicated file. Requires nginx configuration update. [Core] Updated on-demand stream code to ensure the PID of the stream is known after starting. Hopefully faster. [Core] Fixed an error where you get a blank file if a stream fails to start, now shows 404 error. [Core] Added more PID protection to live streaming, updated kill code to ensure it doesn't accidentally kill itself. Suicide is bad. [Admin] Changed the kill connection code to use the stream start PID instead of the active PID, just incase any changes happen while looking at the data resulting in not being able to kill a connection. [Admin] Removed error when killing a connection that has already closed naturally. [Admin] Fixed page not refreshing when deleting a stream / movie etc. [Admin] Fixed network speed bar capping out at 1000Mbps on Server View page. [Admin] Fixed stream thumbnail image not showing in Stream View page. [Admin] Removed Play button from On-Demand streams as admin api has no functionality to start them. [Admin] Modified Watch Folder Logs buttons to go to Stream View page. [Admin] Removed Attempts from Blocked User-Agents, reduces mysql calls (plus who cares). [Admin] Fixed kill all connections button on Streams. [Admin] Fixed error message when adding a watch folder that has the same path as on another server. [Admin] When a stream is looping, it will show down instead of counting to 10 and restarting. v1.1.1 [Core] Rewritten user info to use stream cache, will fix 500 errors or out of memory errors with lots of streams. [Core] Added individual stream cache to tmp to bypass mysql for player_api. [Core] Removed aggressive HLS / TS PID killing due to connection issues. [Core] Modified prebuffer for restreamers. They can now request prebuffer with ?prebuffer at the end of a stream. Faster on-demand with this but will only work if the source is using XUI. [Core] Modified EPG API handler to send requests in chunks to ease congestion. [Core] Fixed timeshift through proxies, was downloading 0 byte segment. [Core] Fixed playlist cache deletion. [Core] Fixed error in stream monitor relating to a feature of XUI One X. [Core] Modified stream monitor to wait the appropriate amount of time based on segment duration. [Core] Fixed Watch Folder category issue resulting in series being added to Movie categories. [Core] Increased on-demand wait time. [Core] Removed proxy buffering from proxy nginx config to hopefully reduce memory usage. [Admin] Changed admin player to use admin session to authenticate. [Admin] Fixed transcode profile deletion. [Admin] Streamlined watch folder categories to only those currently valid in TMDb. v1.2.0 - v1.2.1 [Core] Split streaming functions into Main and LB handlers to reduce memory consumption due to script size. [Core] Changed variable declaration on load balancers to only use exactly what's needed, will reduce memory consumption. [Core] Rewritten service file, should now start on boot. [Core] Modified load balancer and proxy installation to use the new service file. [Core] Disabled prebuffer between load balancers to keep them synchronised. Prebuffer is enabled for Admin player. [Core] Amended stream monitor duration prediction, was affecting segment duration on restart when it shouldn't have been. [Core] Added hosting server connection refusal option, will check ASN of incoming IP address against a database and disallow any non restreamers connecting on hosting server IP's. [Core] Backups now remove logs but keep database structure, this means restoring a database will clear logs but backups will be much smaller. [Core] MAG lines can no longer connect via direct user/pass, only encrypted tokens from portal.php will be accepted. More secure. [Core] Added fuzzy subnet matching to general IP restrictions such as Admin panel logout and Main <> LB connections. Can allow IP's to match /24 subnet mask instead of exact IP to ease restrictions for those with dynamic IP's. [Core] Upgrade.php is now status in the main directory. This will help identify any issues as well as fixing things in the database. Run it! [Core] Automatically sets redis password via a script, no need to edit it in settings anymore. [Core] Rewritten thumbnail authentication to work better. [Core] Added timeshift.php to admin streaming folder, isn't used in admin interface due to 60 second segments being incompatible with HLS player however can be useful to some. [Core] Changed encryption of credentials to better survive reinstalls and license changes. [Core] Fixed player_api issues with output formats, active connections, trial flag and category names. Fixes some apps. [Core] Fixed case sensitive lines causing issue with MAG devices. [Core] Fixed live connections refresh, should show CLOSED again when a connection is closed. [Core] Fixed default container for timeshift so if none is selected, TS plays. [Core] Fixed country not being recorded when streaming, breaking map. [Core] Fixed EPG API days, was defaulting to 7 despite settings. [Core] Upgraded authentication system to better utilise the MAG Disable SSL option. [Core] Removed redundant error codes such as token expiration when reconnecting to a stream. [Core] Added IP mismatch client error. [Core] Added NGINX rules to rewrite /streaming/ to /stream/ to allow some legacy apps to work. [Core] Moved tools to main directory and added service script. [Core] Redis cache executed on startup. [Admin] Added Now Playing to Lines, Mag Devices and Enigma Devices pages. [Admin] Added ASN type to IP Whois modal. [Admin] Changed dashboard server box slightly. [Admin] Added IP mismatch error to Client Logs. [Admin] Fixed error reporting in server installation page. [Admin] Removed HLS accelerator option, it's enabled by default now in the new system. [Admin] Added PHP error debug setting to Settings. Will disable gzip compression and show full errors when something goes wrong. [Reseller] Fixed editing lines as a reseller when a bouquet has an apostrophe in the name, breaking JavaScript. v1.2.2 [Core] Modified Ministra API for better compatibility. [Admin] Added Redis Settings page with information on redis status, cached streams and lines and ability to change cron runtime for performance on large servers. [Admin] Added version number to Servers page. [Admin] Added warning on dashboard if online load balancers are running a version different to the main server. v1.3.0 - v1.3.5 [Core] Removed Redis, replaced it with my own bespoke caching system. No external dependencies, just as fast, less prone to issues. [Core] Added a Cache On / Off switch so you can now decide whether or not you want to use Caching. All systems modified to account for the setting so they can react accordingly. [Core] Servers cron now checks to ensure Nginx is running before reporting OK to the main server. [Core] Modified TMDb Refresh handler to use Watch Folder's release processing and matching. Should work better and match with period in name or wrong year. [Core] Rewritten Created Channel system to encode items one at a time rather than all at once, will save your CPU from catching fire. [Core] Modified certbot handler to ensure it's using the right certificate if a new one is generate for a different domain, and only attempt to renew 7 days before expiration. [Core] Added default owner ID to MAG and Enigma devices. [Core] Modified capacity algorithm to better handle load balancing. [Core] Scanned 500,000 CIDR's to include ability to better detect whether an IP is from a hosting server or proxy / vpn service. Options included in Settings to auto-block. [Core] Added MySQL ping response to ensure it doesn't disconnect. [Core] Changed stats to add total used tmpfs space to ram usage to account for streams mounted in fstab. [Core] Ensured CPU or Memory usage cannot exceed 100% due to miscalculations. [Core] Revamped Ministra authentication system to better emulate how a MAG box would connect. An option has been added to settings to allow less secure connections. [Core] Ensured loopback streams don't include any transcoding, map or stream options. [Core] Modified Ministra portal series system to work even if an episode is missing, skipping that episode and playing the next. [Core] Changed registered country to actual country for ISP system. [Core] Streaming system now checks if the stream ID exists before even attempting user authentication, saving cycles and removing unnecessary errors. [Core] Fixed Enigma2 system not working for XtreamTV. New XUI TV platform will be coming soon for Enigma devices. [Core] Fixed thumbnail redirect to load balancers. [Core] Changed probe API to show correct 404 to match the rest of the system. [Core] Added thumbnails to Player API. [Core] Automatically disabled SSL for Enigma devices. [Core] Modified SSL configuration to exclude ssl_stapling as it seems to cause spontaneous segmentation faults in NGINX. [Core] When accessing XUI via a specific allowed domain (via server page), further redirects will use that domain too. [Core] Added no duration / filesize flag to RTMP to remove some unnecessary warnings. [Core] Refined flood limits to ensure less accidental bans. [Core] Increased mag timeout limit on VOD files to stop them from timing out due to mag's odd handling of video. [Core] Fixed download limiting on playlists. [Core] Player API modified to not get active connections by default in cache mode, this one function requires MySQL access so removing it will ensure no MySQL is required. Force it with &connections=1 parameter. [Core] Player API checked 1:1 against XC API to ensure responses are identical other than the parts XUI added. Every function checked. [Core] Added ignore invalid credentials setting for those with large services that want invalid credentials to exit immediately without invoking XUI classes / includes, less CPU when you're hit with thousands of invalid requests for example, however flood limit won't increment. [Core] Modified EPG handler to delete stored results from the future before importing API results so they're up to date. [Core] Fixed watch folder bouquets not working sometimes due to the temporary files being cleared by the tmp cron. [Core] Fixed delay time not being read when starting delayed streams. [Core] Introduced new signal handler that can update main server cache from load balancers when a stream restarts. [Core] Reworked categories and bouquet fallback for Watch Folder to hopefully fix the issue some users face. [Core] Watch Folder now triple checks sources against the database in various formats, original, urlencoded and json_encoded to ensure no duplicates are added. [Core] Added option to generate playlists using mysql information instead of cache. [Core] Changed load balancer installer to reset ports to standard after reinstall. [Core] Fixed usage of old geoip_country_code_by_name() function that doesn't exist anymore. [Core] Added default extension types to streaming incase one isn't specified. [Core] Added multithreading to cache engine significantly improving caching speed for large servers. [Core] Cache is disabled until the full cache is generated, allowing clients to connect. Player API and other service are offline until caching is finished. [Core] Removed reuseport as it may cause connections to not close properly. [Core] Added rogue PID killer, will check for running ffmpeg instances that shouldn't be and kill them off. Enable in settings. [Core] Added On-Demand instant off, allow on-demand streams to stop as soon as the last client disconnects. [Core] Added option to change how long the client will wait for an on-demand stream to start before aborting. [Core] Added an option to kill on-demand streams if they fail to start the first time rather than trying to reconnect. [Core] Added manual update to reinstall server page, allowing you to update a server yourself without reinstalling it fully. [Core] Heavily refined on-demand code for an overall better experience. Previously being killed if it's starting, but cron runs. [Core] Modified stream monitor to set PID correctly on restart. [Core] Startup script will regenerate php-fpm daemons if corrupted. [Core] Modified connection killing script to be more efficient. [Core] Ensured streams are stopped properly when servers are removed. [Core] Added an on-demand queue to ensure those connecting while the stream is being started do not interrupt the process. [Core] Refined playlist generator to use streaming instead of generating the entire m3u then offering it for download, no delay to start downloading, faster and less memory usage. [Core] Reconfigured flood limiting for admin pages to ensure load balancers don't get blocked when they are unknown to the main server (during upgrade etc). [Core] Refined token expiration on live streams. [Core] Modified live streaming to flush and monitor connection status during loop to ensure it closes properly when the client disconnects. [Core] Added Access-Control-Allow-Origin to playlists and EPG for web-based apps. [Core] Fixed int & float variances in API to allow apps like Purple Player who do not parse them properly. [Core] Changed tokens to ensure on-demand doesn't try to start before giving an expired token error. [Core] Added update sysctl.conf option to server installation / update. [Core] Removed restream detection on ports as the disallow streaming servers option replaces it. [Core] Added option to monitor PHP connection_status() for disconnects while streaming. [Core] Modified certbot handler to fix ssl.conf or the database SSL configuration if either is broken. [Core] Added option to verify restrictions on playlists and EPG to the IP, ISP, country etc. Turning it off will allow playlists to be downloaded from anywhere, but still restricts streaming. [Admin] Modified various pages for increased speed where you have many streams, Movies page in particular is much faster. [Admin] Added option to hide images / picons from the view pages, this will ensure quicker navigation as images slow down the experience. [Admin] Fixed stream auto-refresh messing with edit button location when navigating page. [Admin] Added warning triangle to streams view when a server is offline and uptime cannot be determined. [Admin] Added @ . _ and - to username and password field allowed input. [Admin] Disabled manual channel ordering where there are more than 50k streams, otherwise the page will crash your browser. [Admin] Added reinstall server button to server_view topbar. [Admin] Fixed servers being removed from streams when deleting a separate one. [Admin] Fixed stream group bug that groups everything into one line. [Admin] Fixed series titles in Bouquet edit page. [Admin] Modified image resize handler to exit quicker when URL's are broken, otherwise panel loading will get held up. [Admin] Fixed picons not importing with Import & Review. [Admin] Fixed Users column in Users page not showing actual Users, but the total combined number of lines. [Admin] Added Admin API to access codes in order to allow keys to be generated. API key generated from Edit Profile page. [Admin] Fixed error on dashboard for incompatible versions. [Admin] Added Process Monitor icon alongside Server View icon on dashboard. [Admin] Added EPG channel and listing count to EPGs page to see if it regenerated properly. [Admin] Disabled information auto-refresh when more than 50 lines are visible, has to be done or browser lags and breaks down. [Admin] Fixed ordering on Live Connections page, default order is time ASC to see new connections. [Admin] Fixed error in text when restarting services on a server. [Admin] Fixed some advanced permission issues with the header dropdown not showing for mass edit for example. [Admin] Added top 20 streams by ramdisk size to Process Monitor to show if a stream is causing high ram usage through ffmpeg. [Admin] Modified MAG and Enigma devices to show up even though the line is missing, will show as Damaged with red status. [Admin] Added creation completion percentage to created channels. [Admin] Added Proxy / VPN Detected and Hosting Server Detected statues to Client Logs. [Admin] Added warning banner to dashboard when the panel is due to expire. [Admin] When editing a stream, line, device or user, you'll be returned to where you were in the table. [Admin] Fixed symlink all movies and episodes buttons in Quick Tools. [Admin] Added legacy authentication for Ministra devices to Settings page. Will revert the 1.3.0 changes to Mag auth. [Admin] Modified access code generator to add explicit / to the end of short access codes for Ministra otherwise regex will cause issues with API calls. [Reseller] Added reset ISP button to lines, mags and enigma device pages. [Reseller] Fixed apostrophe breaking edit line page. [Reseller] Added @ . _ and - to username and password field allowed input. [Reseller] Moved some required functions into the cache handler so they don't have to be run on every page load, significant improvement in navigation speed for resellers. [Reseller] Fixed searching on lines, mags and enigmas. [Reseller] Fixed Trial bug which disables normal line generation. [Ministra] Added legacy URL option which will redirect /c to a proper access code for legacy devices. [Ministra] Refined legacy authentication option to work better. [Migration] Set output formats for packages if none are selected. [Migration] Fixed parent_id when set to 0 instead of null. [Migration] Modified bouquet migration to remove invalid stream ID's. [Migration] Modified streams migration to better handle VOD. [Reseller API] Added filtering to results returned by the API. More info soon. [Reseller API] Added various options to reseller API such as get_users, create_user, adjust_credits etc. More info soon. [Reseller API] Fixed Enigma create / edit functions. [Reseller API] Modified reseller API to fix some issues with not returning a valid status code. [Admin API] Added Admin API with 178 individual functions. Extensive documentation coming soon v1.3.6 [Core] Added Debug Mode which will give you an error code when something goes wrong trying to stream, get EPG, playlist etc. [Core] Improved on-demand speed by allowing content to be delivered as soon as it is available. [Core] Modified stream monitor logic, added a custom sleep handler between retries when a stream is down (in settings). [Core] Fixed priority backup when the stream source changes during start. I.e. youtu.be -> manifest.googlevideo.com. [Core] Modified stream start probing to ensure if the stream is down, it moves to the next. [Core] Watch folder will run single threaded in order if threads are set to 1 or less. [Core] Modified watch folder duplicate checker to force mysql check, should sort out duplicate VOD issue. [Core] Fixed watch folder bouquet mapping function. Fallback tested working. [Core] Modified created channels to remove any files that don't encode from the playlist. [Core] Refined SQL disconnects to ensure processes exit as soon as possible and don't sleep forever. [Core] Signals that can't be actioned are deleted after 24 hours. I.e those for servers that are offline for 1 day+. [Core] Added an additional check to ensure if a 500 or 502 error occurs, services are restarted. Part of the Restart PHP-FPM Services setting. [Core] Fixed proxy URL when generating a playlist. [Core] Added some new stream errors to the ignore section to reduce log size. [Core] Modified load balancer installation to check for file existence rather than for errors when extracting, should fix for some who have had issues. [Core] Removed memory limit on migration to handle large migrations better. [Core] Fixed series bouquet migration. [Core] Fixed member group migration. [Core] Modified adding new MAG & Enigma devices to ensure the device is definitely clear of device lock. [Core] Refined bruteforce detection as it could cause issues when you have a lot of lines. Resolved now. [Core] Added custom IP header for developers to use to force a forwarded IP. [Core] Modified caching system for settings etc to be more up to date. [Core] Modified Ministra portal detection to ensure NULL == BLANK when comparing device lock variables. [Core] Added extra error handling to player_api series information. [Admin] Modified total users on dashboard to work correctly. [Admin] Fixed restart counter. [Admin] Increased page speed load dramatically on various pages when there are many lines, users or streams in the database. Reduced filtering functionality due to this but not a detriment don't worry. [Admin] Changed users / owner dropdown to a search filter to decrease execution time. [Admin] Added cache warning when tmpfs is 90%+ full. [Admin] Changed /c redirect to symlink instead, will be created by root signals so will have to wait 1 minute when enabled / disabled. [Admin] Added delete VOD duplicates option to Quick Tools. Misleading name however, it may not be quick to delete thousands! [Admin] Fixed direct streams with no servers attached showing as No Servers on streams page. [Admin] Fixed adding episode with season 0. [Admin] Fixed username exists error when generating a line. [Admin] Inverted divergence percentage in live connections. 100% is good, 0% is bad. [Install] Restored sysctl.conf file to an earlier revision which seems more compatible with servers. For advanced sysctl configuration, we will discuss on the forum. v1.3.7 [Core] Rewritten stream monitor for better performance. Fixed previous issues where it would get stuck on starting. [Core] New Starting / Down handling that's more accurate than before, on-demand shows when first .ts is available, otherwise it shows live when .m3u8 is generated. [Core] Fixed watch folder bouquets, like, properly. [Core] Added maximum file limit to watch folder to only scan a set amount of items per folder per run. [Core] Installing ip_conntrack for servers that don't load it into the kernel. Part of sysctl configuration. [Core] Fixed HLS errors with on-demand streams. The new improved speed on-demand can't work with HLS so it waits longer for the m3u8 to become available. [Core] Added additional header options to settings table for advanced use. Not in settings menu. [Core] Removed stream extensions from ministra URL's. [Core] Fixed update load balancer button. For those with the issue, it'll take effect AFTER manual update. Issue seems to be because of cloudflare. [Admin] Added Server Status box to dashboard which shows offline servers, high cpu, memory, disk usage, input, output and active connections nearing limit too. [Admin] Modified thumbnail handler to detect file extension when it's missing from the URL. [Admin] Modified lines, mags and enigma page SQL queries for speed while maintaining some additional sorting options missing from v1.3.6. [Admin] Fixed active connections not displaying correctly in the lines page. [Admin] Fixed movies & episodes showing as encoded when PID is less than 0. [Admin] Increased mass delete speed. [Admin] Grouped movies and episodes on mass edit & mass delete. [Admin] Modified mag and enigma pages to show devices with no line. [Admin / Reseller API] Symlinked table.php to the API folders to hopefully bypass issue some are facing with loopback url. [Install] Fixed typo in update script. v1.3.8 [Core] Refined activity log cron to set a last activity ID for each line to remove need for grouped mysql query. [Core] Refined streams cron to not attempt to restart on-demand streams and kill on-demand streams that are down. [Core] Refined users cron to close old connections with stuck PID's. [Core] Fixed watch folder cron exiting before running threads. [Core] Fixed issue with player_api not displaying series information. [Admin] Episode.php no longer requires series ID in URL, helps with migrated episodes. [Admin] Fixed multiple GPU support in transcode profile. [Admin] Fixed current live connection showing wrong stream in lines page. [Admin] Refined table functions further to increase speed dramatically with large activity logs (1GB+). Page can load much faster now. [Reseller] Fixed issue with adding or saving lines. v1.3.9 [Core] Bypassed port 1024+ restriction so XUI can now run on port 80 and 443 if you desire it. LB's will have to be reinstalled / updated. [Core] Rewritten watch folder to remove some old bugs. Fixed issue with movies being added to series, wrong categories, bouquets and duplicates. [Core] Watch Folder now allows full UTF-8 spectrum, so movies with foreign names or characters will be scanned properly. [Core] Removed execution time limit from Watch Folder to stop it being restarted before being completed. [Core] Watch folder now generates a cache to match against when scanning files, to ensure it doesn't re-add a movie with a different source but same TMDb ID. [Core] Watch folder upgrade system allows missing files or those with lower bitrate to be replaced with a working or higher quality file. [Core] Removed MySQL double-check query from Watch Folder as it's no longer required and slows the whole process down. [Core] Rewritten MAG portal entirely. Authentication hasn't been touched, just the functions to grab and display data. [Core] Removed broken youtube script from ministra portal, will add a working one in the future. [Core] Removed various CPU consuming and seemingly unnecessary functions from MAG portal. [Core] Refined EPG caching in Ministra portal for better performance and more accurate results. [Core] Added HD image to movies, with resolution information pulled directly from admin panel. [Core] Rewritten various pages to ensure cache isn't used at all when caching is off, meaning it doesn't have to be scanned and saves memory. [Core] Fixed Enigma2 not working due to an incorrectly set flag. [Core] Delete VOD can only be done 100 at a time by signals processor, which should save high CPU usage when deleting many items. [Core] Fixed user groups not being migrated properly. [Core] Bouquets are scanned at each cache run to remove any ID's that no longer exist. [Core] Refined authentication to avoid slowdowns scanning cache for correct file. [Core] Symlinking a movie can now overwrite the previous symlink / encoded file. [Core] Added symlink to portal.php in www root directory when legacy is enabled. Some apps look for it in a specific place. [Core] Rewritten channel ordering for consistency, ensuring manual ordering works as expected too. [Admin] Added activity logs and stream errors logs to server status. Will flag if 1M+ logs exist. [Admin] Added Watch Folder kill button, will kill all watch threads across all active servers. [Admin] Added scroll to bottom button in the same location as scroll to top. [Admin] Separated Year on movies and series, displays on a separate line and isn't included in the title. [Admin] Added quick tool to remove year from title of all movies / series and add it to the newly created year column. [Admin] Added quick tool to grab rating from movie properties field and store it in the database (to work with new MAG rating sort). [Admin] Moved IP's per Line queries to cache handler to ensure it is instantly available at any time without delay. [Admin] Removed custom ffmpeg command from Import & Review page. [Admin] Fixed stream showing as down when first started. [Admin] Fixed MAG and Enigma cache not updating when adding / saving a device. [Admin] Modified footer copyright. v1.3.10 [Core] Modified Created Channels to allow loopback. [Core] Adjusted cache to recalculate specific channel order more accurately. [Core] Modified Watch Folder to make folder name fallback an option. [Admin] Refined auto-refresh on Streams page to work better with stream grouping off. Additional servers per stream will have a hyphen in the ID. [Admin] Refined streams page to correctly show down servers when streams are grouped. [Admin] Stream servers modal box now shows stream information per server. [Admin] Added Logs section to Settings page which allows you to disable certain logs, or adjust auto-deletion timer per log type. [Admin] Re-introduced the On-Demand multi select box so you're now able to set loopback servers on-demand. [Admin] Added on-demand to Created Channels. [Admin] Modified server status information box to only show relevant server information if a specific server is selected. [Admin] Clicking an offline server in the Server Tree box will move it to Online servers. v1.3.11 [Core] Added Plex Sync functions - BETA! [Core] Recompiled FFMPEG to be up to date (latest version) and include DASH MPD support. Experimental, includes libraries separately. [Core] Added Disallow 2nd IP connection code, was missing from legacy days. [Core] Modified signal handler to update stream and line cache in batches of 1000 instead of one at a time. [Core] Modified EPG Cron to split EPG files by bouquet to ensure lines only download what they have access to. [Core] Modified EPG Cron to exclude any old EPG entries from XML files if the stream doesn't have timeshift enabled. [Core] Modified SQL tables and table processing functions to ensure 'NULL', null and 0 are identified correctly. Will fix various issues. [Core] Changed default ports to 80 and 443 respectively. [Core] Modified certbot installation script to work when running on port 80. [Core] Watch Folder can now scan files for metadata and use that instead of filename for better matching. [Core] Added an additional directory check to watch folder. [Core] Changed FFMPEG command to use -f hls instead of -f segment. [Core] Added ignore keyframes option to ffmpeg command to split by exact time ignoring whether a keyframe is available. [Core] Added keep old segments setting to ffmpeg command so you can decide how many old segments are kept for each stream. Can change to reduce RAM usage. [Core] Fixed issues with encoding VOD. [Core] Modified stream information caching to work better when a stream fails. [Core] Watch Folder download image function now checks mimetype if the URL doesn't have an extension. [Core] Removed legacy instances of reuseport in admin API. [Admin] Further refined Streams page to load faster when you have lots of EPG entries. [Admin] Added option to change the Fails per Day element of Streams page to Streams per X seconds. Edit in settings page. [Admin] Added star rating to Movies and Series page. [Admin] Fixed search in Activity Logs page. [Admin] Fixed View Episodes button in Series page. [Admin] Added option to Servers page to disable Streams tmpfs and allow streams to be delivered from storage directly. Ensure you have NVMe storage before doing this. Will reduce RAM usage of course. [Admin] Added update all servers button to Servers page. [Admin] Added enable all / disable all folders to Watch Folders page. [Admin] Fixed order and page filtering on Series page being stored on reload. [Admin] Changed series filter dropdown to a search box to make episodes page load faster and modals not include series data. [Admin] Fixed HOSTING_DETECT and PROXY_DETECT logs being wrong way around. v1.3.12 [Core] Added bouquet_new option for channel sorting to sort how XUI believes channels should be sorted, lives alongside Legacy option and Manual ordering. [Core] Added TMDb check option to Watch Folder to disable checking of TMDb ID against the database and allow duplicates, it'll still check directory to avoid duplicates of the same file but will allow 2 versions of a movie to exist. [Core] Forced time to UTC for all API calls to match how EPG is generated. v1.3.13 [Core] Added option to check VOD still exists periodically. Disable if you have lots of VOD as it will slow things down otherwise. [Core] Changed EPG timezone UTC force to an optional setting. [Core] Added redirect expiration setting to adjust timeout when redirecting customs from main server to load balancer. [Core] Modified VOD cron to run in batches of 1,000 to ensure server doesn't run out of memory trying to generate symlinks. [Core] Fixed certbot removing certificates from other servers when generating for a new load balancer. [Core] Modified on-demand to exit after sleeping for X seconds when it fails to avoid spamming your source. [Core] Added break keyframes option to segment settings when using -f segment. [Core] Fixed block 2nd IP for restreamers. [Core] Removed windows carriage return from crontabs. [Core] Reset default ffmpeg format to segment instead of hls. You can change this back if you prefer to. [Ministra] Removed IonCube from ministra portal to speed up requests. [Ministra] Cached EPG requests without requiring SQL in most cases. [Ministra] VOD requests are now redirected straight to the load balancer to avoid some MAG players ignoring the 301 redirect from main and always trying to use the original URL, resulting in spamming the connection handler and eventually not working at all. [Ministra] Refined caching for more speed. [Ministra] Rewritten more functions to better emulate real ministra portal. [Ministra] Refined bruteforce and flood protection to avoid banning a quick succession of valid requests. [Admin] Removed error when trying to use certbot while running XUI on port 80. [Admin] Fixed on-demand servers not showing up when editing a stream. [Admin] Fixed adding watch folder. [Admin API] Added Adjust Credits API option. v1.3.14 [Core] Rewrote vital parts of the mysql connection handler. [Core] Added Redis to act as a optional connection handler to replace mysql. Enable via Cache page. [Core] Added fallback category, override bouquet and fallback bouquet to Plex Sync. [Core] Modified TV Archive to use UTC timing when saving. [Core] Added UTC timestamps to Player API EPG actions. Apps can use this to be accurate instead of relying on converting timezones. [Core] Added UTC timestamps to EPG XMLTV export. For apps to use. [Core] Added connection sync CLI script to synchronise Redis connections with the database. [Core] When a Created Channel fails, it will restart at the beginning of the current video. [Core] Fixed VTT subtitle error when using -f hls segment parser. [Admin] Fixed removing ports from server. [Tools] Updated tools functions. See bottom of post for details. v1.3.15 [Core] Added EPG offset to EPG cron, add / remove minutes from an EPG globally. [Core] Modified Redis connection handler to work better. No longer adds blank connections to live connections page. [Core] Modified stream monitor to reduce number of cached calls to bring 2nd source online quicker when main source goes down. Should be 3 x delay between stream failures (usually 10 seconds). [Core] Fixed Plex logs showing blank when a series doesn't have a category. [Core] Disabled read_native being automatically applied to HLS streams. [Core] Fixed MAG VOD not working with new connection handler. [Core] Modified flood detection to be more lenient with MAG's that hit the server really quickly. [Core] Added category_ids flag to player API. [Admin] Added Stream Providers, minimal functionality currently but much more to come! XUI / Legacy XC sources only. Scans every hour. [Admin] Added stream provider search modal to create stream page under Sources. [Admin] Added EPG offset to create stream page to adjust individual EPG on streams. [Admin] Added VOD Theft Detection logs. [Admin] Modified login page to remove recaptcha in rescue mode. [Admin] Fixed truncating watch logs. [Admin] Modified kill plex / watch folder functions to work better. [Ministra] Added beta XUI themed ministra portal, access it by creating a new access code for Ministra XUI or adding /new to the end of the old portal URL. Work in progress, more upgrades coming soon. [Admin API] Fixed table commands such as get_users not working. [Admin API] Added get_providers, get_provider, get_provider_streams, create_provider, edit_provider, delete_provider and reload_provider commands to API. [Reseller API] Fixed table commands such as get_users not working. v1.3.16 [Core] Rewritten Redis connection handler to avoid scanning keys and use grouped queries. Hopefully faster, but largely untested. [Core] Rewritten caching engine cron to use timestamps to detect changes and only update what has changed. [Core] Added Movie / Created Channel queuing system, will process items in order without eating all CPU. Fine tune concurrent encoding settings for best results. [Core] Integrated an experimental request limit system to aid in recovery from high requests killing CPU / MySQL. [Core] Integrated a reverse VOD check that will re-enable VOD if the file becomes available. [Core] Modified Redis switch to restart signal processor on enable / disable. [Core] Added option to Plex to ignore TMDb checks against the database, allows duplicates of TMDb but will still check the unique ID against existing Plex items. [Core] Fixed episodes duplicating in Plex when scan missing items is turned on. [Core] Fixed EPG issues from v1.3.15. [Core] Modified 2nd IP disconnect to only affect lines with 1 connection. [Core] Added Private IP to internal checks so they'll be allowed to communicate with eachother without setting off flood protection or security checks. [Core] Removed memory limit from Plex and Watch folder to ensure large Plex servers scan correctly. [Core] Fixed created channels sometimes removing previously processed files when adding new ones. [Core] Fixed series not playing in legacy MAG portal, plus added short EPG information for list view and fixed disappearing EPG (changes ported over from new MAG portal). [Core] Fixed short EPG on MAG portal. [Core] Fixed Ministra streaming decryption functions. [Core] Reverted legacy MAG language file to fix some UI elements that were stretched. [Admin] Fixed images not showing in pages such as Add Stream, Episode etc. [Admin] Added Use Private IP option to proxy installation page. [Core] Fixed stream providers for legacy sources. [Core] Modified cache engine to efficiently delete streams and line caches that are no longer present in the database. [Core] Fixed queue system hanging when stream ID's no longer exist or have no server allocated. [Admin] Modified request limit on access codes to fix thumbnail handler returning 503 errors. v1.3.17 [Player] Introduced XUI Web Player v1.0.0 - Will run in trial mode until 13th May. Available to buy from billing panel. [Admin] Modified session handling to allow login to Admin, Reseller and Web Player at the same time without the session being destroyed and the others logged out. [Admin] Modified Delete Duplicates to delete episodes from streams_episodes table too. [Core] Modified cache handler to ensure no invalid ID's are included in mysql query, which would otherwise cause a SQL error and the cache to stop running. [Core] Modified EPG handler to do the same as above. [Core] Fixed time offset in EPG handler when setting it per stream. [Core] Fixed some SQL errors detected through panel logs. [Core] Fixed episode upgrade in Plex Sync. [Core] Added more stringent bouquet checks to ensure invalid ID's aren't left in there. [Core] Private IP will only be used in loopback URL's when both servers have a Private IP set. [Core] Removed token expiration from VOD and Timeshift to stop errors people are having with player's trying to reuse URL's with expired tokens. Won't affect security, it's fine. [Core] Changed MIMETYPE of M3U playlist to fix Emby issues. [Migration] Blocked migration from XUI to XUI which would break your database. [Core] Streams and VOD are now checked for web player compatibility, you can make the web player only show compatible items by editing settings. [Core] Fixed NGINX's odd decision to use absolute redirects when no trailing slash, which breaks Proxy stealth. You'll have to reinstall / reupdate load balancers if the issue persists to ensure the nginx configuration updates. [Admin] Added check compatibility quick tool which will scan all current content and mark them as compatible or not for the webplayer. [Admin] Added Web Player settings. [Admin] Added more options for log automatic deletion time period. [Ministra] Modified ministra image parsing to ensure images are loaded over HTTP when Disable SSL is turned on. [Player] Refined Web Player. Various changes to previous release, including fixes for iOS, JWPlayer utilisation for VOD, fixes to some UI elements, automatic redirection for SSL -> Non SSL and vice versa based on server settings, timeshift fixes when viewing live, tooltip overlay for small EPG items and some other changes. [Admin] Integrated JWPlayer into the admin dashboard. [Admin] Timeshift is now playable in the admin panel via the Archive page or View Stream page. [Core] Cleaned up codebase in general. Fixed some errors with missing variables etc. [Migrate] Modified series map to fix bouquet issues when migrating series. v1.4.0 [Core] Rewritten Users cron to be significantly faster on load balancers, as well as adding the ability to clear desynchronised connections to clean up database while Redis is enabled. [Core] Added PHP 7.2 alongside PHP 7.4 to allow service owners to switch between them. PHP 7.4 is ~20% faster and well suited for load balancers, PHP 7.2 seems to handle high throughput easier and is better suited for main servers. By default PHP 7.2 will be used on both Main and Load Balancers, you can switch at any time however. [Core] Added FFMPEG v4.3 as an option. You can change the version used in Settings. [Core] Modified transcode profile to allow scaling plus watermark at the same time, previous complex filter didn't seem to work properly. [Core] Modified cache engine to delete old username / password combinations at runtime. [Core] Modified live stream handler to disallow connections until cache is fully generated. [Core] Switch out CURL on stream provider cron as it seems to not work with some legacy stream providers. [Core] Set Read Native to True by default on HLS streams. You can change this behaviour in settings. [Core] Added an option to keep the request protocol when redirecting. For example: If a user connects via HTTP they won't be upgraded to HTTPS even if the server supports it. [Core] Subtitles are scanned and extracted from movies by default now. [Core] Added a new on-demand instant off handler which runs continuously in the background to check on-demand streams. This will allow instant off to work while Redis handler is in use. [Core] On startup, ports are checked against the database and changes are made to the system if the values aren't synchronised. [Core] Fixed total services not changing in daemons due to permissions error on some systems. [Core] Added /subtitle/ URL to extract a subtitle from a stream in SRT or WebVTT format. [Core] Added subtitles to player_api movie information. [Core] Fixed RTMP not allowing clients or load balancers to pull streams that were pushed to it. [Core] Player API now shows all streams for all categories to fix some mobile players only showing streams in a single category. [Core] Fixed "ports" tool breaking when additional http / https ports are added. [Core] Moved set_services and set_port functions to root signals cron to ensure they're executed even if the server can't be reached by API calls. [Admin] Added Export as CSV option to various pages on the dropdown box. [Admin] Fixed incorrect display of live connections on server view page. [Admin] Added stream rank page. [Admin] Clicking the number of active connections on the stream provider page will now search your own Streams and show which streams are currently using that provider. [Admin] JWPlayer is no longer used for MKV files as it doesn't support them. [Admin] Added rescan VOD option to Quick Tools. [Admin] Fixed provider scanning when clicking refresh on a single provider. [Admin] Added ability to overwrite network interface in Server page. By default XUI uses all network interfaces except bond and lo. [Admin] Tweaked mobile interface to display better. Some features are disabled in mobile view. [Reseller] Added Forced Server and Forced Country options to packages. [Player] Rewritten web player to work with Xtream Codes and StreamCreed, as well as XUI on an external server. The player is still built in to the XUI package, you can download the external web player separately as it will have it's own thread. [Player] Web player now supports SRT / WebVTT subtitles. Use the rescan VOD quick tool to allow XUI to extract the subtitles from existing VOD. [Player] Similar movies are now scanned with a cron to speed up page load performance. [Ministra] Fixed short EPG disappearing for clients. [Ministra] Timezone is checked against correct database to ensure an invalid timezone doesn't cause crashes. [Core] Recompiled PHP 7.2 with libjpeg embedded. [Core] Changed out FFPROBE to match FFMPEG versions 4.0 and 4.3. [Core] PHP version is correctly restored at startup if symlink to PHP binary is overwritten at any point. [Webplayer] Removed HTTPS redirect as it interferes with other forms of redirects. [Core] Fixed permissions on bin folder that results in load balancer installation not working. [Core] Fixed webplayer cron missing functions. [Core] Fixed cache not working when Case Sensitive Lines is off. [Core] Regen Cache button in Cache page now forces regen even if cache changes is on. v1.4.1 [Core] Introduced a new FFMPEG binary compiled by myself, using the latest version 4.4 with all previous modules included. Only -f hls is supported, -f segment was removed in v4.4. [Core] Updated NGINX from v1.19.0 to v1.21.0, protection against CVE-2021-23017 and better connection handling. [Core] Benchmarked each client-facing PHP script to maximise performance, significant improvements to performance vs previous versions, and far better under heavy load when streams are offline or your service is starting up. [Core] Reduced execution time on creating a connection to a stream from around 20ms to 10ms, a saving passed on to clients in zap time. [Core] Modified connection limit behaviour to close related connections when the connection limit is reached. For example, if a line has two connections, one is being watched on an Android App and has been online a while, if another connection is then used on a TV and that user changes channel, it would by default disconnect the oldest connection (Android App). The new behaviour checks for a connection using the same IP and User-Agent first to close that one instead, this means channel hopping on the TV would not affect the XCIPTV app despite that one having the oldest connection. Long explanation, but this should be far better for user experience. [Core] Compiled igbinary serialize extension to replace the built in PHP versions, seems to improve caching speed overall. [Core] Fingerprint now works when the stream has a codec other than H264, it will detect the stream codec and match it when transcoding the segment. [Core] Added ability in Settings to change the limit of Disallow 2nd IP function. Previously it would only work if the line had 1 connection, you can now set a max amount of connections before the limit is disabled. [Core] Modified Enigma2 stream order to match the rest of the API's. [Core] Added subnet fuzzy matching to 2nd IP check, assuming you've enabled the option in Settings. [Core] Added ability to change default sort for Movies and TV shows to newest first, assuming you have channel ordering set to Bouquet and not Legacy or Manual. [Core] Added video for when a line is denied with the Disallow 2nd IP function, will show on screen to let the user know why. [Core] Modified Watch Folder and Plex Sync bouquet mapping to be more accurate when more than one bouquet is used. [Core] Modified Certbot cron to work better when multiple certificates have been generated for a single domain. Will always pick the certificate with the latest expiration date. [Core] Updated youtube-dl binary to fix Twitch playback support. [Core] Updated GeoIP2 and GeoISP databases to latest versions. [Admin] Added Mass Stream Review to Mass Edit section, allows you to review multiple streams and modify title, categories, bouquets and EPG with smart EPG matching where possible. [Admin] Modified single Category in Mass Edit to allow multiple entries. [Admin] Added SET / ADD / DEL options to Categories and Bouquets to allow for adding or deleting from the existing categories and bouquets for each stream. [Admin] Added header statistics visible on every page, updates every second. Can be disabled in Settings. [Admin] Modified EPG guessing api to extract language from stream title to better match against EPG API. Uses 2 digit code at the end or the beginning of stream name. E.g. "UK: Stream Name" or "Stream Name | UK". [Admin] Regenerate Cache button now forces a full regen regardless of Update Changes setting. [Admin] Fixed EPG API language not displaying in stream review. [Admin] Added Remove Subtitles to Plex and Watch Folder. [Admin] Added ability to change default User-Agent, Proxy, Cookie, Headers and On-Demand Probesize in Settings page. [Admin] Increased domain_name length in SQL to ensure it doesn't get cut off if you have a lot of domains added. [Ministra] Rewritten the authentication system entirely, using PHP sessions where possible or resorting to Authorization header if not supported. Smarter caching, better ability to auth, more reliable overall in theory. Removed legacy authentication and blank authentication as these are no longer supported due to lack of security. [Ministra] Merged legacy and new portal into a single portal, you can now set the theme to XUI.one to use the new theme or Legacy etc to use the old one. [Ministra] Added option to keep stream or vod extension in the URL, some old devices may need this to determine filetype. [Ministra] Further changes to MAG authentication for better legacy support. [Core] Changes to TMDb refresh to fix SQL error. [Admin] Swapped upload and download speed in header. [Ministra] Fixed theme and JS files not being added to the update zip. [Core] Modified TMDb Refresh to fix some missing data. [Core] Fixed Disallow 2nd IP activating for unlimited lines. [Admin] Added encrypted line decoder to Stream Tools page. [Admin] Added Remove NULL Lines to Quick Tools page. [Admin] Hidden Export as CSV if permissions for database control aren't set for the admin. v1.4.2 [Core] Added Adaptive Link function which allows you to chain together multiple streams so when HLS is delivered to a client, they are faced with a multi-bitrate, multi-resolution playlist. [Core] Recompiled FFMPEG v4.4 and v4.3 allowing both to use -f segment and have a more complete list of libraries. v4.4 is now the recommended default version to use. [Core] Rewritten on-demand instant-off to work with both Redis and MySQL. [Core] Added a setting to change the default storing of Stream Errors from WARNINGs to ERRORs only. Use this if you're getting millions of meaningless stream errors. [Core] Increased max check time on Stream Monitor for streams that take longer to start. [Core] Increased zap speed of on-demand streams. [Core] Modified IP block behaviour to store a temporary file allowing the IP to be blocked before iptables has the opportunity to run in the per-minute cron. [Core] Modified playlist caching to take into account the key filters. [Core] Fixed the -nofix_dts error when using FFMPEG v4.3 or v4.4 with Generate Timestamps turned off. [Core] Refined flood protection on live streams. [Admin] Added Mass Import Series / Episodes. Click Add Series, then Import, select an M3U or Folder and it will be forced through Watch Folder functions for processing. [Admin] Added Title Sync function which allows you to synchronise a stream title with a provider stream of your choice. The Cron for providers updates every hour, however you can change this in the crontab mysql table if faster updates are required. [Admin] Modified dashboard to show Online servers first. [Admin] Added send MAG Event to Mass Edit MAG Devices. [Admin] Modified Download Line function to allow multiple output types, i.e. select Movies and Series and just output them. [Admin] Fixed expiration date in Stream Providers page. [Admin] Fixed duplicates appearing in Stream Rank page. [Ministra] Added an option for the client to swap between the Modern and Legacy theme. Select the default option for new devices in the Settings page. [Ministra] Added a setting that allows you to display a message to clients in the Information page of My Account. Can be modified in the Settings page. [Ministra] Fixed series ordering by date added. [Admin API] Using -1 as the server ID for start_stream, stop_stream, start_station, stop_station, start_channel, stop_channel, start_episode, stop_episode, start_movie and stop_movie will send the request to all servers. [Webplayer] Fixed subtitles for MKV videos. [Webplayer] Modified EPG caching functions to work better. [Webplayer] Added .php extensions to URL's for legacy support. [Webplayer] Automatic redirect from HTTPS to HTTP if server doesn't support SSL. [Core] Added Restart on FPS change to streams. Edit the stream individually for the threshold, and modify the settings in Streaming Settings for control over how the FPS is determined and how long to wait for a stream to settle before activating. [Core] Recompiled FFMPEG v4.3 and v4.4 with custom code to make progress information work as expected. FFMPEG opens a constant unbroken stream to the progress info page by default which means it only updates when a stream closes. Now it reopens the connection every 10 seconds to send more information. [Admin] Added binary update option to Servers page that will instruct load balancers to update their PHP, NGINX, FFMPEG, YouTube-dl, GeoIP and GeoISP binaries if updates are available. v1.4.3 RC [Core] Removed binaries from update packages, version number change will instruct the server to update binaries from XUI.one website directly. Only changed binaries will be updated, and binaries in use will be force removed and updated. Update file is now significantly smaller. [Core] Increased speed of On-Demand Instant-Off. [Core] Modified CLI handler to kill cache, redis or instant-off when they have been disabled in settings. Will also start them if they're enabled but not running. [Admin] Added Modern Theme to Mass Edit Mags, switch it off to swap to Legacy for selected devices. [Admin] Added Show Category Duplicates option to Settings, switching the default back to showing the stream only once in the API. Switch this on to show streams in multiple categories for apps that don't support category_id as an array. [Admin] Added FPS Restart and Threshold to Mass Edit Streams. [Ministra] Reduced size of MAG portal by combining language files for each theme. [Ministra] Session will be destroyed and cache removed if authentication fails, allowing next auth attempt to grab data from MySQL instead of using the already existing cache.