4 changed files with 26 additions and 130 deletions
@ -1,93 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
ACTION=$1 |
|||
DEVNAME=$2 |
|||
|
|||
SOCKET_PATH="/tmp/usb-Sono-Socket.socket" |
|||
LOG_FILE="/tmp/tmpDvd.log" |
|||
DEBOUNCE_FILE="/tmp/dvd_debounce_$(echo $DEVNAME | tr '/' '-')" |
|||
DEBOUNCE_TIME=10 # seconds |
|||
|
|||
current_time=$(date +%s) |
|||
|
|||
# Function to log messages |
|||
log_message() { |
|||
local message=$1 |
|||
echo $message | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo $message >> $LOG_FILE |
|||
} |
|||
|
|||
# Function to get the size of the DVD |
|||
get_dvd_size() { |
|||
udisksctl info -b $DEVNAME | grep 'Size:' | awk '{print $2}' | head -n 1 |
|||
} |
|||
|
|||
# Function to check for debounce |
|||
check_debounce() { |
|||
SIZE=$(get_dvd_size) |
|||
if [SIZE -eq 0]; then |
|||
ATTEMPTS=3 |
|||
while [ "$SIZE" -eq 0 ] && [ $ATTEMPTS -gt 0 ]; do |
|||
sleep 2 |
|||
SIZE=$(get_dvd_size) |
|||
log_message "Debounced: Retried size of $DEVNAME is $SIZE" |
|||
ATTEMPTS=$((ATTEMPTS - 1)) |
|||
done |
|||
elif [SIZE -eq 0]; then |
|||
log_message "exit on: Retried size of $DEVNAME is $SIZE" |
|||
exit 0 |
|||
fi |
|||
|
|||
if [ -f "$DEBOUNCE_FILE" ]; then |
|||
last_run_time=$(cat $DEBOUNCE_FILE) |
|||
elapsed_time=$((current_time - last_run_time)) |
|||
if [ $elapsed_time -lt $DEBOUNCE_TIME ]; then |
|||
log_message "Debounced: $ACTION $DEVNAME" |
|||
exit 0 |
|||
fi |
|||
fi |
|||
echo $current_time > $DEBOUNCE_FILE |
|||
} |
|||
|
|||
check_debounce |
|||
|
|||
|
|||
|
|||
if [ "$ACTION" == "change" ]; then |
|||
# Introduce a delay before checking the device |
|||
sleep 2 # Wait for 2 seconds before proceeding |
|||
|
|||
# Check if the device is already mounted |
|||
MOUNTED=$(lsblk -o MOUNTPOINT -nr $DEVNAME) |
|||
if [ -z "$MOUNTED" ]; then |
|||
# Device is not mounted, check if it is a raw DVD |
|||
SIZE=$(get_dvd_size) |
|||
|
|||
# Debug output for size |
|||
log_message "DEBUG: Initial size of $DEVNAME is $SIZE" |
|||
|
|||
# Retry logic for getting the size |
|||
ATTEMPTS=3 |
|||
while [ "$SIZE" -eq 0 ] && [ $ATTEMPTS -gt 0 ]; do |
|||
sleep 2 |
|||
SIZE=$(get_dvd_size) |
|||
log_message "DEBUG: Retried size of $DEVNAME is $SIZE" |
|||
ATTEMPTS=$((ATTEMPTS - 1)) |
|||
done |
|||
|
|||
if [ "$SIZE" -gt 0 ]; then |
|||
log_message "success insert raw DVD $DEVNAME" |
|||
else |
|||
# Proceed to mount the device |
|||
udisksctl mount -b $DEVNAME |
|||
if [ $? -eq 0 ]; then |
|||
log_message "success mount $DEVNAME" |
|||
else |
|||
log_message "failed to mount $DEVNAME" |
|||
fi |
|||
fi |
|||
else |
|||
log_message "$DEVNAME is already mounted at $MOUNTED" |
|||
fi |
|||
log_message "success insert $DEVNAME" |
|||
fi |
@ -0,0 +1,13 @@ |
|||
#!/bin/bash |
|||
|
|||
ACTION=$1 |
|||
DEVICE_NAME=$2 |
|||
SOCKET_PATH="/run/dvd-Sono-Socket.socket" |
|||
|
|||
if [ "$ACTION" == "add" ]; then |
|||
echo -n "success insert $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success insert $DEVICE_NAME with socat" >> /tmp/tmpDvd.log |
|||
elif [ "$ACTION" == "remove" ]; then |
|||
echo -n "success eject $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success eject $DEVICE_NAME" >> /tmp/tmpDvd.log |
|||
fi |
@ -1,37 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
# Get the action (add or remove) and the device name from the udev rule |
|||
ACTION=$1 |
|||
|
|||
# Get the device name from the udev rule |
|||
DEVICE_NAME=$2 |
|||
|
|||
SOCKET_PATH="/tmp/usb-Sono-Socket.socket" |
|||
|
|||
if [ "$ACTION" == "add" ]; then |
|||
# Mount the device |
|||
udisksctl mount -b "$DEVICE_NAME" |
|||
|
|||
# Check if the mount was successful |
|||
if [ $? -eq 0 ]; then |
|||
# Write a message to the socket |
|||
echo "success connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success connect $DEVICE_NAME" >> /tmp/tmp.log |
|||
else |
|||
echo "failure connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "failure connect $DEVICE_NAME" >> /tmp/tmp.log |
|||
fi |
|||
elif [ "$ACTION" == "remove" ]; then |
|||
# Unmount the device |
|||
udisksctl unmount -b "$DEVICE_NAME" |
|||
|
|||
# Check if the unmount was successful |
|||
if [ $? -eq 0 ]; then |
|||
# Write a message to the socket |
|||
echo "success disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success disconnect $DEVICE_NAME" >> /tmp/tmp.log |
|||
else |
|||
echo "failure disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "failure disconnect $DEVICE_NAME" >> /tmp/tmp.log |
|||
fi |
|||
fi |
@ -0,0 +1,13 @@ |
|||
#!/bin/bash |
|||
|
|||
ACTION=$1 |
|||
DEVICE_NAME=$2 |
|||
SOCKET_PATH="/run/usb-Sono-Socket.socket" |
|||
|
|||
if [ "$ACTION" == "add" ]; then |
|||
echo -n "success connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success connect $DEVICE_NAME with socat" >> /tmp/tmpUsb.log |
|||
elif [ "$ACTION" == "remove" ]; then |
|||
echo -n "success disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH |
|||
echo "success disconnect $DEVICE_NAME" >> /tmp/tmpUsb.log |
|||
fi |
Loading…
Reference in new issue