73 lines
2.0 KiB
Bash
Executable File
73 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
||
# Локальный WebDAV для синхронизации Joplin (Mac ↔ телефон по LAN).
|
||
# Данные: ~/JoplinSync. Учётка: ~/.config/joplin-webdav/env
|
||
#
|
||
# ./joplin-webdav-serve.sh # фон
|
||
# ./joplin-webdav-serve.sh --foreground # передний план (для launchd)
|
||
|
||
set -e
|
||
|
||
CONFIG="${JOPLIN_WEBDAV_CONFIG:-$HOME/.config/joplin-webdav/env}"
|
||
LOG_DIR="$HOME/Library/Logs/joplin-webdav"
|
||
PID_FILE="$HOME/.config/joplin-webdav/rclone.pid"
|
||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||
|
||
mkdir -p "$LOG_DIR" "$(dirname "$PID_FILE")"
|
||
|
||
if [ ! -f "$CONFIG" ]; then
|
||
echo "Нет $CONFIG — запустите: $SCRIPT_DIR/joplin-webdav-install.sh" >&2
|
||
exit 1
|
||
fi
|
||
|
||
# shellcheck disable=SC1090
|
||
. "$CONFIG"
|
||
|
||
: "${JOPLIN_WEBDAV_USER:?}"
|
||
: "${JOPLIN_WEBDAV_PASS:?}"
|
||
: "${JOPLIN_WEBDAV_PORT:=8080}"
|
||
: "${JOPLIN_WEBDAV_ROOT:=$HOME/JoplinSync}"
|
||
|
||
mkdir -p "$JOPLIN_WEBDAV_ROOT"
|
||
|
||
RCLONE="$(command -v rclone || echo /opt/homebrew/bin/rclone)"
|
||
if [ ! -x "$RCLONE" ]; then
|
||
echo "rclone не найден. Установите: brew install rclone" >&2
|
||
exit 1
|
||
fi
|
||
|
||
run_rclone() {
|
||
exec "$RCLONE" serve webdav "$JOPLIN_WEBDAV_ROOT" \
|
||
--addr "0.0.0.0:${JOPLIN_WEBDAV_PORT}" \
|
||
--user "$JOPLIN_WEBDAV_USER" \
|
||
--pass "$JOPLIN_WEBDAV_PASS" \
|
||
--vfs-cache-mode minimal \
|
||
--log-file "$LOG_DIR/rclone.log" \
|
||
--log-level INFO
|
||
}
|
||
|
||
case "${1:-}" in
|
||
--foreground|-f)
|
||
run_rclone
|
||
;;
|
||
*)
|
||
if [ -f "$PID_FILE" ]; then
|
||
old_pid=$(cat "$PID_FILE")
|
||
if kill -0 "$old_pid" 2>/dev/null; then
|
||
echo "Уже запущен (PID $old_pid), порт ${JOPLIN_WEBDAV_PORT}"
|
||
exit 0
|
||
fi
|
||
rm -f "$PID_FILE"
|
||
fi
|
||
nohup "$0" --foreground >>"$LOG_DIR/stdout.log" 2>&1 &
|
||
echo $! >"$PID_FILE"
|
||
sleep 1
|
||
if kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
|
||
echo "WebDAV запущен (PID $(cat "$PID_FILE")), порт ${JOPLIN_WEBDAV_PORT}"
|
||
else
|
||
echo "Не удалось запустить. См. $LOG_DIR/stdout.log" >&2
|
||
rm -f "$PID_FILE"
|
||
exit 1
|
||
fi
|
||
;;
|
||
esac
|