Генерируется он при запуске miniupnpd (Функция start_upnp из service.c). Можно поправить и собрать прошивку для себя. ;)
Printable View
Благодарю, теперь вижу, и всё понятно.
Я молчу конечно, рутер, а не десктоп, но даже на C довольно дёшево было бы и просто написать подстановки в темплейты, по небольшой таблице паттернов к каждому конфигу, вместо того, чтобы делать fprintf конфига целиком.
Если вдруг у кого схожая проблема, сделал так, и заработало:
Code:mkdir /usr/local/sbin
cat > /usr/local/sbin/post-boot
#!/bin/sh
sed -e 's/1024-65535/1-65535/g' -i /etc/miniupnpd.conf
killall miniupnpd
miniupnpd
^D
chmod a+x /usr/local/sbin/post-boot
flashfs save && flashfs commit && flashfs enable && reboot
Конкретно к текущему случаю, темплейт примерно такой в файле, который можно менять через flashfs. Из него уже генерился бы актуальный /etc/miniupnpd.conf. То же самое по другим конфигам, которые сейчас жётско зашиты через fprintf в rc/services.c:
И, соответственно, табличка подстановки, поиск сделать линейный т.к. паттернов на конфиг мало:Code:ext_ifname=%WAN_IFNAME%
listening_ip=%LAN_ADDR%/%LAN_MASK%
listening_ip=127.0.0.1/8
port=0
...
Code:{"%WAN_IFNAME%", wan_ifname},
{"%LAN_ADDR%", lan_addr},
{"%LAN_MASK%", lan_mask},
...
Паттерны-то не требуют.
Требует всё остальное, кроме паттернов, например из того же конфига юзер сможет менять через flashfs строчки (оставляя паттерны):
и добавлять новые опции miniupnpd.Code:system_uptime=yes
notify_interval=60
clean_ruleset_interval=600
allow 1024-65535 %LAN_CLASS% 1024-65535
deny 0-65535 0.0.0.0/0 0-65535
Аналогичного в других жёстко генерируемых сейчас конфигах.
в каких случаях это рельно бы пригодилось?
LAN_CLASS не меняется начиная с загрузки, зачем его тут позволять менять?
только чтобы сделать туда инъекцию с еще одной строкой с разрешением 1-65535 портов?
многие конфиги подцепляют добавки из /usr/local/etc.
может стоит и тут так же сделать
1) Конкретно это не пригодилось бы, но я же показываю на примере одного конфига, посмотрите все остальные конфиги в rc/services.c, там много полезного можно было бы менять/добавлять. Кстати, и у miniupnpd ещё куча всяких опций, которые сейчас нельзя добавить.
2) Не имеется в виду менять LAN_CLASS, а всё остальное в этой строчке кроме. Я скопировал строку fprintf из services.c:3) Да, это было бы уже лучше, чем сейчас - просто добавлять найденные в /usr/local/etc конфиги к текущим (если вы это имеете в виду), но не стоит забывать, что для файлов в /usr/local/etc не будет подстановок системных переменных, поэтому самый гибкий способ всё-таки делать темплейты.Code:"allow 1024-65535 %s 1024-65535\n"
Кстати, это не всегда спасает - в некоторых конфигах важен порядок правил (в частности miniupnpd.conf - allow deny), например, разрешения потом запрета. Если просто добавить - может перекрываться и ругаться. При темплейтах такой проблемы нет.
Кстати, по запросу по IGD 2 presentation (miniupnpc -S) miniupnpd сейчас показывает, что файрвол отключён (при включенном оном) и что Internal Loopholes делать вообще нельзя. Почему - неизвестно, надо сорсы изучать.