last convert of existing modules

This commit is contained in:
Matthias Strubel 2015-02-16 11:46:06 +01:00
parent 3e00601221
commit fbc58d6554
14 changed files with 274 additions and 159 deletions

View file

@ -0,0 +1,72 @@
#!/bin/sh
. /opt/piratebox/conf/piratebox.conf
module_enabled="${PIRATEBOX_FOLDER}/bin/piratebox_moduless.sh enabled"
## Reads the following module configuration and
## tries to find out, which interface name is relevant for
## the caller, based upon given parameters.
### 1st Parameter : Caller Type ( service | network )
### 2nd Parameter: Callers's variable
## During processing the folowing module configuration is loaded
## bridge.conf
## network.conf
## hostap.conf
RC=255
RESULT_VALUE=""
check_bridge(){
return $module_enabled "bridge_add" || $module_enabled "bridge_create"
}
do_bridge_check(){
# Only detect correct interface, when own variable not set (default)
if check_bridge ; then
. "${MODULE_CONFIG}\bridge.conf"
RESULT_VALUE="$BRIDGE_NAME"
RC=0
fi
return $RC
}
test_for_interface(){
local i_type="$1"
local i_var="$2"
if [ -n "$i_var" ] ; then
RESULT_VALUE="$i_var"
RC=0
return 0
fi
if ! do_bridge_check ; then
if [ "i_type" = "service" ] ; then
. "${MODULE_CONFIG}\network.conf"
test_for_interface "network" "$IFCONFIG_INTERFACE"
fi
if [ "i_type" = "network" ] ; then
. "${MODULE_CONFIG}\hostap.conf"
if $module_enabled "hostapd" && [ -n "$HOSTAP_INTERFACE" ] ; then
RESULT_VALUE="$HOSTAP_INTERFACE"
RC=0
fi
fi
}
test_for_interface "$1" "$2"
if [ "$RC" = "0" ] ; then
echo $RESULT_VALUE
else
echo "ERROR: No valid interface could be found"
fi
exit $RC

View file

@ -6,7 +6,7 @@
PIRATEBOX_CONFIG="/opt/piratebox/conf/piratebox.conf"
##Modules for Creating Wifi and IP setting
DEFAULT_MODULES="hostap"
DEFAULT_MODULES="hostap network "
##Modules for housekeeping and so on
DEFAULT_MODULES="${DEFAULT_MODULES} cleanup_tmp_folder generate_config_hosts generate_json_config"
##Modules for serving IPs"

View file

@ -1,98 +0,0 @@
#!/bin/bash
# Author: Matthias Strubel (c) 2011-2014 GPL-3
# Script for setting up the wlan interface
# Parameter 1 i used for the config file providing the parameters
# IP-Adress IPv4 + IPv6
# Netmask
# Interface
PIRATEBOX_CONFIG="/opt/piratebox/conf/piratebox.conf"
# Load configfile
if [ -z $1 ] then
echo "Usage piratebox_setup_wlan.sh <start|stop>"
exit 1
fi
. $PIRATEBOX_CONFIG
. "${MODULE_CONFIG}"/wifi.conf
. "${MODULE_CONFIG}"/
### Check config
if [ -z $INTERFACE ]; then
echo "Please define i.e. "
echo " INTERFACE=wlan0 "
exit 1
fi
if [ -z $IP ] ; then
echo "Please define i.e. "
echo " IP=192.268.46.2 "
exit 1
fi
if [ -z $NETMASK ] ; then
echo "Please define i.e. "
echo " NETMASK=255.255.255.0 "
exit 1
fi
### Do the stuff
if [ $2 = "start" ] ; then
echo "Bringing up wifi interface $INTERFACE "
ifconfig $INTERFACE up
if [ $? -ne 0 ] ; then
echo "..failed ";
exit 1
fi
echo "Setting up $INTERFACE"
ifconfig $INTERFACE $IP netmask $NETMASK
if [ $? -ne 0 ] ; then
echo "..failed ";
exit 1
fi
if [ $IPV6_ENABLE = "yes" ] ; then
echo "Setting up IPv6 stuff"
IPv6="$IPV6_IP"/"$IPV6_MASK"
echo " $INTERFACE -->$IPv6<--"
ifconfig $INTERFACE add $IPv6
#That ip is a local IP only
ip addr change $IPv6 dev $INTERFACE scope link
fi
. $NODE_CONFIG
if [ "$NODE_CONFIG_ACTIVE" == "yes" ] && [ "$NODE_IPV6_SET_IP" == "yes" ]; then
echo "Setting up IPv6 Mesh-Node IP on interface $NODE_INTERFACE"
ifconfig $NODE_INTERFACE add $NODE_IPV6_IP"$NODE_IPV6_MASK"
fi
elif [ $2 = "stop" ] ; then
echo "Stopping wifi interface $INTERFACE "
ifconfig $INTERFACE down
if [ "$NODE_CONFIG_ACTIVE" == "yes" ] && [ "$NODE_IPV6_SET_IP" == "yes" ] ; then
echo "Removing the Node-Address again..."
ifconfig $NODE_INTERFACE del $NODE_IPV6_IP"$NODE_IPV6_MASK"
fi
fi

