v1.3.3 - (April 2, 2024) - PATCH: Fixed a small issue that was present in BACKUPMON and also affected VPNMON-R3 where it was creating success/failure emails in the /tmp/var/tmp folder and was not deleting these tmp email files if you opted not to receive success or failure emails. Thanks to the keen eye of @ExtremeFiretop watching his precious disk space slowly but surely getting eaten up with unsent emails that weren't deleting, this has now been patched! Also, huge props to him for testing out the fix in record time! - PATCH: Made some small eye-candy improvements to incorporate a little splash-screen effect when running "vpnmon-r3 -setup", or when hitting the (e)xit key... just to keep the OG logo around a little longer. ;) v1.3.1 - (March 16, 2024) - MINOR: AMTM Email Notification capabilities have been added thanks to @Martinski's shared email functions library that he has made available. Once AMTM email (AMTM->em) has been configured, you can activate this feature in VPNMON-R3. You have the ability to distinguish between receiving either success, failures or both types of emails as it pertains to your WAN/VPN connectivity. An operations menu item has also been added to quickly enable/disable this feature when needed. - PATCH: Minor logic correction to a function that determined max server ping would every so often run into issues with the info it got back from the ping command, and would display invalid operand errors. v1.2.3 - (March 8, 2024) - PATCH: Change to the logic for switching back and forth between the number of available slots. Will now recreate the vr3timers.txt and vr3clients.txt, as they were not being refreshed when different selections were being made. General fixes and optimizations made as being found and identified. - PATCH: Added verbiage in the Unbound integration configuration menu item to give a visual warning that as of Mar 1 2024, the NordVPN service no longer works with the Unbound integration due to some apparent blocking on their end. Hopefully at some point in the future, we can remove this and carry on with Nord. v1.2.1 - (February 23, 2024) - MINOR: Added a new configuration menu item that allows you to enable/disable the ability to import your VPN Server IP lists directly into the Skynet Firewall for whitelisting purposes. This is another feature coming over from VPNMON-R2, as there have been instances in the past where the Skynet blacklist would prevent a connection to a perfectly legitimate VPN Server that belongs to your VPN provider. This function will fire off each time you execute a VPN Server List automation under option (U), and will also run each time a "vpnmon-r3 -reset" command is executed. Please note: Skynet must already have been installed (using AMTM) and working/functional. - PATCH: The update logic now pulls the vpnmon-r3.sh directly from github starting from versions after 1.2.1, instead of the vpnmon-r3-X.Y.Z.sh file based on the version number from the version.txt file. v1.1.5 - (February 7, 2024) - PATCH: Changed the versioning logic to align with the general accepted way of versioning, using the notation: major.minor.patch ... finally, right? After seeing @thelonelycoder changing his ways, I figured it was probably time for me as well. All my scripts moving forward will go this route. Change log wording is now changed to conform to the major/minor/patch standards. So previously, FIXED now conforms to PATCH, ADDED conforms to MINOR, and MAJOR stays the same! - PATCH: Found a situation where if someone was still using older VPN Slot allocations (like "1 2 3") and didn't update to the newer "1 2" or "1 2 3 4 5" slot allocations, then it would prevent the operations menu from showing, since it is geared towards either one of these two options. VPNMON now has some logic added that will force a "1 2 3" configuration to "1 2", and will require you to select which slots need to be monitored. Thanks to @TITAN for finding this one and working with me on the diagnosis! :) - PATCH: Minor spacing and verbiage changes to make the experience more consistent. v1.12 - (February 2, 2024) - ADDED: Another feature request coming over from R2 -- Reset VPN if ping across tunnel is > than X ms. Configurable from the Operations Menu, using hotkey "P", you are able to change this value. Example Usage: If this setting is set to 100ms, and the ping value for this tunnel exceeds 100ms, then R3 will reset the connection in favor of a new connection with a lower ping value. Settling on a server with a lower ping should help with speed, latency and performance issues. Thanks to @TITAN for the request! - FIXED: Just realized my mistake that certain older models (like the AC68U) actually only have a max of 2 VPN client slots, not 3. Fixed the configs and menus to allow for up to 2 VPN client slots for this particular older router limitation. v1.11 - (January 27, 2024) - ADDED: New commandline switch "-now" to be used in conjunction with "-screen" that will allow you to bypass the screen timer and instructions, and will launch VPNMON-R3 directly into the screen environment without having to wait. (Usage example: vpnmon-r3 -screen -now) Thanks @TITAN for the request. - FIXED: Changed a few legacy items so it conforms with AMTM standards. ;) v1.10 - (January 23, 2024) - MAJOR: VPNMON-R2 sunset notification banner is added if found that R2 is still installed. I have made the difficult decision to sunset R2, and drive adoption of R3 so that I may focus on developing it further. When pressing the (X) key, users will be driven to an R2 uninstall menu, allowing you to uninstall all R2 files and components directly from R3. Similarly, in R2, an update banner will be prominently displayed at all times, driving people to the update menu, to upgrade to R3 directly from within R2. In the near future, new installs of R2 will no longer be possible, and will be driven to install R3. v1.04b6 - (January 21, 2024) - ADDED: Under the Run Automations operations menu item, the ability to import your custom VPN Slot lists into Skynet is now a possibility! In the past, certain blocklists would also prevent you from connecting to certain VPN servers because they were actively being blocked. From this menu, pressing s1-s5 will import the contents directly to Skynet, giving you peace of mind that your VPN server endpoints are whitelisted. - FIXED: The timing on connecting, stopping and settling have been dropped slightly. Also, shaved more time by not spending 10 seconds forcing a service_stop on a connection that has already stopped. Likewise, checking for VPN slots in an error (-1) state, and force stopping these, then forcing an NVRAM state reset on them to change them back to 0 (disconnected). v1.04b5 - (January 19, 2024) - FIXED: WAN checks were still happening even when disabled. Thanks to @salvo! Fixed! v1.04b4 - (January 19, 2024) - ADDED: More checks while determining vpn health, and adding more logic around failed connections, including an indicator showing the number of attempts a certain vpn slot has undergone if it comes back failing the ping and curl tests. - ADDED: Also, timing delays to allow for tunnels to connect, disconnect and settle have been extended. No, your router hasn't slowed down. I'm just making sure processes aren't stepping over each other to give you the most stable monitoring experience. - ADDED: When a VPN connection fails, an intermediate 5 second counter will appear allowing you to (P}ause execution. This allows you to enter the Operations Menu, should you need to make any adjustments. I found that with successive failures, it was nearly impossible to get to the Operations menu in order to exclude a certain slot that was causing issues. - FIXED: When the -reset switch is thrown, VPNMON-R3 will immediately drop to the waiting screen. Thanks to @salvo for noticing! v1.04b2 - (January 13, 2024) - MAJOR: In one of the recent storms that brough down my WAN connection, I quickly found out that VPNMON-R3 does not like that, and caused the script to hang for some unknown reason. Thinking it might be a good idea to break out the WAN monitoring functionality from R2, this has now been incorporated as a selectable option. When enabled, VPNMON-R3 will test the WAN on each cycle, and if determined that the WAN is down, will kill your VPN connections, and fall back into a graceful loop where it periodically tests the WAN connection in order to start the VPN connection(s) back up. As with R2, this will look at both WAN0 and WAN1, and should be able to correctly display the necessary information for those running those fancy Dual-WAN configurations. This has been tested on a single WAN0 connection where I completely powered off the modem, simulating a WAN outage, and bringing back up to ensure R3 was able to recover correctly. - ADDED: Few more log entries for various reset conditions were added. - FIXED: Minor corrections to wording or other on-screen layouts to make the UI more pleasing to the eye. - FIXED: Made some revisions to how variables were used in order to cut down on some Unknown Operand errors that were initially captured by @Ripshod. Thank you! v1.03 - (January 6, 2024) - ADDED: When VPNMON-R3 is executing a scheduled -RESET, the main UI will enter a 'pause' state, giving some feedback that a vpn reset is currently underway, and will retry to resume normal operations every 15 secs. Thanks to @salvo for the suggestion! - ADDED: More checks and stability added to ensuring values returning from the ping functions are valid, and hoping to catch any errors before returning the occasional 'unexpected token' error as found by @salvo. - FIXED: Noticed that the timer loop was actually taking 2x as long to complete... I knew seconds couldn't take that long, and wasn't going crazy afterall. Fixed. v1.01 - (December 24, 2023) - FINAL RELEASE: Merry Christmas! ;) v0.7b - ADDED: Now including the total time a VPN connection has remained connected. This info is displayed on the main UI next to the exit city name. Time is tracked when the VPN drops and reconnects, and will only be displayed for VPN Client Slots that are actively being monitored. - MINOR: Changed the Unbound stat on the main UI in an effort to shorten. This has now been changed from a Red/Yellow/Green "- [SYNC]", to a Red/Yellow/Green "-X[UB]" "-?[UB]" and "->[UB]" giving an indication of the Unbound [UB] sync state. - FIXED: There was an issue with the logic behind the function that allowed you to pick how many seconds you would like the timer to run for. Apparently it's not so easy when asking for alpha and numeric input up to 3 characters. Patched it up. Good to go! Thanks to @pchtz for catching this one! :) v0.6b - ADDED: New menu item under the setup/configuration menu: "Refresh Custom Server Lists on -RESET Switch", with thanks to @salvo for the suggestion. This option will refresh any custom VPN Client Slot Server Lists you have defined, and will refresh these when running a VPNMON-R3 with a -reset command. This is typically done through a CRON job, but can be run manually at any time as well depending on your needs. - FIXED: Various cleanup and inconsistencies as well as spacing here & there... v0.5b - ADDED: Created a new row under the Operations Menu to allow you to quickly stop + unmonitor a VPN Slot. This was added to give you some more control over a VPN Client Slot that might be giving you trouble, or don't want to have to go into the router UI to forcefully stop a VPN Client Slot. Performing this action will also remove it from the monitored list, so it doesn't immediately try to reconnect it. - ADDED: Created a thread with tutorials and examples on how to craft custom CURL+JQ statements in order to query specific city and/or country IP address list from various VPN providers using their APIs. This is thread is available here: https://www.snbforums.com/threads/vpnmon-r3-custom-server-list-generation-tutorials-and-examples.88022/ - FIXED: Added some validation on obtaining the public VPN IP address in case NVRAM could not produce it, and icanhazip.com comes back with an error message. Thanks to @TITAN for bringing this up. - FIXED: General cleanup of inconsistencies that kept bugging me. ;) v0.4b - ADDED: Relented and included a single PING indicator across the VPN tunnel to at least show some stats of what's going on with the connection. Formatted to handle 4 digits and 3 decimals, we should be good for the worse of worsest situations. On the fence of supporting a > amount ping reset condition. - FIXED: Eliminated many script restarts after exiting various menus and allows you to return to the main UI without interference to the VPN city and Unbound Sync lookups. - FIXED: Based on the timezone code length, the main UI bar now fixes its size so it stays a uniform length. v0.3b - ADDED: Brought over the "Unbound-over-VPN" functionality that was originally introduced in VPNMON-R2. Out of all the integrations that were present in VPNMON-R2, I felt that this was one of the most important ones, and one that I wanted to be completely functional in VPNMON-R3 if I am going to be using this full-time. Unbound by default allows you to become your own DNS resolver, however, "Unbound-over-VPN" goes a step further and encrypts your unencrypted DNS resolver traffic all the way through to your public VPN IP address, after which it traverses unencrypted to the DNS Root Servers. This excellent feature prevents your ISP or other monitoring services from snooping in on your otherwise unencrypted DNS resolver traffic that normally happens when running Unbound. Since you are your own encrypted DNS resolver, no ISPs, or other DNS services (like Quad9, Cloudfare or Google, etc) will be able to snoop on your traffic. The only entity here that could possibly snoop on this traffic would be your VPN provider, or any nefarious services monitoring inbound/outbound VPN traffic at the VPN provider level. PLEASE NOTE: "Unbound-over-VPN" is only able to bind to 1 VPN Client Slot. If you are running other VPN connections, this will continue to work, however it is not guaranteed that the other VPN connections will be able to take advantage of Unbound. Definitely something that needs to be tested. Also, if other VPN connections are reset, the VPN Client Slot tied to "Unbound-over-VPN" will go out of sync, and will attempt to reset itself. This connection will always need to be the last one to reset itself, else it will continue to stay out-of-sync. - FIXED: Apparently I overlooked making sure JQuery was being properly referenced as required during the setup process. Thanks to @kuki68ster for noticing this! The script will now catch this and guide you through the Entware component install process. - FIXED: In certain situations, the autostart functionality would not save a setting back to the vpnmon-r3.cfg file, and show that it was enabled. If you have this issue, simply re-save your choice, and it will make the correct changes to the .cfg file now. v0.2b - ADDED: Included "VPN Client Slot Server List Automation" functionality which allows you to free-form enter in various carefully crafted CURL statements which are designed to point to your VPN Provider's API functionality in order to export out a single list of VPN Server IPs/Hostnames to be imported into your VPN Client Slot Server List files assigned to each VPN slot. These lists are used by VPNMON-R3 to randomly reconnect to one of the hosts in the list. A separate thread will be created on SNBForums.com that will give specific examples on how to format the CURL statements in order to pull VPN Server IPs for specific countries, or cities. Please note that not all VPN providers make this easy, or have an API to pull information from. Examples for NordVPN, Surfshark, AirVPN, WeVPN and PerfectPrivacy will be provided. This item is available under the Quick Access Operations Menu using the (U) key. - MINOR: A few visual fixes here and there to standardize look & feel across screens v0.1b - Initial Release!