чување 1cdd34d59aa1974c6309d4137e4a3826d33ae69a
родитељ f7fe5a52ff99bda432ff73e8d47446c5f8e673e0
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Thu, 4 May 2023 13:47:14 +0200
Fix wpa_supplicant + sdhcp; rollback inotifywait, use plain execution of sdhcp
service
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 3, додавања: 115(+), брисања: 49(-)
diff --git a/svc.d/avail/sdhcp b/svc.d/avail/sdhcp
@@ -5,65 +5,55 @@ svcbin=/bin/sdhcp
. /bin/svc.d/default/${svc}
-PID=$(pidof -o %PPID ${svcbin})
-
+logger -it sdhcp "Called with arguments: {$@}"
+if [ "$1" = "wlan0" ]; then
+ case $2 in
+ CONNECTED)
+ #${svcbin} ${PARAMS} >/dev/null 2>&1 &
+ ${svcbin} ${PARAMS} &
+ exit 0;;
+ DISCONNECTED)
+ exit 0;;
+ *) ;;
+ esac
+fi
+PID=$(pgrep -f ${svcbin})
case $1 in
- -e) if [ -z "${PID}" ]; then
+ -e) if [ -z "${FROMSELF}" ] && [ "${IFACE}" = "wlan0" ]; then
+ exit 1
+ elif [ -z "${PID}" ]; then
exit 2
fi;;
- -s) $0 -e
- case $? in
+ -s) if [ "${IFACE}" = "wlan0" ]; then
+ exit 1
+ fi
+ env FROMSELF=1 $0 -e
+ errno=$?
+ case ${errno} in
0) exit 1;;
- 2) case "${PARAMS}" in
- *wlan*) if [ -z "$(find "${RUNDIR}"/ -name \
- wpa_supplicant.up)" ]
- then
- while [ -z "$(inotifywait -r ${RUNDIR} \
- 2>/dev/null \
- | grep wpa_supplicant.up)" ]
- do done
- fi;;
- *) if [ -n "${STARTDELAY}" ]; then
- /bin/usleep "${STARTDELAY}"
- fi;;
- esac
- ${svcbin} ${PARAMS} >/dev/null 2>&1 &
- if [ -n "${RUNDIR}" ] && [ -n "${PIDFILE}" ] \
- && [ -z "$(find "${RUNDIR}"/ -name ${PIDFILE##*/})" ]
- then
- while [ -z "$(inotifywait -e create,modify \
- ${RUNDIR} 2>/dev/null \
- | grep ${PIDFILE##*/})" ]; do done
- elif [ -n "${STARTDELAY}" ]; then
+ 2) ${svcbin} ${PARAMS} >/dev/null 2>&1 &
+ if [ -n "${STARTDELAY}" ]; then
/bin/usleep "${STARTDELAY}"
fi
- $0 -e
- errno=$?
- if [ -n "${RUNDIR}" ]; then
- case $errno in
- 0) :> "${RUNDIR}/${SERVICE}.up";;
- *) rm "${RUNDIR}/${SERVICE}.up";;
- esac
- fi;;
- *) return $?;;
+ env FROMSELF=1 $0 -e;;
+ *) exit ${errno};;
esac;;
- -k) $0 -e
+ -k) env FROMSELF=1 $0 -e
case $? in
2) exit 1;;
0) kill "${PID}" >/dev/null 2>&1
- if [ -n "$(pidof -o %PPID "${svcbin}" \
- 2>/dev/null)" ]
+ if [ -n "$(pgrep -f "${svcbin}" 2>/dev/null)" ]
then
- pkill -9 -f "${BIN}" >/dev/null 2>&1 \
+ pkill -9 -f "${svcbin}" >/dev/null 2>&1 \
|| exit 2
fi
- if [ -n "${RUNDIR}" ]; then
- rm "${RUNDIR}/${SERVICE}.up"
- fi
rm "${PIDFILE}" 2>/dev/null;;
*) exit 1;;
esac;;
- -r) $0 -k
+ -r) if [ "${IFACE}" = "wlan0" ]; then
+ exit 1
+ fi
+ $0 -k
$0 -s;;
*) exit 2;;
esac
diff --git a/svc.d/avail/wpa_supplicant b/svc.d/avail/wpa_supplicant
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+svc=wpa_supplicant
+svcbin=/sucks/bin/wpa_supplicant
+wpa_cli=/sucks/bin/wpa_cli
+
+[ -e "/bin/svc.d/default/${svc}" ] && . "/bin/svc.d/default/${svc}"
+
+[ -n "${RUNDIR}" ] && mkdir -p "${RUNDIR}"
+
+PIDLOOPDELAY=500000
+PID=$(pgrep -f ${svcbin})
+case $1 in
+ -e) if [ -z "${PID}" ]; then
+ exit 2
+ fi;;
+ -s) $0 -e
+ case $? in
+ 0) return 1;;
+ 2)
+ logger -it wpa_supplicant "Executing ${svcbin} ${PARAMS}"
+ ${svcbin} ${PARAMS} >/dev/null 2>&1 &
+# if [ -n "${RUNDIR}" ] && [ -n "${PIDFILE}" ] \
+# && [ ! -e "${PIDFILE}" ]
+# then
+# while [ ! -e "${PIDFILE}" ]; do
+# /bin/usleep ${PIDLOOPDELAY}
+# done
+# elif [ -n "${STARTDELAY}" ]; then
+# /bin/usleep "${STARTDELAY}"
+# fi
+ $0 -e
+ errno=$?
+ # logger -it wpa_supplicant "Executing $0 -e (errno: $errno)"
+ if [ -n "${RUNDIR}" ]; then
+ case $errno in
+ 0) :> "${RUNDIR}/${SERVICE}.up";;
+ *) rm "${RUNDIR}/${SERVICE}.up" \
+ 2>/dev/null;;
+ esac
+ fi
+# logger -it wpa_supplicant "Executing ${wpa_cli} -i ${IFACE} -a ${0%/*}/sdhcp -B"
+# logger -it wpa_supplicant "Exists ${0%/*}/sdhcp? $(if [ -e ${0%/*}/sdhcp ]; then echo yes; else echo no; fi)"
+ logger -it wpa_supplicant "Executing ${0%/*}/sdhcp ${IFACE} CONNECTED"
+ ${0%/*}/sdhcp "${IFACE}" CONNECTED
+ # Run sdhcp when connected; not reliable in my testing
+ #${wpa_cli} -i "${IFACE}" -a ${0%/*}/sdhcp -B
+ ;;
+ *) return $?;;
+ esac;;
+ -k) $0 -e
+ case $? in
+ 2) return 1;;
+ 0) pkill -f "${svcbin}" >/dev/null 2>&1
+ pkill -f ${wpa_cli} -i "${IFACE}" >/dev/null 2>&1
+ if [ -n "$(pgrep -f "${svcbin}" 2>/dev/null)" ]
+ then
+ pkill -9 -f "${svcbin}" >/dev/null 2>&1 \
+ || exit 2
+ fi
+ if [ -n "$(pgrep -f ${wpa_cli} -i "${IFACE}" \
+ 2>/dev/null)" ]
+ then
+ pkill -9 -f ${wpa_cli} -i "${IFACE}" \
+ >/dev/null 2>&1 || exit 2
+ fi
+ rm "${PIDFILE}"
+ if [ -n "${RUNDIR}" ]; then
+ rm "${RUNDIR}/${SERVICE}.up"
+ fi;;
+ *) return $?;;
+ esac;;
+ -r) $0 -k
+ $0 -s;;
+ *) exit 2;;
+esac
diff --git a/svc.d/bare.sh b/svc.d/bare.sh
@@ -25,9 +25,9 @@ do
fi
done
[ -z "${BIN}" ] && exit 2
+[ -n "${RUNDIR}" ] && mkdir -p "${RUNDIR}"
-PID=$(pidof -o %PPID ${BIN})
-
+PID=$(pgrep -f ${BIN})
case $1 in
-e) if [ -z "${PID}" ]; then
exit 2
@@ -51,8 +51,9 @@ case $1 in
errno=$?
if [ -n "${RUNDIR}" ]; then
case $errno in
- 0) :> "${RUNDIR}/${SERVICE}.up";;
- *) rm "${RUNDIR}/${SERVICE}.up";;
+ 0) :> "${RUNDIR}/${SERVICE}.up";;
+ *) rm "${RUNDIR}/${SERVICE}.up" \
+ 2>/dev/null;;
esac
fi;;
*) return $?;;
@@ -61,8 +62,7 @@ case $1 in
case $? in
2) return 1;;
0) pkill -f "${BIN}" >/dev/null 2>&1
- if [ -n "$(pidof -o %PPID "${BIN}" \
- 2>/dev/null)" ]
+ if [ -n "$(pgrep -f "${BIN}" 2>/dev/null)" ]
then
pkill -9 -f "${BIN}" >/dev/null 2>&1 \
|| exit 2