View file

@ -1,5 +1,5 @@
#Brdige add interfacce (setr yes to enable bridging)
DO_BRIDGE="no"
ADD_INTERFACES_TO_BRIDGE="wlan0"
ADD_TO_BRIDGE="br-lan"
## you can add multiple existing interfaces, if space separated. !
## if empty, hostap interface is used
BRIDGE_PHY_INTERFACES=""
BRIDGE_NAME="br0"

View file

@ -1,6 +1,7 @@
# On which interface DNSMASQ should listen. -i is the parameter for dnsmasq
# Make it empty to disable
DNSMASQ_INTERFACE="wlan0"
# if empty, a detection starts, on which interface it should run
# if set to "IGNORE" , the limitation is not generated
DNSMASQ_INTERFACE=""
#DHCP LEASE Start
START_LEASE=10

View file

@ -1,5 +1,5 @@
# Configuration for hostap
HOSTAP_INTERFACE="$AP_INTERFACE"
HOSTAP_INTERFACE="wlan0"
# Wifi channel
HOSTAP_CHANNEL=1

View file

@ -1,8 +1,5 @@
#Do network config
DO_IFCONFIG="yes"
# Name of the wlan interface
IFCONFIG_INTERFACE="wlan0"
# Name of the wlan interface, if empty it will detect
IFCONFIG_INTERFACE=""
#Network
NET=192.168.77

View file

@ -1,5 +1,5 @@
## Work on the same interface
RADVD_INTERFACE="$DNSMASQ_INTERFACE"
RADVD_INTERFACE=""
RADVD_PID="${PIRATEBOX_FOLDER}/tmp/radvd.pid"
RADVD_CONFIG_FILE="${PIRATEBOX_FOLDER}/conf/generated/radvd.conf"

View file

@ -62,56 +62,13 @@ case "$1" in
if [ "$DO_IFCONFIG" = "yes" ] ; then
echo " Setting up wlan"
#Setting up WLAN Interface
piratebox_setup_wlan.sh $CONF start
if [ $? -ne 0 ] ; then
echo "failed setting up Interface"
exit 255
fi
fi
#BRIDGE
if [ "$DO_BRIDGE" = "yes" ] ; then
echo "Adding $INTERFACE to bridge $BRIDGE // brctl addif $BRIDGE $INTERFACE "
sleep 1
BR_CMD="brctl addif $BRIDGE $INTERFACE"
( $BR_CMD ; )
if [ $? -ne 0 ] ; then
echo "failed :( "
fi
fi
fi
;;
stop)
echo "Stopping script piratebox"
if [ "$DO_IFCONFIG" = "yes" ] ; then
piratebox_setup_wlan.sh $CONF stop
fi
#BRIDGE
if [ "$DO_BRIDGE" = "yes" ] ; then
echo "Remove $INTERFACE to bridge $BRIDGE // brctl addif
$BRIDGE $INTERFACE "
sleep 1
BR_CMD="brctl delif $BRIDGE $INTERFACE"
( $BR_CMD ; )
if [ $? -ne 0 ] ; then
echo "failed :( "
fi
fi
;;
*)

