Files
local_machine/docs/apps/joplin/scripts/joplin-webdav-serve.sh

73 lines
2.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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