#!/bin/bash # Only modify the two lines below. PERMISSION_FILE="/root/group.permission" STDLOG="/root/sxpdlnsync.log" # Do not modify anything below this line (unless you know what you are doing) STDOUT="/tmp/$$.stdout" STDERR="/tmp/$$.stderr" STDTMP="/tmp/$$.stdtmp" SCALIX_DIR="/opt/scalix/bin/" #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #/* WriteToLog() */ #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ WriteToLog () { echo "$@" >> "$STDLOG" } #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #/* UpdateFolderPermission() */ #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ UpdateFolderPermission () { local or_pdl=$1 local or_user=$2 local pdl_mailnode= local pdl= local line= local result= local folder= local group= local permission= local user_mailnode= local user_fn= local user_cn= local user_or_address= local user_is_pdl="false" local cmd= pdl_mailnode=`echo "$or_pdl" | cut -f2 -d "/"` pdl_mailnode=`echo "$pdl_mailnode" | cut -f2 -d "="` pdl=`echo "$or_pdl" | cut -f1 -d "/"` pdl=`echo "$pdl" | cut -f2 -d "="` WriteToLog WriteToLog "$or_pdl (O/R) - $pdl (pdl/group) - $pdl_mailnode (mailnode)" WriteToLog "$or_user (user/group)" WriteToLog # Check to see if we are dealing with a user or a group "$SCALIX_DIR"omshowu -n "$or_user" > "$STDOUT" 2> "$STDERR" if [ -s "$STDERR" ] then result=`head -1 "$STDERR" | cut -f2 -d "[" | cut -f1 -d "]"` if [ "$result" == "OM 8040" ] then "$SCALIX_DIR"omshowpdln -l "$or_user" > "$STDOUT" 2> "$STDERR" if [ -s "$STDOUT" ] && [ ! -s "$STDERR" ] then user_is_pdl="true" cat "$STDOUT" | while read line do UpdateFolderPermission "$or_pdl" "$line" done fi return fi else # Pick up here since we now know we are dealing with a user not a group cat "$STDOUT" | head -3 | tail -2 | cut -f2 -d ":" | sed -e 's/^ *//' > "$STDTMP" cat "$STDTMP" > "$STDOUT" user_mailnode=`tail -1 "$STDOUT"` user_fn=`head -1 "$STDOUT" | cut -f1 -d "/" | sed -e 's/$ *//'` user_cn=`head -1 "$STDOUT" | cut -f2 -d "/" | sed -e 's/^ *//'` user_cn="/$user_cn" user_or_address="$user_fn /$user_mailnode$user_cn" WriteToLog "user_or_address = $user_or_address" fi WriteToLog "Reading permission file - $PERMISSION_FILE" cat "$PERMISSION_FILE" | grep -e "^[^#]" | while read line do folder=`echo $line | awk -F "\"" '{print $2}'` group=`echo $line | awk -F "\"" '{print $4}'` permission=`echo $line | awk -F "\"" '{print $6}'` if [ "$pdl" == "$group" ] then WriteToLog "$folder (PubFolder) - $group (Group) - $permission" "$SCALIX_DIR"ommodacln -t bb -l ":$folder" -n """$user_or_address""" -c "$permission" > "$STDOUT" 2> "$STDERR" if [ -s "$STDERR" ] then result=`head -1 "$STDERR" | cut -f2 -d "[" | cut -f1 -d "]"` if [ "$result" == "OM 15680" ] then "$SCALIX_DIR"omaddacln -t bb -l ":$folder" -n """$user_or_address""" -c "$permission" > "$STDOUT" 2> "$STDERR" fi fi fi done } #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #/* Start of Mainline Code */ #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ WriteToLog "=================== `date` =====================" WriteToLog cat "$PERMISSION_FILE" | grep -e "^[^#]" | while read permission_line do group=`echo $permission_line | awk -F "\"" '{print $4}'` "$SCALIX_DIR"omshowpdln -l """CN=$group""" > "$STDOUT" cat "$STDOUT" | grep -e "^[^#]" | while read group_line do UpdateFolderPermission "$group" "$group_line" done done if [ -f "$STDOUT" ] then rm -f "$STDOUT" fi if [ -f "$STDERR" ] then rm -f "$STDERR" fi if [ -f "$STDTMP" ] then rm -f "$STDTMP" fi if [ -f "$STDLOG" ] then WriteToLog WriteToLog fi