View file

@ -0,0 +1,67 @@
#!/bin/sh
## Addes one or more interfaces to an existing bridge.
## uses bridge config
## To create a new bridge enable "bridge_create" module
## IF BRIDGE_PHY_INTERFACES is empty, hostap interface is used.
MODULE_LIST="$MODULE_LIST bridge_add_wifi"
bridge_add_wifi_myself="bridge_add_wifi"
bridge_add_wifi_start_order=99
bridge_add_wifi_stop_order=01
bridge_add_wifi_needed_config="bridge.conf hostap.conf"
bridge_add_wifi_crucial="no"
func_bridge_add_wifi_start(){
#Start here the bridge_add_wifi i.e.
if [ -z "$BRIDGE_PHY_INTERFACES" ] ; then
BRIDGE_PHY_INTERFACES="$HOSTAP_INTERFACE"
fi
local high_rc=0
local RC=0
echo ""
for iface in $BRIDGE_PHY_INTERFACES ; do
echo ".. adding $iface to $BRIDGE_NAME"
local BR_CMD="brctl addif $BRIDGE_NAME $iface"
( $BR_CMD ; )
local RC=$?
if [ "$RC" != "0" ] ; then
high_rc=$RC
fi
done
RC=$high_rc
_check_rc_ "$bridge_add_wifi_myself" "$RC" "$bridge_add_wifi_crucial"
return $RC
}
func_bridge_add_wifi_stop(){
if [ -z "$BRIDGE_PHY_INTERFACES" ] ; then
BRIDGE_PHY_INTERFACES="$HOSTAP_INTERFACE"
fi
local high_rc=0
local RC=0
echo ""
for iface in $BRIDGE_PHY_INTERFACES ; do
echo ".. removing $iface from $BRIDGE_NAME"
local BR_CMD="brctl delif $BRIDGE_NAME $iface"
( $BR_CMD ; )
local RC=$?
if [ "$RC" != "0" ] ; then
high_rc=$RC
fi
done
RC=$high_rc
_check_rc_ "$bridge_add_wifi_myself" "$RC"
return $RC
}
func_bridge_add_wifi_get_config(){
echo $bridge_add_wifi_needed_config
}
func_bridge_add_wifi_get_start_order(){
echo $bridge_add_wifi_start_order
}
func_bridge_add_wifi_get_stop_order(){
echo $bridge_add_wifi_stop_order
}

View file

@ -0,0 +1,35 @@
#!/bin/sh
MODULE_LIST="$MODULE_LIST bridge_create"
bridge_create_myself="bridge_create"
bridge_create_start_order=24
bridge_create_stop_order=73
bridge_create_needed_config="bridge.conf"
bridge_create_crucial="yes"
func_bridge_create_start(){
#Start here the bridge_create i.e.
brctl addbr $BRIDGE_NAME
local RC=$?
_check_rc_ "$bridge_create_myself" "$RC" "$bridge_create_crucial"
return $RC
}
func_bridge_create_stop(){
brctl delbr $BRIDGE_NAME
local RC=$?
_check_rc_ "$bridge_create_myself" "$RC"
return $RC
}
func_bridge_create_get_config(){
echo $bridge_create_needed_config
}
func_bridge_create_get_start_order(){
echo $bridge_create_start_order
}
func_bridge_create_get_stop_order(){
echo $bridge_create_stop_order
}

View file

