On 10/7/2020 4:27 PM, Simon Matter wrote: >>> On 10/6/20 8:50 AM, Matt Darfeuille wrote: >>>> On 10/6/2020 5:11 PM, Tom Eastep wrote: >>>>> On 10/6/20 7:33 AM, Simon Matter wrote: >>>>>>> On Tue, Oct 06, 2020 at 03:59:06PM +0200, Simon Matter wrote: >>>>>>>>>> Compilation will only happen when '/etc/shorewall' is modified. >>>>>>>>>> So if I'm not mistaking, updating the firewall will not trigger a >>>>>>>>>> recompilation. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Recompilation should occur if ANY file in ANY directory in >>>>>>>> $CONFIG_PATH >>>>>>>>> changes. Given that installing a new version updates >>>>>>>>> /usr/share/shorewall/, 'reload' after an update should force >>>>>>>>> re-compilation. >>>>>>>>> >>>>>>>>> I reproduced this problem using the tarball installers. >>>>>>>>> >>>>>>>>> Simon -- How did you upgrade? >>>>>>>> >>>>>>>> Dear Tom and all, >>>>>>>> >>>>>>>> For a test I've downgraded to shorewall-5.2.6.1 and saw the same >>>>>>>> behavior. >>>>>>> >>>>>>> Tom is asking *how* you upgraded/downgraded. >>>>>> >>>>>> As I said with my own RPMs, they are mentioned on >>>>>> https://shorewall.org/download.htm >>>>>> >>>>> >>>>> After 'reload' didn't recompile, I found that the mtime of >>>>> /var/lib/shorewall/firewall had been mysteriously updated to a time >>>>> after the upgrade. Have others noticed the same behavior? >>>>> >>>> >>>> I just installed SW 5.2.8 (core, shorewall, init) followed by >>>> 'shorewall >>>> update' and 'shorewall reload'. >>>> The below is after multiple 'shorewall update followed by reload'. >>>> >>>> /var/lib/shorewall# ls -l firewall && shorewall reload && ls -l >>>> firewall >>>> -rwx------ 1 root root 76618 Oct 6 17:33 firewall >>>> Reloading Shorewall.... >>>> Initializing... >>>> Processing /etc/shorewall/init ... >>>> [snip] >>>> Setting up Route Filtering... >>>> Setting up Martian Logging... >>>> Preparing iptables-restore input... >>>> Running /sbin/iptables-restore --wait 60... >>>> IPv4 Forwarding Enabled >>>> done. >>>> -rwx------ 1 root root 76618 Oct 6 17:33 firewall >>>> >>>> >>>> Do you want other test? >>>> >>> >>> What was the current time? Or, what was the output of 'ls -l >>> /usr/share/shorewall/? >> >> OK, found it in my case, it's coming from here: >> >> elif [ -z "$AUTOMAKE" ]; then >> if [ -n "$(${find} ${dir} -maxdepth 1 -type f -newer $1 -print -quit)" >> ]; then >> return 1; >> fi >> >> I had 5.2.7 installed and made some configuration changes, say in October. >> Then I upgraded to 5.2.8 with the RPM, which was built in September. >> >> So, the content in /usr/share/shorewall/ has mtimes in September, but my >> /var/lib/shorewall/firewall was created in October. >> >> Result: the 'find' above doesn't show anything newer than my >> /var/lib/shorewall/firewall and nothing is recompiled on reload. >> >> This affects my own RPMs but I guess the same is true for others too. >> >> I'm thinking about what the best fix is here. Maybe simply add a %post >> install script which does: >> >> mv -f /var/lib/shorewall[6]/firewall /var/lib/shorewall[6]/firewall.old >> >> Maybe we can discuss this here so all packages can use the same approach. > > I've added the following to the %post sections: > > if [[ -f %{_var}/lib/%{name}/firewall ]]; then > %{__mv} -f %{_var}/lib/%{name}/firewall > %{_var}/lib/%{name}/firewall.rpmold > /dev/null 2>&1 || : > fi > > and > > if [[ -f %{_var}/lib/%{name}6/firewall ]]; then > %{__mv} -f %{_var}/lib/%{name}6/firewall > %{_var}/lib/%{name}6firewall.rpmold > /dev/null 2>&1 || : > fi > > It works well now and always recompiles after an upgrade. > > It also adds some additional security because one can easily diff the > resulting configuration after an upgrade. >
I'll commit that, and send it through this list for review. -- Matt Darfeuille <m...@shorewall.org> Community: https://sourceforge.net/p/shorewall/mailman/message/37107049/ SPC: https://sourceforge.net/p/shorewall/mailman/message/36596609/ Homepage: https://shorewall.org _______________________________________________ Shorewall-users mailing list Shorewall-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/shorewall-users