Make procd manage socat-at-bridge completely
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
Package: socat-at-bridge
|
||||
Version: 1.1.1
|
||||
Version: 1.2.0
|
||||
Depends: libc, socat
|
||||
Source: github/iamromulan/quectel-rgmii-toolkit
|
||||
Maintainer: github.com/iamromulan
|
||||
|
||||
@@ -6,15 +6,42 @@ STOP=10
|
||||
USE_PROCD=1
|
||||
|
||||
start_service() {
|
||||
# Instance 1: create PTY pair
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/sbin/socat-at-bridge.sh
|
||||
procd_set_param respawn
|
||||
procd_set_param command socat -d -d pty,link=/dev/ttySMD11IN,raw,echo=0,group=20,perm=660 \
|
||||
pty,link=/dev/ttySMD11,raw,echo=1,group=20,perm=660
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
|
||||
# Instance 2: forward /dev/smd11 → /dev/ttySMD11IN
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh -c '
|
||||
while [ ! -e /dev/ttySMD11IN ]; do sleep 0.1; done
|
||||
exec cat /dev/smd11 > /dev/ttySMD11IN
|
||||
'
|
||||
procd_set_param file /dev/smd11
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
|
||||
# Instance 3: forward /dev/ttySMD11IN → /dev/smd11
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh -c '
|
||||
while [ ! -e /dev/ttySMD11IN ]; do sleep 0.1; done
|
||||
exec cat /dev/ttySMD11IN > /dev/smd11
|
||||
'
|
||||
procd_set_param file /dev/smd11
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
# procd will handle stopping all instances automatically
|
||||
echo "Stopping socat and cat instances."
|
||||
echo "Stopping socat bridge and cleaning up..."
|
||||
rm -f /dev/ttySMD11 /dev/ttySMD11IN
|
||||
}
|
||||
|
||||
|
||||
@@ -6,15 +6,42 @@ STOP=10
|
||||
USE_PROCD=1
|
||||
|
||||
start_service() {
|
||||
# Instance 1: create PTY pair
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/sbin/socat-at-bridge-smd7.sh
|
||||
procd_set_param respawn
|
||||
procd_set_param command socat -d -d pty,link=/dev/ttySMD7IN,raw,echo=0,group=20,perm=660 \
|
||||
pty,link=/dev/ttySMD7,raw,echo=1,group=20,perm=660
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
|
||||
# Instance 2: forward /dev/smd7 → /dev/ttySMD7IN
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh -c '
|
||||
while [ ! -e /dev/ttySMD7IN ]; do sleep 0.1; done
|
||||
exec cat /dev/smd7 > /dev/ttySMD7IN
|
||||
'
|
||||
procd_set_param file /dev/smd7
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
|
||||
# Instance 3: forward /dev/ttySMD7IN → /dev/smd7
|
||||
procd_open_instance
|
||||
procd_set_param command /bin/sh -c '
|
||||
while [ ! -e /dev/ttySMD7IN ]; do sleep 0.1; done
|
||||
exec cat /dev/ttySMD7IN > /dev/smd7
|
||||
'
|
||||
procd_set_param file /dev/smd7
|
||||
procd_set_param respawn 0 0 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
# procd will handle stopping all instances automatically
|
||||
echo "Stopping socat and cat instances."
|
||||
echo "Stopping socat bridge and cleaning up..."
|
||||
rm -f /dev/ttySMD7 /dev/ttySMD7IN
|
||||
}
|
||||
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/ash
|
||||
|
||||
# Optional logging for debugging
|
||||
LOGFILE="/var/log/socat-bridge-smd7.log"
|
||||
|
||||
# Start socat to create virtual TTY devices
|
||||
echo "$(date): Starting socat..." >> "$LOGFILE"
|
||||
socat -d -d pty,link=/dev/ttySMD7IN,raw,echo=0,group=20,perm=660 \
|
||||
pty,link=/dev/ttySMD7,raw,echo=1,group=20,perm=660 &
|
||||
SOCAT_PID=$!
|
||||
|
||||
# Allow socat to initialize
|
||||
sleep 1
|
||||
|
||||
# Start forwarding data from /dev/smd7 to /dev/ttySMD7IN
|
||||
echo "$(date): Starting forward from /dev/smd7 to /dev/ttySMD7IN..." >> "$LOGFILE"
|
||||
cat /dev/smd7 > /dev/ttySMD7IN &
|
||||
CAT1_PID=$!
|
||||
|
||||
# Start forwarding data from /dev/ttySMD7IN to /dev/smd7
|
||||
echo "$(date): Starting forward from /dev/ttySMD7IN to /dev/smd7..." >> "$LOGFILE"
|
||||
cat /dev/ttySMD7IN > /dev/smd7 &
|
||||
CAT2_PID=$!
|
||||
|
||||
# Handle script termination and cleanup
|
||||
cleanup() {
|
||||
echo "$(date): Cleaning up processes..." >> "$LOGFILE"
|
||||
kill "$SOCAT_PID" "$CAT1_PID" "$CAT2_PID" 2>/dev/null
|
||||
wait
|
||||
echo "$(date): All processes stopped." >> "$LOGFILE"
|
||||
}
|
||||
|
||||
# Trap termination signals to run cleanup
|
||||
trap cleanup INT TERM EXIT
|
||||
|
||||
# Wait for all background processes to finish
|
||||
wait
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/ash
|
||||
|
||||
# Optional logging for debugging
|
||||
LOGFILE="/var/log/socat-bridge.log"
|
||||
|
||||
# Start socat to create virtual TTY devices
|
||||
echo "$(date): Starting socat..." >> "$LOGFILE"
|
||||
socat -d -d pty,link=/dev/ttySMD11IN,raw,echo=0,group=20,perm=660 \
|
||||
pty,link=/dev/ttySMD11,raw,echo=1,group=20,perm=660 &
|
||||
SOCAT_PID=$!
|
||||
|
||||
# Allow socat to initialize
|
||||
sleep 1
|
||||
|
||||
# Start forwarding data from /dev/smd11 to /dev/ttySMD11IN
|
||||
echo "$(date): Starting forward from /dev/smd11 to /dev/ttySMD11IN..." >> "$LOGFILE"
|
||||
cat /dev/smd11 > /dev/ttySMD11IN &
|
||||
CAT1_PID=$!
|
||||
|
||||
# Start forwarding data from /dev/ttySMD11IN to /dev/smd11
|
||||
echo "$(date): Starting forward from /dev/ttySMD11IN to /dev/smd11..." >> "$LOGFILE"
|
||||
cat /dev/ttySMD11IN > /dev/smd11 &
|
||||
CAT2_PID=$!
|
||||
|
||||
# Handle script termination and cleanup
|
||||
cleanup() {
|
||||
echo "$(date): Cleaning up processes..." >> "$LOGFILE"
|
||||
kill "$SOCAT_PID" "$CAT1_PID" "$CAT2_PID" 2>/dev/null
|
||||
wait
|
||||
echo "$(date): All processes stopped." >> "$LOGFILE"
|
||||
}
|
||||
|
||||
# Trap termination signals to run cleanup
|
||||
trap cleanup INT TERM EXIT
|
||||
|
||||
# Wait for all background processes to finish
|
||||
wait
|
||||
Reference in New Issue
Block a user