UCI. Сценарий Lua. Как редактировать правило брандмауэра
У меня есть правила перенаправления для одного хоста в моей конфигурации, но иногда мне нужно изменить IP-адрес.
firewall.@redirect[0]=redirect
firewall.@redirect[0].name='zd_ssh'
firewall.@redirect[0].src='wan'
firewall.@redirect[0].proto='tcp'
firewall.@redirect[0].src_dport='8422'
firewall.@redirect[0].dest='lan'
firewall.@redirect[0].dest_port='22'
firewall.@redirect[0].target='DNAT'
firewall.@redirect[0].dest_ip='192.168.1.200'
firewall.@redirect[1]=redirect
firewall.@redirect[1].name='zd_https'
firewall.@redirect[1].src='wan'
firewall.@redirect[1].proto='tcp'
firewall.@redirect[1].src_dport='8443'
firewall.@redirect[1].dest='lan'
firewall.@redirect[1].dest_port='443'
firewall.@redirect[1].target='DNAT'
firewall.@redirect[1].dest_ip='192.168.1.200'
Теперь у меня возникают проблемы с добавлением правила в мой скрипт
uci_cursor:set("firewall", "firewall.@redirect[0]", "dest_ip", "192.168.1.200")
uci_cursor:set("firewall", "firewall.@redirect[1]", "dest_ip", "192.168.1.200")
это не работает. В openwrt wiki я обнаружил, что "брандмауэр" "это тип, а не раздел". Раздел должен выглядеть как cfg02f02f
Теперь вопрос: как найти этот cfg02f02f?
uci_cursor: get_all ("system") ничего мне не показывает.
1 ответ
Решение
Наконец-то найдено решение:
require "uci"
x = uci.cursor()
x:foreach("firewall", "redirect", function(s)
print('------------------')
for key, value in pairs(s) do
print(key .. ': ' .. tostring(value))
end
end)