'title' => "$Lang::tr{'WakeOnLan'}",
'enabled' => 1,
};
+ $subnetwork->{'91.freifunk'} = {
+ 'caption' => $Lang::tr{'freifunk'},
+ 'uri' => '/cgi-bin/freifunk.cgi',
+ 'title' => "$Lang::tr{'freifunk'}",
+ 'enabled' => 1,
+ };
etc/rc.d/init.d/fireinfo
etc/rc.d/init.d/firewall
etc/rc.d/init.d/firstsetup
+etc/rc.d/init.d/freifunk
etc/rc.d/init.d/functions
#etc/rc.d/init.d/gnump3d
etc/rc.d/init.d/halt
etc/rc.d/rc0.d/K45random
etc/rc.d/rc0.d/K47setclock
etc/rc.d/rc0.d/K49cyrus-sasl
+etc/rc.d/rc0.d/K78freifunk
etc/rc.d/rc0.d/K78snort
etc/rc.d/rc0.d/K79leds
etc/rc.d/rc0.d/K80network
etc/rc.d/rc3.d/S19wlanclient
etc/rc.d/rc3.d/S20network
etc/rc.d/rc3.d/S21leds
+etc/rc.d/rc3.d/S21freifunk
etc/rc.d/rc3.d/S24cyrus-sasl
etc/rc.d/rc3.d/S25random
etc/rc.d/rc3.d/S30sshd
etc/rc.d/rc6.d/K45random
etc/rc.d/rc6.d/K47setclock
etc/rc.d/rc6.d/K49cyrus-sasl
+etc/rc.d/rc6.d/K78freifunk
etc/rc.d/rc6.d/K78snort
etc/rc.d/rc6.d/K79leds
etc/rc.d/rc6.d/K80network
#etc/rc.d/init.d/motion
etc/rc.d/init.d/mountfs
etc/rc.d/init.d/mountkernfs
+etc/rc.d/init.d/mounttmpfs
#etc/rc.d/init.d/mpd
#etc/rc.d/init.d/mysql
#etc/rc.d/init.d/netsnmpd
etc/rc.d/rcsysinit.d/S30checkfs
etc/rc.d/rcsysinit.d/S40mountfs
etc/rc.d/rcsysinit.d/S42fsresize
+etc/rc.d/rcsysinit.d/S43mounttmpfs
etc/rc.d/rcsysinit.d/S45udev_retry
etc/rc.d/rcsysinit.d/S50cleanfs
etc/rc.d/rcsysinit.d/S60setclock
#var/ipfire/firewall/outgoing
#var/ipfire/firewall/p2protocols
#var/ipfire/firewall/settings
+var/ipfire/freifunk
+#var/ipfire/freifunk/fastd.conf
+#var/ipfire/freifunk/settings
var/ipfire/fwhosts
#var/ipfire/fwhosts/customgroups
#var/ipfire/fwhosts/customhosts
etc/rc.d/init.d/fireinfo
etc/rc.d/init.d/firewall
etc/rc.d/init.d/firstsetup
+etc/rc.d/init.d/freifunk
etc/rc.d/init.d/functions
#etc/rc.d/init.d/gnump3d
etc/rc.d/init.d/halt
etc/rc.d/rc0.d/K45random
etc/rc.d/rc0.d/K47setclock
etc/rc.d/rc0.d/K49cyrus-sasl
+etc/rc.d/rc0.d/K78freifunk
etc/rc.d/rc0.d/K78snort
etc/rc.d/rc0.d/K79leds
etc/rc.d/rc0.d/K80network
etc/rc.d/rc3.d/S19wlanclient
etc/rc.d/rc3.d/S20network
etc/rc.d/rc3.d/S21leds
+etc/rc.d/rc3.d/S21freifunk
etc/rc.d/rc3.d/S24cyrus-sasl
etc/rc.d/rc3.d/S25random
etc/rc.d/rc3.d/S30sshd
etc/rc.d/rc6.d/K45random
etc/rc.d/rc6.d/K47setclock
etc/rc.d/rc6.d/K49cyrus-sasl
+etc/rc.d/rc6.d/K78freifunk
etc/rc.d/rc6.d/K78snort
etc/rc.d/rc6.d/K79leds
etc/rc.d/rc6.d/K80network
usr/local/bin/dnsmasqctrl
usr/local/bin/extrahdctrl
usr/local/bin/fireinfoctrl
+usr/local/bin/freifunkctrl
usr/local/bin/getconntracktable
usr/local/bin/getipstat
#usr/local/bin/iowrap
WARNING: translation string unused: forwarding rule added
WARNING: translation string unused: forwarding rule removed
WARNING: translation string unused: forwarding rule updated
+WARNING: translation string unused: freifunk status
WARNING: translation string unused: frequency
WARNING: translation string unused: fritzdsl help
WARNING: translation string unused: fritzdsl upload
WARNING: translation string unused: upstream username
WARNING: translation string unused: uptime
WARNING: translation string unused: uptime and users
+WARNING: translation string unused: url
WARNING: translation string unused: urlfilter background image
WARNING: translation string unused: urlfilter background text
WARNING: translation string unused: urlfilter enable jpeg
WARNING: translation string unused: forwarding rule added
WARNING: translation string unused: forwarding rule removed
WARNING: translation string unused: forwarding rule updated
+WARNING: translation string unused: freifunk status
WARNING: translation string unused: frequency
WARNING: translation string unused: fritzdsl help
WARNING: translation string unused: fritzdsl upload
WARNING: translation string unused: upstream username
WARNING: translation string unused: uptime
WARNING: translation string unused: uptime and users
+WARNING: translation string unused: url
WARNING: translation string unused: urlfilter background image
WARNING: translation string unused: urlfilter background text
WARNING: translation string unused: urlfilter enable jpeg
WARNING: untranslated string: age second
WARNING: untranslated string: atm device
WARNING: untranslated string: attention
+WARNING: untranslated string: batman version
WARNING: untranslated string: bit
WARNING: untranslated string: bytes
WARNING: untranslated string: capabilities
WARNING: untranslated string: countries
WARNING: untranslated string: country codes and flags
WARNING: untranslated string: countrycode
+WARNING: untranslated string: credentials
WARNING: untranslated string: dead peer detection
WARNING: untranslated string: default
WARNING: untranslated string: deprecated fs warn
WARNING: untranslated string: firewall rules
WARNING: untranslated string: first
WARNING: untranslated string: flag
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fw default drop
WARNING: untranslated string: fw settings
WARNING: untranslated string: fw settings color
WARNING: untranslated string: p2p block
WARNING: untranslated string: p2p block save notice
WARNING: untranslated string: pakfire ago
+WARNING: untranslated string: please select
WARNING: untranslated string: proxy reports
WARNING: untranslated string: proxy reports daily
WARNING: untranslated string: proxy reports monthly
WARNING: untranslated string: proxy reports today
WARNING: untranslated string: proxy reports weekly
+WARNING: untranslated string: public key
WARNING: untranslated string: qos enter bandwidths
WARNING: untranslated string: random number generator daemon
WARNING: untranslated string: red1
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: wlan client wpa mode tkip tkip
WARNING: untranslated string: wlan clients
WARNING: untranslated string: wlanap country
+WARNING: untranslated string: your version
WARNING: untranslated string: age second
WARNING: untranslated string: atm device
WARNING: untranslated string: attention
+WARNING: untranslated string: batman version
WARNING: untranslated string: bit
WARNING: untranslated string: bytes
WARNING: untranslated string: capabilities
WARNING: untranslated string: countries
WARNING: untranslated string: country codes and flags
WARNING: untranslated string: countrycode
+WARNING: untranslated string: credentials
WARNING: untranslated string: dead peer detection
WARNING: untranslated string: default
WARNING: untranslated string: deprecated fs warn
WARNING: untranslated string: firewall rules
WARNING: untranslated string: first
WARNING: untranslated string: flag
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fw default drop
WARNING: untranslated string: fw settings
WARNING: untranslated string: fw settings color
WARNING: untranslated string: p2p block
WARNING: untranslated string: p2p block save notice
WARNING: untranslated string: pakfire ago
+WARNING: untranslated string: please select
WARNING: untranslated string: proxy reports
WARNING: untranslated string: proxy reports daily
WARNING: untranslated string: proxy reports monthly
WARNING: untranslated string: proxy reports today
WARNING: untranslated string: proxy reports weekly
+WARNING: untranslated string: public key
WARNING: untranslated string: qos enter bandwidths
WARNING: untranslated string: random number generator daemon
WARNING: untranslated string: red1
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: wlanap wlan card
WARNING: untranslated string: wlanap wlan settings
WARNING: untranslated string: wlanap wlan status
+WARNING: untranslated string: your version
WARNING: untranslated string: advproxy group access control
WARNING: untranslated string: advproxy group required
WARNING: untranslated string: atm device
+WARNING: untranslated string: batman version
WARNING: untranslated string: bytes
WARNING: untranslated string: capabilities
+WARNING: untranslated string: credentials
WARNING: untranslated string: default
WARNING: untranslated string: dh
WARNING: untranslated string: dh key move failed
WARNING: untranslated string: download tls-auth key
WARNING: untranslated string: drop outgoing
WARNING: untranslated string: firewall logs country
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fwdfw err concon
WARNING: untranslated string: fwdfw err ratecon
WARNING: untranslated string: fwdfw limitconcon
WARNING: untranslated string: ovpn generating the root and host certificates
WARNING: untranslated string: ovpn ha
WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: please select
+WARNING: untranslated string: public key
WARNING: untranslated string: random number generator daemon
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: ta key
WARNING: untranslated string: upload dh key
WARNING: untranslated string: vendor
+WARNING: untranslated string: your version
WARNING: untranslated string: age second
WARNING: untranslated string: atm device
WARNING: untranslated string: attention
+WARNING: untranslated string: batman version
WARNING: untranslated string: bit
WARNING: untranslated string: bytes
WARNING: untranslated string: capabilities
WARNING: untranslated string: countries
WARNING: untranslated string: country codes and flags
WARNING: untranslated string: countrycode
+WARNING: untranslated string: credentials
WARNING: untranslated string: dead peer detection
WARNING: untranslated string: default
WARNING: untranslated string: deprecated fs warn
WARNING: untranslated string: firewall rules
WARNING: untranslated string: first
WARNING: untranslated string: flag
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fw default drop
WARNING: untranslated string: fw settings
WARNING: untranslated string: fw settings color
WARNING: untranslated string: p2p block
WARNING: untranslated string: p2p block save notice
WARNING: untranslated string: pakfire ago
+WARNING: untranslated string: please select
WARNING: untranslated string: proxy reports
WARNING: untranslated string: proxy reports daily
WARNING: untranslated string: proxy reports monthly
WARNING: untranslated string: proxy reports today
WARNING: untranslated string: proxy reports weekly
+WARNING: untranslated string: public key
WARNING: untranslated string: qos enter bandwidths
WARNING: untranslated string: random number generator daemon
WARNING: untranslated string: red1
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: wlan client wpa mode tkip tkip
WARNING: untranslated string: wlan clients
WARNING: untranslated string: wlanap country
+WARNING: untranslated string: your version
WARNING: untranslated string: age second
WARNING: untranslated string: atm device
WARNING: untranslated string: attention
+WARNING: untranslated string: batman version
WARNING: untranslated string: bit
WARNING: untranslated string: bytes
WARNING: untranslated string: capabilities
WARNING: untranslated string: countries
WARNING: untranslated string: country codes and flags
WARNING: untranslated string: countrycode
+WARNING: untranslated string: credentials
WARNING: untranslated string: dead peer detection
WARNING: untranslated string: default
WARNING: untranslated string: deprecated fs warn
WARNING: untranslated string: firewall rules
WARNING: untranslated string: first
WARNING: untranslated string: flag
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fw default drop
WARNING: untranslated string: fw settings
WARNING: untranslated string: fw settings color
WARNING: untranslated string: ovpn port in root range
WARNING: untranslated string: p2p block
WARNING: untranslated string: p2p block save notice
+WARNING: untranslated string: please select
WARNING: untranslated string: proxy reports
WARNING: untranslated string: proxy reports daily
WARNING: untranslated string: proxy reports monthly
WARNING: untranslated string: proxy reports today
WARNING: untranslated string: proxy reports weekly
+WARNING: untranslated string: public key
WARNING: untranslated string: qos enter bandwidths
WARNING: untranslated string: random number generator daemon
WARNING: untranslated string: red1
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: wlan client wpa mode tkip tkip
WARNING: untranslated string: wlan clients
WARNING: untranslated string: wlanap country
+WARNING: untranslated string: your version
WARNING: translation string unused: year-graph
WARNING: translation string unused: yearly firewallhits
WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: batman version
WARNING: untranslated string: bytes
+WARNING: untranslated string: credentials
+WARNING: untranslated string: freifunk
+WARNING: untranslated string: freifunk community
+WARNING: untranslated string: freifunk community settings
+WARNING: untranslated string: freifunk configuration
+WARNING: untranslated string: freifunk enabled
WARNING: untranslated string: fwhost err hostip
WARNING: untranslated string: incoming compression in bytes per second
WARNING: untranslated string: incoming overhead in bytes per second
WARNING: untranslated string: outgoing compression in bytes per second
WARNING: untranslated string: outgoing overhead in bytes per second
WARNING: untranslated string: ovpn add conf
+WARNING: untranslated string: please select
+WARNING: untranslated string: public key
+WARNING: untranslated string: register host
WARNING: untranslated string: route config changed
WARNING: untranslated string: routing config added
WARNING: untranslated string: routing config changed
WARNING: untranslated string: routing table
+WARNING: untranslated string: your version
< age ssecond
< atm device
< attention
+< batman version
< bit
< capabilities
< ccd add
< countries
< countrycode
< country codes and flags
+< credentials
< default
< default ip
< deprecated fs warn
< first
< flag
< forward firewall
+< freifunk
+< freifunk community
+< freifunk community settings
+< freifunk configuration
+< freifunk enabled
+< freifunk status
< fw default drop
< fwdfw ACCEPT
< fwdfw action
< ovpn reneg sec
< p2p block
< p2p block save notice
+< please select
< proxy reports
< proxy reports daily
< proxy reports monthly
< proxy reports today
< proxy reports weekly
+< public key
< qos enter bandwidths
< random number generator daemon
< red1
+< register host
< samba join a domain
< samba join domain
< server restart
< upload new ruleset
< uptime
< uptime load average
+< url
< urlfilter file ext block
< urlfilter mode block
< urlfilter redirect template
< wlan client wpa mode ccmp ccmp
< wlan client wpa mode ccmp tkip
< wlan client wpa mode tkip tkip
+< your version
############################################################################
# Checking cgi-bin translations for language: es #
############################################################################
< Async logging enabled
< atm device
< attention
+< batman version
< bit
< capabilities
< ccd add
< countries
< countrycode
< country codes and flags
+< credentials
< default
< default ip
< deprecated fs warn
< first
< flag
< forward firewall
+< freifunk
+< freifunk community
+< freifunk community settings
+< freifunk configuration
+< freifunk enabled
+< freifunk status
< fw default drop
< fwdfw ACCEPT
< fwdfw action
< ovpn routes push options
< p2p block
< p2p block save notice
+< please select
< proxy reports
< proxy reports daily
< proxy reports monthly
< proxy reports today
< proxy reports weekly
+< public key
< qos enter bandwidths
< random number generator daemon
< red1
+< register host
< samba join a domain
< samba join domain
< server restart
< upload dh key
< uptime
< uptime load average
+< url
< urlfilter redirect template
< vendor
< visit us at
< wlan client wpa mode ccmp ccmp
< wlan client wpa mode ccmp tkip
< wlan client wpa mode tkip tkip
+< your version
############################################################################
# Checking cgi-bin translations for language: pl #
############################################################################
< age ssecond
< atm device
< attention
+< batman version
< bit
< capabilities
< ccd add
< countries
< countrycode
< country codes and flags
+< credentials
< default
< default ip
< deprecated fs warn
< first
< flag
< forward firewall
+< freifunk
+< freifunk community
+< freifunk community settings
+< freifunk configuration
+< freifunk enabled
+< freifunk status
< fw default drop
< fwdfw ACCEPT
< fwdfw action
< ovpn routes push options
< p2p block
< p2p block save notice
+< please select
< proxy reports
< proxy reports daily
< proxy reports monthly
< proxy reports today
< proxy reports weekly
+< public key
< qos enter bandwidths
< random number generator daemon
< red1
+< register host
< samba join a domain
< samba join domain
< server restart
< upload dh key
< uptime
< uptime load average
+< url
< urlfilter redirect template
< vendor
< visit us at
< wlan client wpa mode ccmp ccmp
< wlan client wpa mode ccmp tkip
< wlan client wpa mode tkip tkip
+< your version
############################################################################
# Checking cgi-bin translations for language: ru #
############################################################################
< age ssecond
< atm device
< attention
+< batman version
< bit
< capabilities
< ccd add
< countries
< countrycode
< country codes and flags
+< credentials
< day-graph
< default
< default ip
< first
< flag
< forward firewall
+< freifunk
+< freifunk community
+< freifunk community settings
+< freifunk configuration
+< freifunk enabled
+< freifunk status
< frequency
< fw default drop
< fwdfw ACCEPT
< ovpn reneg sec
< p2p block
< p2p block save notice
+< please select
< proxy reports
< proxy reports daily
< proxy reports monthly
< proxy reports today
< proxy reports weekly
+< public key
< qos enter bandwidths
< random number generator daemon
< red1
+< register host
< samba join a domain
< samba join domain
< server restart
< upload dh key
< uptime
< uptime load average
+< url
< urlfilter redirect template
< vendor
< visit us at
< wlan client wpa mode ccmp tkip
< wlan client wpa mode tkip tkip
< year-graph
+< your version
--- /dev/null
+#!/usr/bin/perl
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2014 IPFire Team <info@ipfire.org> #
+# #
+# 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, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# 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 <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+#use strict;
+use JSON::Parse;
+
+# enable only the following on debugging purpose
+use warnings;
+use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my $FASTD_CONFIG = "${General::swroot}/freifunk/fastd.conf";
+my $NETWORKS_LIST = "${General::swroot}/freifunk/networks.json";
+
+#workaround to suppress a warning when a variable is used only once
+my @dummy = ( ${Header::colouryellow} );
+undef (@dummy);
+
+our %netsettings = ();
+&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
+
+our %color = ();
+our %mainsettings = ();
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+our %settings = ();
+
+$settings{'FREIFUNK_ENABLED'} = 'off';
+$settings{'FREIFUNK_COMMUNITY'} = '';
+$settings{'FASTD_SECRET'} = '';
+$settings{'ACTION'} = '';
+
+my $errormessage = '';
+my $warnmessage = '';
+
+&Header::showhttpheaders();
+
+# Get GUI values.
+&Header::getcgihash(\%settings);
+
+# Toggle enable/disable field.
+if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
+ if ($errormessage eq '') {
+ # Retrieve secret from configuration
+ my %oldsettings = ();
+ &General::readhash("${General::swroot}/freifunk/settings", \%oldsettings);
+ $settings{'FASTD_SECRET'} = $oldsettings{'FASTD_SECRET'};
+
+ # Write configuration settings to file.
+ &General::writehash("${General::swroot}/freifunk/settings", \%settings);
+
+ # Update configuration files.
+ &BuildConfiguration();
+ }
+}
+
+# Read configuration
+&General::readhash("${General::swroot}/freifunk/settings", \%settings);
+
+&showMainBox();
+
+# Functions
+
+sub showMainBox() {
+ my %checked = ();
+ my %selected = ();
+
+ $checked{'FREIFUNK_ENABLED'}{'on'} = '';
+ $checked{'FREIFUNK_ENABLED'}{'off'} = '';
+ $checked{'FREIFUNK_ENABLED'}{$settings{'FREIFUNK_ENABLED'}} = 'checked';
+
+ &Header::openpage($Lang::tr{'freifunk configuration'}, 1, '');
+ &Header::openbigbox('100%', 'left', '', $errormessage);
+
+ if ($errormessage) {
+ &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+ print "<font class='base'>$errormessage </font>\n";
+ &Header::closebox();
+ }
+
+ print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
+
+ &Header::openbox('100%', 'center', $Lang::tr{'freifunk configuration'});
+
+ my @networks = &GetNetworkList();
+ my $network = &GetNetwork($settings{'FREIFUNK_COMMUNITY'});
+
+ print <<END;
+ <table width='95%'>
+ <tr>
+ <td colspan='4' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'freifunk community settings'}</b></td>
+ </tr>
+ <tr>
+ <td width='25%' class='base'>$Lang::tr{'freifunk enabled'}:</td>
+ <td width='30%'><input type='checkbox' name='FREIFUNK_ENABLED' $checked{'FREIFUNK_ENABLED'}{'on'} /></td>
+ <td colspan='2'> </td>
+ </tr>
+ <tr>
+ <td width='25%' class='base'>$Lang::tr{'freifunk community'}:</td>
+ <td width='50%'>
+ <select name='FREIFUNK_COMMUNITY'>
+ <option value=''>- $Lang::tr{'please select'} -</option>
+END
+
+ foreach my $net (@networks) {
+ my $selected = ($settings{"FREIFUNK_COMMUNITY"} eq $net->[0]) ? "selected" : "";
+ print "<option value='$net->[0]' $selected>$net->[1]</option>\n";
+ }
+
+ print <<END;
+ </select>
+ </td>
+ <td width='25%'>
+END
+ if ($network) {
+ print "<a href='$network->{'url'}' target='_blank'>$network->{'url'}</a>\n";
+ } else {
+ print " \n";
+ }
+
+ print <<END;
+ </td>
+ </tr>
+END
+
+ if ($network) {
+ my $batman_version = &BatmanAdvVersion();
+ my $hostname = $network->{'prefix'} . hostname();
+ my $public_key = &fastdGetPublicKey();
+
+ print <<END;
+ </table>
+
+ <hr>
+
+ <table width='95%'>
+ <tr>
+ <td width='25%' class='base'>$Lang::tr{'batman version'}</td>
+ <td width='75%'>
+ $network->{'batman-adv'} ($Lang::tr{'your version'} $batman_version)
+ </td>
+ </tr>
+ </table>
+
+ <br>
+
+ <table width='95%'>
+ <tr>
+ <td colspan='3' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'credentials'}</b></td>
+ </tr>
+ <tr>
+ <td width='25%' class='base'>$Lang::tr{'hostname'}</td>
+ <td width='75%' colspan='2'>$hostname</td>
+ </tr>
+ <tr>
+ <td width='25%' class='base'>$Lang::tr{'public key'}</td>
+ <td width='65%'>$public_key</td>
+ <td width='10%'>
+END
+
+ if ($network->{'register'}) {
+ print "<a href='$network->{'register'}' target='_blank'>$Lang::tr{'register host'}</a>\n";
+ } else {
+ print " \n";
+ }
+
+ print <<END;
+ </td>
+ </tr>
+END
+ }
+
+ print <<END;
+ </table>
+END
+
+ &Header::closebox();
+
+ print <<END;
+ <table width='95%'>
+ <tr>
+ <td>
+ <img src='/blob.gif' align='top' alt='*' /> <font class='base'>$Lang::tr{'this field may be blank'}</font>
+ </td>
+ <td align='right'> </td>
+ </tr>
+ </table>
+
+ <hr>
+
+ <table width='95%'>
+ <tr>
+ <td> </td>
+ <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+ <td> </td>
+ </tr>
+ </table>
+END
+
+ print "</form>\n";
+
+ &Header::closebigbox();
+ &Header::closepage();
+}
+
+sub BuildConfiguration() {
+ my %settings = ();
+ &General::readhash("${General::swroot}/freifunk/settings", \%settings);
+
+ # Create fastd secret if none is set
+ if ($settings{'FASTD_SECRET'} eq '') {
+ $settings{'FASTD_SECRET'} = &fastdCreateKey();
+
+ &General::writehash("${General::swroot}/freifunk/settings", \%settings);
+ }
+
+ my $network = &GetNetwork($settings{"FREIFUNK_COMMUNITY"});
+ if ($network) {
+ # Write configuration bits...
+ open(FILE, ">$FASTD_CONFIG");
+
+ print FILE "# Logging\n";
+ print FILE "log level error;\n";
+ print FILE "log to syslog level info;\n\n";
+
+ print FILE "# Drop privileges\n";
+ print FILE "user \"nobody\";\n\n";
+
+ print FILE "interface \"batvpn0\";\n";
+ print FILE "mode tap;\n\n";
+
+ print FILE "# Authentication credentials\n";
+ print FILE "secret \"$settings{'FASTD_SECRET'}\";\n";
+ print FILE "secure handshakes yes;\n\n";
+
+ print FILE "# Ciphers\n";
+ my $ciphers = $network->{'ciphers'};
+ foreach my $cipher (@$ciphers) {
+ print FILE "method \"$cipher\";\n";
+ }
+ print FILE "\n";
+
+ print FILE "# Upstream connection\n";
+ print FILE "mtu $network->{'mtu-vpn'};\n";
+
+ my $nodes = $network->{'supernodes'};
+ foreach my $node (@$nodes) {
+ print FILE "peer \"$node->{'peer'}\" {\n";
+ print FILE "\tkey \"$node->{'key'}\";\n";
+ print FILE "\tremote \"$node->{'remote'}\" port $node->{'port'};\n";
+ print FILE "}\n";
+ }
+ print FILE "\n";
+
+ print FILE "# Hooks\n";
+ foreach my $hook ("pre-up", "up") {
+ print FILE "on $hook \"/etc/rc.d/init.d/freifunk on-$hook\";\n";
+ }
+
+ close(FILE);
+ }
+
+ # Restart the service.
+ if ($settings{'FREIFUNK_ENABLED'} eq 'on') {
+ system("/usr/local/bin/freifunkctrl restart &>/dev/null");
+ } else {
+ system("/usr/local/bin/freifunkctrl stop &>/dev/null");
+ }
+}
+
+sub fastdCreateKey() {
+ my $output = `fastd --machine-readable --generate-key`;
+ chomp($output);
+
+ return $output;
+}
+
+sub fastdGetPublicKey() {
+ my $output = "";
+
+ if (-e $FASTD_CONFIG) {
+ $output = `fastd --machine-readable --config $FASTD_CONFIG --show-key`;
+ chomp($output);
+ }
+
+ return $output;
+}
+
+sub BatmanAdvVersion() {
+ open(OUTPUT, "modinfo batman-adv |");
+ my @output = <OUTPUT>;
+ close(OUTPUT);
+
+ foreach my $line (@output) {
+ my ($key, $val) = split(/\:/, $line);
+ if ($key eq "version") {
+ chomp($val);
+ return $val;
+ }
+ }
+}
+
+sub GetNetworkList() {
+ my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST);
+ my @ret = ();
+
+ foreach my $network (@$list) {
+ push(@ret, [$network->{'id'}, $network->{'name'}]);
+ }
+
+ return sort { $a->{1} cmp $b->{1} } @ret;
+}
+
+sub GetNetwork($) {
+ my $id = shift;
+
+ my $list = JSON::Parse::json_file_to_perl($NETWORKS_LIST);
+
+ foreach my $network (@$list) {
+ return $network if ($network->{'id'} eq $id);
+ }
+
+ return undef;
+}
+
+sub hostname() {
+ my $hostname = `hostname -f`;
+ chomp($hostname);
+
+ return $hostname;
+}
'bandwitherror' => 'Sie können die Bandbreiteneinstellungen nicht bearbeiten, wenn QoS eingeschaltet ist. Schalten Sie es erst aus.<p>',
'bandwithsettings' => 'Bandbreiteneinstellungen',
'basic options' => 'Basisoptionen',
+'batman version' => 'B.A.T.M.A.N.-Version',
'beep when ppp connects or disconnects' => 'Piepen, wenn IPFire verbindet oder trennt',
'behind a proxy' => 'Hinter einem Proxy:',
'bit' => 'Bit',
'create' => 'Erzeuge',
'create mask' => 'UNIX Rechte für neue Dateien',
'create new backup' => 'Einen neuen Sicherungssatz anlegen',
+'credentials' => 'Anmeldedaten',
'credits' => 'Credits',
'crl' => 'Certificate Revocation List',
'cron server' => 'Cron-Server',
'free' => 'Frei',
'free memory' => 'Freier Speicher ',
'free swap' => 'Freier Swap',
+'freifunk' => 'Freifunk',
+'freifunk community' => 'Freifunk-Community',
+'freifunk community settings' => 'Freifunk-Community-Einstellungen',
+'freifunk configuration' => 'Freifunk-Konfiguration',
+'freifunk enabled' => 'Freifunk einschalten',
+'freifunk status' => 'Freifunk-Status',
'frequency' => 'Frequenz',
'friday' => 'Freitag',
'fritzdsl help' => 'Um eines der folgenden Fritz!DSL Modems (Fritz!Card DSL=fcdsl / Fritz!CardDSL SL=fcdslsl / Fritz!Card DSL V2.0=fcdsl2 / Fritz!Card DSL USB=fcdslusb / Fritz!Card DSL USB SL=fcdslslusb) nutzen zu können, müssen Sie ein Paket auf Ihre IPFire-Box laden. Bitte laden Sie den tarball entsprechend Ihrer Version von der IPFire-Webseite herunter und laden Sie dann die gesamte <b>fcdsl-(ihre_version).tgz</b> mit dem folgenden Formular hoch.',
'ping disabled' => 'Ping Antwort deaktivieren',
'pkcs12 file password' => 'PKCS12 Datei-Passwort',
'play' => 'Play',
+'please select' => 'Bitte auswählen',
'polfile' => 'Polfile',
'policy' => 'Richtlinie',
'port' => 'Port',
'proxy reports today' => 'Heute',
'proxy reports weekly' => 'Wöchentliche Berichte',
'psk' => 'PSK',
+'public key' => 'Öffentlicher Schlüssel',
'pulse' => 'Puls',
'pulse dial' => 'Pulswahl:',
'qos enter bandwidths' => 'Bitte geben Sie ihre Downstream- und Upstream-Bandbreite an!',
'refresh' => 'Aktualisieren',
'refresh index page while connected' => 'Aktualisere index.cgi Seite während der Verbindung',
'refresh update list' => 'Aktualisiere Update-Liste',
+'register host' => 'Host registrieren',
'registered user rules' => 'Sourcefire VRT Regeln für registrierte Benutzer',
'released' => 'Freigegeben',
'reload' => 'neu laden',
'uptime' => 'Betriebszeit',
'uptime and users' => 'Uptime und Benutzer:',
'uptime load average' => 'Systemlast',
+'url' => 'URL',
'url filter' => 'URL-Filter',
'urlfilter access' => 'Zugriff',
'urlfilter activity detection' => 'Aktivitätserkennung',
'you can only define one roadwarrior connection when using pre-shared key authentication' => 'Sie können nur eine Roadwarrior-Verbindung definieren, wenn die Pre-shared-Schlüsselauthentifizierung verwendet wird.<br/>Entweder haben Sie bereits eine Roadwarrior-Verbindung mit Pre-shared-Schlüsselauthentifizierung, oder Sie versuchen gerade, eine hinzuzufügen.',
'your department' => 'Ihre Abteilung',
'your e-mail' => 'Ihre E-mail Adresse',
+'your version' => 'Lokale Version:',
);
#EOF
'bandwitherror' => 'You cannot change the bandwithsettings, with Qos being enabled. First disable Qos.<p>',
'bandwithsettings' => 'Bandwithsettings',
'basic options' => 'Basic Options',
+'batman version' => 'B.A.T.M.A.N. version',
'beep when ppp connects or disconnects' => 'Beep when IPFire connects or disconnects',
'behind a proxy' => 'Behind a proxy:',
'bewan adsl pci st' => 'TO BE REMOVED',
'create' => 'Create',
'create mask' => 'UNIX rights for new created files',
'create new backup' => 'Create a new backup set',
+'credentials' => 'Credentials',
'credits' => 'Credits',
'crl' => 'Certificate Revocation List',
'cron server' => 'CRON Server',
'free' => 'Free',
'free memory' => 'Free Memory ',
'free swap' => 'Free Swap',
+'freifunk' => 'Freifunk',
+'freifunk community' => 'Freifunk Community',
+'freifunk community settings' => 'Freifunk Community Settings',
+'freifunk configuration' => 'Freifunk Configuration',
+'freifunk enabled' => 'Enable Freifunk',
+'freifunk status' => 'Freifunk Status',
'frequency' => 'Frequency',
'friday' => 'Friday',
'fritzdsl help' => 'To utilise one of Fritz!DSL fcdsl / fcdslsl / fcdsl2 / fcdslusb / fcdslslusb modem, you must upload a package to your IPFire box. Please download the tarball corresponding to your version from the IPFire website and then upload the entire <b>fcdsl-(your_version).tgz</b> using the form below.',
'ping disabled' => 'Disable ping response',
'pkcs12 file password' => 'PKCS12 File Password',
'play' => 'Play',
+'please select' => 'Please select',
'polfile' => 'Polfile',
'policy' => 'Policy',
'port' => 'Port',
'proxy reports today' => 'Today',
'proxy reports weekly' => 'Weekly reports',
'psk' => 'PSK',
+'public key' => 'Public Key',
'pulse' => 'Pulse',
'pulse dial' => 'Pulse dial:',
'qos add subclass' => 'Add subclass',
'refresh' => 'Refresh',
'refresh index page while connected' => 'Refresh index.cgi page while connected',
'refresh update list' => 'Refresh update list',
+'register host' => 'Register host',
'registered user rules' => 'Sourcefire VRT rules for registered users',
'released' => 'Released',
'reload' => 'reload',
'uptime' => 'Uptime',
'uptime and users' => 'Uptime and users:',
'uptime load average' => 'Load average',
+'url' => 'URL',
'url filter' => 'URL Filter',
'urlfilter access' => 'Access',
'urlfilter activity detection' => 'Activity detection',
'you can only define one roadwarrior connection when using pre-shared key authentication' => 'You can only define one Roadwarrior connection when using pre-shared key authentication.<br />Either you already have a Roadwarrior connection with pre-shared key authentication, or you\'re trying to add one now.',
'your department' => 'Your department',
'your e-mail' => 'Your e-mail address',
+'your version' => 'Your version:',
);
#EOF
# Create all directories
for i in addon-lang auth backup ca certs connscheduler crls ddns dhcp dhcpc dns dnsforward \
- ethernet extrahd/bin fwlogs fwhosts firewall isdn key langs logging mac main \
+ ethernet extrahd/bin freifunk fwlogs fwhosts firewall isdn key langs logging mac main \
menu.d modem net-traffic net-traffic/templates nfs optionsfw \
ovpn patches pakfire portfw ppp private proxy/advanced/cre \
proxy/calamaris/bin qos/bin red remote sensors snort time tripwire/report \
certs/index.txt ddns/config ddns/noipsettings ddns/settings ddns/ipcache dhcp/settings \
dhcp/fixleases dhcp/advoptions dhcp/dhcpd.conf.local dns/settings dnsforward/config ethernet/aliases ethernet/settings ethernet/known_nics ethernet/scanned_nics \
ethernet/wireless extrahd/scan extrahd/devices extrahd/partitions extrahd/settings firewall/settings firewall/config firewall/input firewall/outgoing \
- fwhosts/customnetworks fwhosts/customhosts fwhosts/customgroups fwhosts/customservicegrp fwlogs/ipsettings fwlogs/portsettings \
+ freifunk/fastd.conf freifunk/settings fwhosts/customnetworks fwhosts/customhosts fwhosts/customgroups fwhosts/customservicegrp fwlogs/ipsettings fwlogs/portsettings \
isdn/settings mac/settings main/disable_nf_sip main/hosts main/routing main/settings net-traffic/settings optionsfw/settings \
ovpn/ccd.conf ovpn/ccdroute ovpn/ccdroute2 pakfire/settings portfw/config ppp/settings-1 ppp/settings-2 ppp/settings-3 ppp/settings-4 \
ppp/settings-5 ppp/settings proxy/settings proxy/squid.conf proxy/advanced/settings proxy/advanced/cre/enable remote/settings qos/settings qos/classes qos/subclasses qos/level7config qos/portconfig \
ln -sf ../init.d/leds /etc/rc.d/rc3.d/S21leds
ln -sf ../init.d/leds /etc/rc.d/rc6.d/K79leds
ln -sf ../init.d/fireinfo /etc/rc.d/rc3.d/S15fireinfo
+ ln -sf ../init.d/freifunk /etc/rc.d/rc0.d/K78freifunk
+ ln -sf ../init.d/freifunk /etc/rc.d/rc3.d/S22freifunk
+ ln -sf ../init.d/freifunk /etc/rc.d/rc6.d/K78freifunk
ln -sf ../init.d/mountkernfs /etc/rc.d/rcsysinit.d/S00mountkernfs
ln -sf ../init.d/sysctl /etc/rc.d/rcsysinit.d/S01sysctl
ln -sf ../init.d/modules /etc/rc.d/rcsysinit.d/S05modules
--- /dev/null
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/freifunk
+#
+# Description : Freifunk initscript
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+FASTD_CONF="/var/ipfire/freifunk/fastd.conf"
+BATMAN_INTERFACE="bat0"
+
+eval $(/usr/local/bin/readhash /var/ipfire/freifunk/settings)
+
+function freifunk_is_enabled() {
+ [ "${FREIFUNK_ENABLED}" = "on" ]
+}
+
+case "${1}" in
+ start)
+ freifunk_is_enabled || exit 0
+
+ boot_mesg "Starting Freifunk network..."
+
+ # Loading required kernel modules
+ modprobe tun
+
+ loadproc /usr/bin/fastd --daemon --config "${FASTD_CONF}"
+ ;;
+
+ stop)
+ boot_mesg "Stopping Freifunk network..."
+ killproc /usr/bin/fastd
+ ;;
+
+ restart)
+ ${0} stop
+ sleep 1
+ ${0} start
+ ;;
+
+ status)
+ statusproc /usr/bin/fastd
+ ;;
+
+ # Hidden commands used by fastd
+ on-up)
+ # INTERFACE must be set
+ [ -z "${INTERFACE}" ] && exit 2
+
+ # Load batman kernel module
+ modprobe batman-adv
+
+ # Bring up the device
+ ip link set "${INTERFACE}" up
+
+ # Add the VPN device to the BATMAN network and bring it up as well
+ echo "${BATMAN_INTERFACE}" > "/sys/class/net/${INTERFACE}/batman_adv/mesh_iface"
+ ip link set "${BATMAN_INTERFACE}" up
+ ;;
+
+ on-*)
+ # Nothing to do, yet
+ exit 0
+ ;;
+
+ *)
+ echo "Usage: ${0} {start|stop|restart|status}"
+ exit 1
+ ;;
+esac
+
+# End $rc_base/init.d/freifunk
redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \
smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \
setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \
- getconntracktable wirelessclient dnsmasqctrl torctrl
+ getconntracktable wirelessclient dnsmasqctrl torctrl freifunkctrl
SUID_UPDX = updxsetperms
OBJS = $(patsubst %,%.o,$(PROGS) $(SUID_PROGS))
--- /dev/null
+/* This file is part of the IPFire Firewall.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence. See the file COPYING for details.
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include "setuid.h"
+
+int main(int argc, char *argv[]) {
+ if (!(initsetuid()))
+ exit(1);
+
+ if (argc < 2) {
+ fprintf(stderr, "\nNo argument given.\n\nfreifunkctrl (restart|stop)\n\n");
+ exit(1);
+ }
+
+ if (strcmp(argv[1], "restart") == 0) {
+ safe_system("/etc/rc.d/init.d/freifunk restart");
+
+ } else if (strcmp(argv[1], "stop") == 0) {
+ safe_system("/etc/rc.d/init.d/freifunk stop");
+
+ } else {
+ fprintf(stderr, "\nBad argument given.\n\nfreifunkctrl (restart|stop)\n\n");
+ exit(1);
+ }
+
+ return 0;
+}