X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=contrib%2Fpackage%2Fmeshwizard%2Ffiles%2Fusr%2Fbin%2Fmeshwizard%2Fhelpers%2Fsetup_olsrd.sh;h=f51b75e6ac3279fe25e0d4efee9d6f77cafd2113;hb=516ea62f73a9fbb50ae7f517d4c7462c4459533c;hp=b4de9ce1944d388caf2a48796567616a866535d8;hpb=a4a93146515a28e6cc14560700c573b6cd788172;p=project%2Fluci.git diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh index b4de9ce19..f51b75e6a 100755 --- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh +++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh @@ -1,61 +1,149 @@ #!/bin/sh # Sets up olsrd -. /etc/functions.sh +. /lib/functions.sh . $dir/functions.sh -# Rename interface defaults +local protocols="4" +if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then + protocols="4 6" +fi + +clean_config() { + # Clean the config, remove interface wlan + handle_interface() { + config_get interface "$1" interface + if [ "$interface" = "wlan" ]; then + uci delete $cfg.$1 + fi + } + config_foreach handle_interface Interface +} -handle_interfacedefaults() { +rename_olsrd() { + #Rename olsrd basic settings + handle_olsrd() { if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename olsrd $1 InterfaceDefaults + section_rename $cfg $1 olsrd fi + } + config_foreach handle_olsrd olsrd } -config_load olsrd -config_foreach handle_interfacedefaults InterfaceDefaults -# Setup new InterfaceDefaults -uci set olsrd.InterfaceDefaults=InterfaceDefaults -set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults -uci_commitverbose "Setup olsr interface defaults" olsrd +rename_interface_defaults() { + # Rename interface defaults + handle_interfacedefaults() { + if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then + section_rename $cfg $1 InterfaceDefaults + fi + } + config_foreach handle_interfacedefaults InterfaceDefaults +} -# Rename nameservice, dyngw and httpinfo plugins +cleanup_plugins() { + # Rename nameservice, dyngw and httpinfo plugins + handle_plugin() { + config_get library "$1" library + if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then + new="$(echo $library | cut -d '.' -f 1)" + section_rename $cfg "$1" "$new" + fi + } + config_foreach handle_plugin LoadPlugin + uci -q delete $cfg.olsrd_httpinfo + uci -q delete $cfg.olsrd_dyn_gw +} -handle_plugin() { - config_get library "$1" library - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - new="$(echo $library | cut -d '.' -f 1)" - section_rename olsrd $1 $new - fi +setup_nameservice() { + # Setup nameservice plugin + if [ -n "$profile_suffix" ]; then + suffix=".$profile_suffix" + else + suffix=".olsr" + fi + local llfile="/var/run/latlon.js" + local hosts="/var/etc/hosts.olsr" + local services="/var/run/services_olsr" + + if [ "$proto" = "6" ]; then + local llfile="/var/run/latlon.js.ipv6" + local hosts="/var/etc/hosts.olsr.ipv6" + local services="/var/run/services_olsr.ipv6" + fi + + uci batch <<- EOF + set $cfg.olsrd_nameservice=LoadPlugin + set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.3" + set $cfg.olsrd_nameservice.latlon_file="$llfile" + set $cfg.olsrd_nameservice.hosts_file="$hosts" + set $cfg.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid" + set $cfg.olsrd_nameservice.services_file="$services" + set $cfg.olsrd_nameservice.suffix="$suffix" + EOF + + uci_commitverbose "Setup olsr nameservice plugin" $cfg } -config_foreach handle_plugin LoadPlugin -# Setup nameservice plugin -if [ -n "$profile_suffix" ]; then - suffix=".$profile_suffix" -else - suffix=".olsr" -fi -uci batch << EOF - set olsrd.olsrd_nameservice=LoadPlugin - set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3" - set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js" - set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr" - set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid" - set olsrd.olsrd_nameservice.suffix="$suffix" -EOF +setup_dyngw_plain() { + # Setup dyngw_plain + # If Sharing of Internet is enabled then enable dyngw_plain plugin -uci_commitverbose "Setup olsr nameservice plugin" olsrd + if [ "$general_sharenet" == 1 ]; then + uci set $cfg.dyngw_plain=LoadPlugin + uci set $cfg.dyngw_plain.ignore=0 + uci set $cfg.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4" + uci_commitverbose "Setup olsrd_dyngw_plain plugin" $cfg + fi -# Setup dyngw_plain +} -# If Sharing of Internet is enabled then enable dyngw_plain plugin -sharenet=$(uci -q get meshwizard.general.sharenet) +setup_watchdog() { + # Setup watchdog + local watchdogfile="/var/run/olsrd.watchdog" + if [ "$proto" = "6" ]; then + watchdogfile="/var/run/olsrd.watchdog.ipv6" + fi -if [ "$sharenet" == 1 ]; then - uci set olsrd.dyngw_plain=LoadPlugin - uci set olsrd.dyngw_plain.ignore=0 - uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4" + uci batch <<- EOF + set $cfg.olsrd_watchdog=LoadPlugin + set $cfg.olsrd_watchdog.library="olsrd_watchdog.so.0.1" + set $cfg.olsrd_watchdog.file="$watchdogfile" + set $cfg.olsrd_watchdog.interval=30 + EOF + uci_commitverbose "Setup olsr watchdog plugin" $cfg - uci_commitverbose "Setup olsrd_dyngw_plain plugin" olsrd -fi +} + +setup_jsoninfo() { + # Setup jsoninfo + proto="$1" + uci batch <<- EOF + set $cfg.olsrd_jsoninfo=LoadPlugin + set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.0.0" + EOF + if [ "$proto" = "6" ]; then + uci set $cfg.olsrd_jsoninfo.port='9091' + fi + uci_commitverbose "Setup olsr jsoninfo plugin" $cfg +} + + +for proto in $protocols; do + cfg="olsrd" + [ "$proto" == "6" ] && cfg="olsrd6" + config_load $cfg + clean_config + rename_olsrd + cleanup_plugins + + uci set $cfg.olsrd.IpVersion="$proto" + uci set $cfg.InterfaceDefaults=InterfaceDefaults + set_defaults "olsr_interfacedefaults_" $cfg.InterfaceDefaults + uci_commitverbose "Cleanup olsrd config" $cfg + + setup_nameservice + setup_dyngw_plain + setup_watchdog + setup_jsoninfo $proto + +done