create_ap

create a nat-ed wifi ap
git clone git://git.2f30.org/create_ap.git
Log | Files | Refs | LICENSE

commit d0a013eaf89e8e1989edaa354b959bb23660dd92
parent d55adb7d501a8b5b23b8653c2ac657837f19c4ee
Author: oblique <psyberbits@gmail.com>
Date:   Wed Mar 25 01:21:01 +0200

Check every 2 seconds if haveged is needed

Diffstat:
README.md | 1+
create_ap | 50++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 43 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md @@ -13,6 +13,7 @@ ### General * bash (to run this script) * util-linux (for getopt) +* procps or procps-ng * hostapd * iproute2 * iw diff --git a/create_ap b/create_ap @@ -3,6 +3,7 @@ # general dependencies: # bash (to run this script) # util-linux (for getopt) +# procps or procps-ng # hostapd # iproute2 # iw @@ -40,6 +41,7 @@ usage() { echo " --freq-band <GHz> Set frequency band. Valid inputs: 2.4, 5 (default: 2.4)" echo " --driver Choose your WiFi adapter driver (default: nl80211)" echo " --no-virt Do not create virtual interface" + echo " --no-haveged Do not run \`haveged' automatically when needed" echo " --fix-unmanaged If NetworkManager shows your interface as unmanaged after you" echo " close create_ap, then use this option to switch your interface" echo " back to managed" @@ -267,6 +269,29 @@ get_new_macaddr() { echo $NEWMAC } +# start haveged when needed +haveged_watchdog() { + local show_warn=0 + while :; do + if [[ $(cat /proc/sys/kernel/random/entropy_avail) -lt 1000 ]]; then + if ! which haveged > /dev/null 2>&1; then + if [[ $show_warn -eq 0 ]]; then + echo "WARN: Low entropy detected. We recommend you to install \`haveged'" + show_warn=1 + fi + elif ! pidof haveged > /dev/null 2>&1; then + echo "Low entropy detected, starting haveged" + # boost low-entropy + haveged -w 1024 -F > /dev/null 2>&1 & + local haveged_pid=$! + echo $haveged_pid > $CONFDIR/haveged.pid + wait $haveged_pid + fi + fi + sleep 2 + done +} + NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf NM_OLDER_VERSION=1 @@ -422,6 +447,7 @@ NEW_MACADDR= DAEMONIZE=0 LIST_RUNNING=0 STOP_ID= +NO_HAVEGED=0 CONFDIR= WIFI_IFACE= @@ -434,10 +460,15 @@ OLD_MACADDR= IP_ADDRS= ROUTE_ADDRS= +HAVEGED_WATCHDOG_PID= + _cleanup() { trap "" SIGINT trap "" SIGUSR1 + # kill haveged_watchdog + [[ -n "$HAVEGED_WATCHDOG_PID" ]] && kill $HAVEGED_WATCHDOG_PID + # exiting for x in $CONFDIR/*.pid; do # even if the $CONFDIR is empty, the for loop will assign @@ -574,7 +605,7 @@ trap "clean_exit" SIGINT trap "clean_exit" SIGUSR1 ARGS=( "$@" ) -GETOPT_ARGS=$(getopt -o hc:w:g:dnm: -l "help","hidden","ieee80211n","ht_capab:","driver:","no-virt","fix-unmanaged","country:","freq-band:","mac:","daemon","stop:","list","version" -n $(basename $0) -- "$@") +GETOPT_ARGS=$(getopt -o hc:w:g:dnm: -l "help","hidden","ieee80211n","ht_capab:","driver:","no-virt","fix-unmanaged","country:","freq-band:","mac:","daemon","stop:","list","version","no-haveged" -n $(basename $0) -- "$@") [[ $? -ne 0 ]] && exit 1 eval set -- "$GETOPT_ARGS" @@ -671,6 +702,10 @@ while :; do shift LIST_RUNNING=1 ;; + --no-haveged) + shift + NO_HAVEGED=1 + ;; --) shift break @@ -1122,13 +1157,6 @@ else echo "No Internet sharing" fi -# boost low-entropy -if [[ $(cat /proc/sys/kernel/random/entropy_avail) -lt 1000 ]]; then - which haveged > /dev/null 2>&1 && { - haveged -w 1024 -p $CONFDIR/haveged.pid - } -fi - # start dns + dhcp server if [[ "$SHARE_METHOD" != "bridge" ]]; then iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT || die @@ -1144,6 +1172,12 @@ echo "hostapd command-line interface: hostapd_cli -p $CONFDIR/hostapd_ctrl" trap "clean_exit" SIGINT trap "clean_exit" SIGUSR1 +if [[ $NO_HAVEGED -eq 0 ]]; then + haveged_watchdog & + HAVEGED_WATCHDOG_PID=$! +fi + +# start hostapd hostapd $CONFDIR/hostapd.conf & HOSTAPD_PID=$! echo $HOSTAPD_PID > $CONFDIR/hostapd.pid