]> ###2026.08.24 - Fix: the reconcile cron job never actually ran. crond's /etc/cron.d loader skips any filename containing a "." (so "docker.autonet" was silently ignored), and the job line also wrongly included a "root" user column that this crond doesn't expect in per-user crontabs. Cron file renamed to "dockerautonet" with the user column dropped; existing installs are migrated automatically. - Fix: toggling a container's connection in the Containers tab only wrote the label into the container's template, requiring a manual recreate before anything actually connected. Saving a toggle now also runs the live `docker network connect`/`disconnect` immediately, matching pangolin-autonet-watcher's old no-restart behavior. The template is still updated so a future recreate stays in sync. - Fix: the Save Changes button on the Containers tab has never actually worked, on any install. webGUI's global CSRF guard rejects every POST request without a matching token; a plain form submit gets one injected automatically, but this button's JSON-body ajax call never supplied one, so it was silently killed with an empty 200 response before the plugin's own code ever ran. Both this and the Test Now request now send the page's csrf_token as an X-CSRF-TOKEN header, which webGUI accepts as an alternative to the form field. - Fix: turning a container OFF looked like it worked (live disconnect fires immediately) but didn't stick - Docker won't let a label be removed from a running container short of a recreate, so the next reconcile pass saw the still-true baked-in label and silently reconnected it within a minute. Saving now recreates any container that was just turned off automatically, no manual "Recreate now" click required. Turning a container ON still never needs a recreate - the live connect and the reconciler already agree. - Fix: saving the Advanced tab silently wiped every configured mapping (and vice versa, saving Mappings reset Advanced back to defaults). The two tabs are separate <form> elements posting to the same handler; a field simply absent from one tab's POST looked identical to "user deleted this" and the whole config got rebuilt from scratch every save. Each form now marks which section it is, and only that section is updated - the other stays exactly as saved. - Change: default for Auto-disconnect (when a label is removed or set to false) is now off, matching the safer choice for a brand-new install - it was shipping on by default, meaning any container losing its label unexpectedly would get silently disconnected. ###2026.08.20 - Initial release. Combines docker.labelInjector's label-editing UI and pangolin-autonet-watcher's reconciliation logic into one plugin - no separate watcher container to run or maintain. https://raw.github.com/&github;/main/archive/&name;-&version;.txz &md5; mkdir -p /boot/config/plugins/&name; rm -f $(ls /boot/config/plugins/&name;/&name;*.txz | grep -v '&version;') echo "&version;"> /boot/config/plugins/&name;/version # Migrate off the old, silently-broken cron install: crond's /etc/cron.d # loader skips filenames with a "." (so this never ran), and the line # format included a "root" column that per-user crontabs don't take. rm -f /etc/cron.d/&name; sed -i "\#/etc/cron.d/&name;#d" /boot/config/go 2>/dev/null CRON_CMD="/usr/bin/php &plugdir;/server/service/RunReconcile.php > /dev/null 2>&1" echo "* * * * * $CRON_CMD" > /etc/cron.d/&cronname; GO_LINE="echo '* * * * * $CRON_CMD' > /etc/cron.d/&cronname;" grep -qF "$GO_LINE" /boot/config/go 2>/dev/null || echo "$GO_LINE" >> /boot/config/go /etc/rc.d/rc.crond restart >/dev/null 2>&1 echo "" echo "----------------------------------------------------" echo " &name; has been installed." echo " Version: &version;" echo " Configure label -> network mappings under Settings -> Docker Autonet." echo "----------------------------------------------------" echo "" removepkg &name;-&version; rm -f /etc/cron.d/&name; /etc/cron.d/&cronname; sed -i "\#/etc/cron.d/&name;#d;\#/etc/cron.d/&cronname;#d" /boot/config/go 2>/dev/null /etc/rc.d/rc.crond restart >/dev/null 2>&1 rm -rf &plugdir; rm -rf /boot/config/plugins/&name;