Hi Philip

On 25.07.2017 18:29, Philip Prindeville wrote:
I’m guessing I’d need a sed script with a loop to gather all of the ‘server’ 
lines and replace them with one.

Or am I missing something obvious?

I think you are. Look at Dnsmasq and OpenVPN for two examples of UCI config integration. They do things slightly differently in terms of handling config files in upstream format (Dnsmasq/OpenVPN native config files), but they both use them.

Dnsmasq ships /etc/dnsmasq.conf, completely commented out. Users who need to or prefer to configure Dnsmasq in its native format can add their options to this file. The Dnsmasq init script parses the UCI configuration, and writes out a native Dnsmasq config file based on the UCI config to /tmp/etc/dnsmasq.conf.${cfg}. This temporary file includes /etc/dnsmasq.conf. Dnsmasq is finally started with the temporary config file specified on the command line, and will then include everything specified in /etc/dnsmasq.conf.

The OpenVPN init script parses each UCI openvpn section, and writes out an OpenVPN native config file to /tmp/etc for each section. OpenVPN is then started with the temporary config file specified on the command line. The OpenVPN init script also checks for any *.conf files in /etc/openvpn, and if any exist it will start an OpenVPN instance for each of them, specifying each *.conf file in /etc/openvpn on the command line.

Unlike Dnsmasq, OpenVPN UCI instances and native config instances (/etc/openvpn/*.conf) do not overlap (one exception: a native config instance can be disabled in UCI). Each single OpenVPN instance must be configured *either* entirely in UCI, *or* entirely in /etc/openvpn/*.conf.

If it makes sense to run onlye one instance, or more instances with some options common to all instances, the Dnsmasq approach makes sense. If running several instances with no common options between all, the OpenVPN approach makes more sense.

There may be more ways to do it, but both of these seem better than sed-ing a file. If you can avoid writing to flash outside of package install/image upgrade, it is best to do so (by only writing to /tmp).

Thanks,

-Philip

Regards
/Magnus

_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to