2025-05-01 14:10:33 +00:00
|
|
|
#!/bin/sh
|
2025-05-02 06:59:30 +00:00
|
|
|
exec >> /tmp/mys-$USER.txt 2>&1
|
2025-05-01 14:10:33 +00:00
|
|
|
set -x
|
|
|
|
|
2025-05-02 06:59:30 +00:00
|
|
|
|
2025-05-01 14:10:33 +00:00
|
|
|
. /etc/wmde-rp.conf
|
|
|
|
|
|
|
|
USER=`whoami`
|
|
|
|
PAM_USER=$USER
|
|
|
|
PAM_TYPE=open_session
|
|
|
|
|
|
|
|
. $PREFIX/wmde-rp-check-pam-user.sh
|
|
|
|
. $PREFIX/wmde-rp-common.sh
|
|
|
|
|
|
|
|
|
2025-05-02 06:59:30 +00:00
|
|
|
SSHARGS="-o UserKnownHostsFile=$WMDERPDIR/known_hosts"
|
2025-05-01 14:10:33 +00:00
|
|
|
|
|
|
|
create_wmderpdir
|
|
|
|
|
|
|
|
if [ -f "$PIDFILE" ]; then
|
|
|
|
OLD_PID=`cat "$PIDFILE"`
|
|
|
|
if kill -0 "$OLD_PID" 2> /dev/null; then
|
|
|
|
echo "Usersync already running." >> $LOGFILE
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo 0 > $CONFIGSYNC
|
|
|
|
echo 0 > $FULLSYNC
|
|
|
|
echo $$ > $PIDFILE
|
|
|
|
|
|
|
|
|
|
|
|
create_knonw_hosts_and_nfshomedir
|
|
|
|
|
2025-05-02 06:59:30 +00:00
|
|
|
iiiiiireplace_keys_values() {
|
|
|
|
outfile="$1"
|
|
|
|
shift # Entfernt outfile aus den Argumenten
|
|
|
|
|
|
|
|
infile="$PREFIX/osync.conf.template" # Kannst du bei Bedarf ebenfalls als Parameter machen
|
|
|
|
tmpfile="$(mktemp)"
|
|
|
|
cp "$infile" "$tmpfile"
|
|
|
|
|
|
|
|
for pair in "$@"; do
|
|
|
|
key="${pair%%=*}"
|
|
|
|
value="${pair#*=}"
|
|
|
|
escaped_key=$(printf '%s\n' "$key" | sed 's/[][\/.^$*]/\\&/g')
|
|
|
|
sed -i "s/^$escaped_key=.*/$key=$value/" "$tmpfile"
|
|
|
|
done
|
|
|
|
|
|
|
|
mv "$tmpfile" "$outfile"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
replace_keys_values() {
|
|
|
|
outfile="$1"
|
|
|
|
shift
|
|
|
|
|
|
|
|
infile="$PREFIX/osync.conf.template" # Kannst du bei Bedarf ebenfalls als Parameter machen
|
|
|
|
tmpfile="$(mktemp)"
|
|
|
|
cp "$infile" "$tmpfile"
|
|
|
|
|
|
|
|
for pair in "$@"; do
|
|
|
|
key="${pair%%=*}"
|
|
|
|
value="${pair#*=}"
|
|
|
|
|
|
|
|
# Escape key für sed
|
|
|
|
escaped_key=$(printf '%s\n' "$key" | sed 's/[][|.^$*+?{}()\\]/\\&/g')
|
|
|
|
|
|
|
|
# Escape & im Value, da es in sed als Referenz auf den Match dient
|
|
|
|
escaped_value=$(printf '%s\n' "$value" | sed 's/[&]/\\&/g')
|
|
|
|
|
|
|
|
# Ersetze Zeile mit key=... durch key=value, robust gegen Slashes
|
|
|
|
sed -i "s|^$escaped_key=.*|$key=$escaped_value|" "$tmpfile"
|
|
|
|
done
|
|
|
|
|
|
|
|
mv "$tmpfile" "$outfile"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CONF_INC=".config;.local/share/backgrounds"
|
|
|
|
CONF_EX=".wmde-osync;.cache;*/.cache;.cache2;*/.cache2;.thunderbird/*/ImapMail/"
|
|
|
|
FULL_INC="*"
|
|
|
|
FULL_EX=".wmde-osync;.cache;*/.cache;.cache2;*/.cache2;.thunderbird/*/ImapMail/"
|
|
|
|
|
|
|
|
echo $OPTIONAL_ARGS
|
|
|
|
|
|
|
|
generate_config()
|
|
|
|
{
|
|
|
|
PROFILE="$1"
|
|
|
|
|
|
|
|
replace_keys_values $PROFILE \
|
|
|
|
"INITIATOR_SYNC_DIR=\"$HOMEDIR\""\
|
|
|
|
"TARGET_SYNC_DIR=\"ssh://$NFSSERVER/$HOMEDIR\"" \
|
|
|
|
"SSH_OPTIONAL_ARGS=\"$SSHARGS\"" \
|
|
|
|
"RSYNC_PATTERN_FIRST=include" \
|
|
|
|
"PRESERVE_OWNER=false" \
|
|
|
|
"PRESERVE_GROUP=false" \
|
|
|
|
"RSYNC_OPTIONAL_ARGS=\"$2\"" \
|
|
|
|
"RSYNC_COMPRESS=false" \
|
|
|
|
"INSTANCE_ID=\"$3\"" \
|
|
|
|
"MIN_WAIT=3" \
|
|
|
|
"MAX_WAIT=30" \
|
|
|
|
"FORCE_STRANGER_LOCK_RESUME=true" \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# "RSYNC_PATTERN_FIRST=exclude"\
|
|
|
|
# "RSYNC_INCLUDE_PATTERN=\"$2\"" \
|
|
|
|
# "RSYNC_EXCLUDE_PATTERN=\"$3\"" \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## List of files / directories to incldue / exclude from sync on both sides (see rsync patterns, wildcards work).
|
|
|
|
## Paths are relative to sync dirs. List elements are separated by a semicolon.
|
|
|
|
|
|
|
|
# "INITIATOR_CUSTOM_STATE_DIR=\"$WMDERPDIR\"" \
|
|
|
|
# "TARGET_CUSTOM_STATE_DIR=\"$WMDERPDIR"\"
|
|
|
|
|
|
|
|
|
|
|
|
# "RSYNC_INCLUDE_PATTERN=\"Pictures/***;.config/***\"" \
|
|
|
|
# "RSYNC_EXCLUDE_PATTERN=\"*\""
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
HN=`hostname -f`
|
|
|
|
|
|
|
|
CONFNAM="$HN-`echo -n "$CONFIG_DIRS" | md5sum | cut -c1-8`"
|
|
|
|
FULLNAM="$HN-`echo -n "$FULL_DIRS" | md5sum | cut -c1-8`"
|
|
|
|
PERMNAM="$HN-`echo -n "$PERM_DIRS" | md5sum | cut -c1-8`"
|
|
|
|
|
|
|
|
generate_config "$WMDERPDIR/configsync.conf" "$CONFIG_DIRS" "$CONFNAM"
|
|
|
|
generate_config "$WMDERPDIR/fullsync.conf" "$FULL_DIRS" "$FULLNAM"
|
|
|
|
generate_config "$WMDERPDIR/permsync.conf" "$PERM_DIRS" "$PERMNAM"
|
|
|
|
|
|
|
|
osync.sh "$WMDERPDIR/configsync.conf" --verbose
|
|
|
|
echo "$$" > $CONFIGSYNC
|
|
|
|
|
|
|
|
osync.sh "$WMDERPDIR/fullsync.conf" --verbose
|
|
|
|
echo "$$" > $FULLSYNC
|
|
|
|
echo "$$" > $FIRSTSYNC
|
|
|
|
|
|
|
|
osync.sh "$WMDERPDIR/permsync.conf" --verbose --on-changes
|
|
|
|
|