#!/usr/bin/perl -w -I/www/cgi-bin =for commnet Part of BBHN Mesh -- Used for creating Amateur Radio friendly mesh networks Copyright (C) 2015 Conrad Lara See Contributors file for additional contributors Copyright (c) 2013 David Rivenburg et al. BroadBand-HamNet This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . =cut # this script generates the olsrd config file # static part comes from /etc/config/olsrd.conf # dynamic part depends on the node configuration use perlfunc; @names = @hosts = @services = (); # canonical names for this node # (they show up in reverse order, make the "official" name last) push @names, $name if ($name = nvram_get("tactical")); push @names, $name if ($name = nvram_get("node")); # load the dhcp reservations when in dmz mode if(-f "/etc/config/dmz-mode") { #($lanip, $lanmask, $lanbcast, $lannet) = get_ip4_network("eth0.0"); foreach(`cat /etc/ethers`) { next unless ($ip) = /[0-9a-f:]+\s+([\d\.]+)/i; next unless $host = ip2hostname($ip); push @hosts, qq("$ip" "$host"); } } # Add a name for the dtdlink interface. if ($name = nvram_get("node")) { my ($dtdip,$dtdmask,$dtdbcast,$dtdnet); ($dtdip, $dtdmask, $dtdbcast, $dtdnet) = get_ip4_network("eth0.2"); push @hosts, qq("$dtdip" "dtdlink.$name.local.mesh"); } # load the services foreach(`cat /etc/config/services 2>/dev/null`) { next unless /^\w+:\/\/[\w\-\.]+:\d+(\/[^\|]*)?\|(tcp|udp)\|\w/; chomp; push @services, $_; } # add the nameservice plugin push @file, qq(\nLoadPlugin "olsrd_nameservice.so.0.3"\n); push @file, qq({\n); push @file, qq( PlParam "sighup-pid-file" "/var/run/dnsmasq.pid"\n); push @file, qq( PlParam "interval" "30"\n); push @file, qq( PlParam "timeout" "300"\n); push @file, qq( PlParam "name-change-script" "touch /tmp/namechange"\n); #push @file, qq( PlParam "lat" "1"\n); #push @file, qq( PlParam "lon" "2"\n); #push @file, qq( PlParam "laton-file" "/var/run/latlon.js"\n); #push @file, qq( PlParam "laton-infile" "/tmp/latlon.txt"\n); foreach(@names) { push @file, qq( PlParam "name" "$_"\n) } foreach(@hosts) { push @file, qq( PlParam $_\n) } foreach(@services) { push @file, qq( PlParam "service" "$_"\n) } push @file, qq(}\n); # write the file print @file;