@ -5,18 +5,28 @@ MODULE_LIST="$MODULE_LIST dnsmasq"
dnsmasq_myself="dnsmasq"
dnsmasq_start_order=31
dnsmasq_stop_order=70
dnsmasq_needed_config="network.conf config_generation.conf dnsmasq.conf"
dnsmasq_needed_config="bridge.conf network.conf config_generation.conf dnsmasq.conf"
dnsmasq_crucial="no"
func_dnsmasq_start(){
#Start here the dnsmasq i.e.
local interface=$( $PIRATEBOX_FOLDER/bin/find_interface_name.sh service "$DNSMASQ_INTERFACE" )
if [ "$?" != "0" ] ; then
echo ""
echo "... $interface"
echo ""
_check_rc_ "$dnsmasq_myself" 255
return 255
fi
# pidfile is written by dnsmasq
# Command Line for DNSMASQ, use extra config file generated from command above
[ "$DNSMASQ_GENERATE_CONF" = "yes" ] && \
func_dnsmasq_generate_config "$NET" "$IP_SHORT" \
"$START_LEASE" "$END_LEASE" \
"$LEASE_DURATION" "$DNSMASQ_INTERFACE"
"$LEASE_DURATION" "$interface"
local CMD_DNSMASQ="-x $DNSMASQ_PIDFILE -C $DNSMASQ_CONF "
start-stop-daemon -S -q -x /usr/sbin/dnsmasq -- $CMD_DNSMASQ
@ -54,7 +64,7 @@ func_dnsmasq_generate_config (){
cat $DNSMASQ_DEFAULT_CONF > $DNSMASQ_CONF
#Add interface line if filled
[ -n $dnsmasq_interface ] && echo "interface=$dnsmasq_interface" >> $DNSMASQ_CONF
[ "$dnsmasq_interface" != "IGNORE" ] && echo "interface=$dnsmasq_interface" >> $DNSMASQ_CONF
local lease_line="$net.$lease_start,$net.$lease_end,$lease_time"
echo "dhcp-range=$lease_line" >> $DNSMASQ_CONF

View file

@ -0,0 +1,59 @@
#!/bin/sh
MODULE_LIST="$MODULE_LIST network"
network_myself="network"
network_start_order=24
network_stop_order=71
network_needed_config="network.conf network_ipv6.conf"
network_crucial="yes"
func_network_start(){
local RC=0
local interface=$( $PIRATEBOX_FOLDER/bin/find_interface_name.sh service "$IFCONFIG_INTERFACE" )
if [ "$?" != "0" ] ; then
echo ""
echo "... $interface"
echo ""
_check_rc_ "$network_myself" 255
return 255
fi
ifconfig $interface $IP netmask $NETMASK up
RC=$?
[ $RC -ne 0 ] && _check_rc_ "$network_myself" "$RC" "$network_crucial" && return $RC
if [ $IPV6_ENABLE = "yes" ] ; then
local IPv6="$IPV6_IP"/"$IPV6_MASK"
ifconfig $interface add $IPv6
[ $RC -ne 0 ] && _check_rc_ "$network_myself" "$RC" "$network_crucial" && return $RC
fi
_check_rc_ "$network_myself" "$RC" "$network_crucial"
return $RC
}
func_network_stop(){
local interface=$( $PIRATEBOX_FOLDER/bin/find_interface_name.sh service "$IFCONFIG_INTERFACE" )
if [ "$?" != "0" ] ; then
echo ""
echo "... $interface"
echo ""
_check_rc_ "$network_myself" 255
return 255
fi
ifconfig $interface down
local RC=$?
_check_rc_ "$network_myself" "$RC"
return $RC
}
func_network_get_config(){
echo $network_needed_config
}
func_network_get_start_order(){
echo $network_start_order
}
func_network_get_stop_order(){
echo $network_stop_order
}

View file

@ -14,8 +14,23 @@ radvd_crucial="no"
func_radvd_start(){
#Start here the radvd i.e.
local iface="$RADVD_INTERFACE"
# We additional try to use the dnsmasq interface, if set.
if [ -z "$iface" ] ; then
iface="$DNSMASQ_INTERFACE"
fi
local interface=$( $PIRATEBOX_FOLDER/bin/find_interface_name.sh service "$iface" )
if [ "$?" != "0" ] ; then
echo ""
echo "... $interface"
echo ""
_check_rc_ "$radvd_myself" 255
return 255
fi
func_radvd_generate_configuration "$IPV6_PREFIX" "$IPV6_MASK" "$RADVD_INTERFACE"
func_radvd_generate_configuration "$IPV6_PREFIX" "$IPV6_MASK" "$interface"
start-stop-daemon -S -q -x radvd -- -p $RADVD_PID -C $RADVD_CONFIG_FILE