File: //proc/self/root/usr/bin/userlogs
#!/bin/bash
usage() {
while IFS='' read line; do printf '%s\n' "$line"; done <<- EOF
Usage: userlogs [-c <configfile> -h <homebase> -d]
EOF
}
err() {
printf '%s\n' "$*" >&2
}
sync_logs() {
declare s_domain=$1 s_user
IFS='/' read _ _ s_user _ < <(
find "$cfg_home_base" -mindepth 2 -maxdepth 2 -type d -name "$s_domain"
)
if (( $? )); then
return 1
fi
if ! [[ "$s_user" ]]; then
err "ERROR: Could not find s_user for s_domain $s_domain!"
return 1
fi
if (( flag_debug )); then
printf 'DEBUG: Domain: %s; User: %s\n' "$s_domain" "$s_user"
fi
rsync "/home/$s_user/_logs/$s_domain/$s_domain.access_log-"* "/home/$s_user/$s_domain/logs"
chown -R "$s_user:$s_user" "/home/$s_user/$s_domain/logs"
}
main() {
cfg_file='/etc/uploadlogs/domains-postproc.conf'
cfg_home_base='/home'
while (( $# )); do
case "$1" in
(-h) usage; return 0;;
(-c) cfg_file="$2"; shift;;
(-h) cfg_home_base="$2"; shift;;
(-d) flag_debug=1;;
(--) shift; break;;
(*) break;;
esac
shift
done
if ! exec 3< "$cfg_file"; then
return 1
fi
while IFS=':' read domain _; do
sync_logs "$domain"
done <&3
exec 3>&-
}
main "$@"