最近工作中发现openwrt存在一个回滚机制,通过luci页面对可能导致失联的配置,如更改LAN口ip、修改WIFI名称和密码等,在设置后会弹出一个30秒倒计时的窗口,需要等待30秒浏览器自动刷新后弹出一个确认框,点击后才会使新配置生效,如在等待期间关闭浏览器窗口或者刷新了,系统会认为你引入了一个错误配置,会自动回滚旧配置,从而导致想更改的新配置失效!
github中关于该机制的解释:
https://github.com/openwrt/luci/pull/1769
1、
回滚机制的流程
:页面修改配置后,点击应用,设备将新配置应用到设备,同时跳出一个30秒的轮询倒计时窗口,使用者需要连接修改后的wifi,并回到配置页面来自动确认,如果超时没有完成确认,会触发回滚机制,将配置还原,如果上面的配置页面没有关闭,会出现一个二次确认的窗口,需点击“APPLY ANYWAY”,新配置会被再次应用。
倒计时等待确认窗口:
回滚后的二次确认窗口:
2、
回滚机制的作用
:应该是防止使用者错误修改,或者修改了自己不了解的配置,导致连接失联无法正常使用。
3、
怎样才能不触发回滚
?
修改配置后,点击“SAVE & APPLY”按键,在页面弹出的“Waiting for configuration to be applied… 30s”显示的30秒轮询倒计时内,当发现wifi断开后(说明配置已生效),需要手动重新连接wifi,并回到刚才的配置应用等待页面(如果修改的是LAN地址,浏览器中需要输入修改后的Lan地址来打开页面),会显示配置被应用,这样就不会触发回滚.
4、
回滚机制的处理方法
(1)保留30秒或者缩短等待时间,让用户自己做二次确认.
(2)增加等待时间,比如120秒,或者更长,用户发现wifi断开后,重新连接wifi,并打开配置页面自动确认.
通过修改配置文件/etc/config/luci:
config internal ‘apply’
option rollback ‘
120
‘
option holdoff ‘4’
option timeout ‘5’
option display ‘1.5’
(3)去除强制回滚.
修改页面 feeds/luci/modules/luci-base/luasrc/view/footer.htm (系统中路径:/usr/lib/lua/luci/view/footer.htm)
– uci_apply(true);
+ uci_apply(false);