Skip to content

Commit

Permalink
Add bridged-routed toggle to webgui
Browse files Browse the repository at this point in the history
  • Loading branch information
Taikuh committed Mar 10, 2020
1 parent 8bda81a commit 8823c06
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 13 deletions.
23 changes: 22 additions & 1 deletion includes/hostapd.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ function DisplayHostAPDConfig()
$status->addMessage('Attempting to start hotspot', 'info');
if ($arrHostapdConf['WifiAPEnable'] == 1) {
exec('sudo /etc/raspap/hostapd/servicestart.sh --interface uap0 --seconds 3', $return);
} elseif ($arrHostapdConf['BridgedEnable'] == 1) {
exec('sudo /etc/raspap/hostapd/servicestart.sh --interface br0 --seconds 3', $return);
} else {
exec('sudo /etc/raspap/hostapd/servicestart.sh --seconds 3', $return);
}
Expand Down Expand Up @@ -120,6 +122,18 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
}
}

// Check for Bridged AP mode checkbox
$bridgedEnable = 0;
if ($arrHostapdConf['BridgedEnable'] == 0) {
if (isset($_POST['bridgedEnable'])) {
$bridgedEnable = 1;
}
} else {
if (isset($_POST['bridgedEnable'])) {
$bridgedEnable = 1;
}
}

// Check for Logfile output checkbox
$logEnable = 0;
if ($arrHostapdConf['LogEnable'] == 0) {
Expand All @@ -140,6 +154,7 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
$cfg = [];
$cfg['LogEnable'] = $logEnable;
$cfg['WifiAPEnable'] = $wifiAPEnable;
$cfg['BridgedEnable'] = $bridgedEnable;
$cfg['WifiManaged'] = RASPI_WIFI_CLIENT_INTERFACE;
write_php_ini($cfg, '/etc/raspap/hostapd.ini');

Expand Down Expand Up @@ -228,6 +243,9 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
$config.= 'interface=uap0'.PHP_EOL;
} else {
$config.= 'interface='.$_POST['interface'].PHP_EOL;
if ($bridgedEnable == 1) {
$config.= 'bridge=br0'.PHP_EOL;
}
}
$config.= 'wpa='.$_POST['wpa'].PHP_EOL;
$config.= 'wpa_pairwise='.$_POST['wpa_pairwise'].PHP_EOL;
Expand Down Expand Up @@ -288,7 +306,10 @@ function SaveHostAPDConfig($wpa_array, $enc_types, $modes, $interfaces, $status)
$config[] = 'slaac private';
$config[] = 'nohook lookup-hostname';

if ($wifiAPEnable == 1) {
if ($bridgedEnable == 1) {
$config[] = 'denyinterfaces eth0 wlan0';
$config[] = 'interface br0';
} elseif ($wifiAPEnable == 1) {
// Enable uap0 configuration in dhcpcd for Wifi client AP mode
$intConfig = parse_ini_file(RASPI_CONFIG_NETWORKING.'/uap0.ini', false, INI_SCANNER_RAW);
$ip_address = ($intConfig['ip_address'] == '') ? '192.168.50.1/24' : $intConfig['ip_address'];
Expand Down
9 changes: 6 additions & 3 deletions installers/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ function download_latest_files() {
fi

install_log "Cloning latest files from github"
git clone --single-branch $branch --depth 1 $git_source_url /tmp/raspap-webgui || install_error "Unable to download files from github"
git clone --branch $branch --depth 1 $git_source_url /tmp/raspap-webgui || install_error "Unable to download files from github"

sudo mv /tmp/raspap-webgui $webroot_dir || install_error "Unable to move raspap-webgui to web root"
}
Expand Down Expand Up @@ -220,8 +220,11 @@ function check_for_old_configs() {
fi

for file in /etc/systemd/network/raspap-*.net*; do
sudo cp "$file" "${raspap_dir}/backups/${file}.`date +%F-%R`"
sudo ln -sf "${raspap_dir}/backups/${file}.`date +%F-%R`" "${raspap_dir}/backups/${file}"
if [-f "${file}" ]; then
filename = $(basename $file)
sudo cp "$file" "${raspap_dir}/backups/${filename}.`date +%F-%R`"
sudo ln -sf "${raspap_dir}/backups/${filename}.`date +%F-%R`" "${raspap_dir}/backups/${filename}"
fi
done
}

Expand Down
44 changes: 35 additions & 9 deletions installers/servicestart.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=raspap
DESC="Service control for RaspAP"
CONFIGFILE="/etc/raspap/hostapd.ini"
DAEMONPATH="/lib/systemd/system/raspap.service"

positional=()
while [[ $# -gt 0 ]]
Expand All @@ -28,25 +29,50 @@ done
set -- "${positional[@]}"

echo "Stopping network services..."
systemctl stop systemd-networkd
systemctl stop hostapd.service
systemctl stop dnsmasq.service
systemctl stop dhcpcd.service

if [ -f "$DAEMONPATH" ]; then
echo "Changing RaspAP Daemon --interface to $interface"
sed -i "s/\(--interface \)[[:alnum:]]*/\1$interface/" "$DAEMONPATH"
fi

if [ -r "$CONFIGFILE" ]; then
declare -A config
while IFS=" = " read -r key value; do
config["$key"]="$value"
done < "$CONFIGFILE"

if [ "${config[WifiAPEnable]}" = 1 ]; then
if [ "${interface}" = "uap0" ]; then
echo "Removing uap0 interface..."
iw dev uap0 del

echo "Adding uap0 interface to ${config[WifiManaged]}"
iw dev ${config[WifiManaged]} interface add uap0 type __ap
# Bring up uap0 interface
ifconfig uap0 up
if [ "${config[BridgedEnable]}" = 1 ]; then
if [ "${interface}" = "br0" ]; then
echo "Restarting eth0 interface..."
ip link set down eth0
ip link set up eth0

echo "Enabling systemd-networkd"
systemctl start systemd-networkd
systemctl enable systemd-networkd
fi
else
echo "Disabling systemd-networkd"
systemctl disable systemd-networkd

echo "Removing br0 interface..."
ip link set down br0
ip link del dev br0

if [ "${config[WifiAPEnable]}" = 1 ]; then
if [ "${interface}" = "uap0" ]; then
echo "Removing uap0 interface..."
iw dev uap0 del

echo "Adding uap0 interface to ${config[WifiManaged]}"
iw dev ${config[WifiManaged]} interface add uap0 type __ap
# Bring up uap0 interface
ifconfig uap0 up
fi
fi
fi
fi
Expand Down
3 changes: 3 additions & 0 deletions locale/en_US/LC_MESSAGES/messages.po
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,9 @@ msgstr "Logfile output"
msgid "WiFi client AP mode"
msgstr "WiFi client AP mode"

msgid "Bridged AP mode"
msgstr "Bridged AP mode"

msgid "Hide SSID in broadcast"
msgstr "Hide SSID in broadcast"

Expand Down
9 changes: 9 additions & 0 deletions templates/hostapd.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,15 @@
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-2">
<div class="custom-control custom-switch">
<?php $checked = $arrHostapdConf['BridgedEnable'] == 1 ? 'checked="checked"' : '' ?>
<input class="custom-control-input" id="chxbridgedenable" name="bridgedEnable" type="checkbox" value="1" <?php echo $checked ?> />
<label class="custom-control-label" for="chxbridgedenable"><?php echo _("Bridged AP mode"); ?></label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-2">
<div class="custom-control custom-switch">
Expand Down

0 comments on commit 8823c06

Please sign in to comment.