#!/bin/bash BASE_CMD=`basename "$0"` # Only modify the two lines below. PERMISSION_FILE="/root/group.permission" STDLOG="/root/om___pdln.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/" COMMAND="$SCALIX_DIR"_om___pdln/"$BASE_CMD" #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #/* 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" 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}'` WriteToLog "$folder (PubFolder) - $group (Group) - $permission" if [ "$pdl" == "$group" ] then WriteToLog "Found a Match!!" if [ "$BASE_CMD" == "omdelpdln" ] || [ "$permission" == "none" ] then "$SCALIX_DIR"omdelacln -t bb -l ":$folder" -n "$user_or_address" > "$STDOUT" 2> "$STDERR" fi if [ "$BASE_CMD" == "omaddpdln" ] then "$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 fi done } #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #/* Start of Mainline Code */ #/* * * * * * * * * * * * * * * * * * * * * * * * * * * * */ $COMMAND "$@" if [ $? != 0 ] then exit $? fi WriteToLog "=================== `date` =====================" WriteToLog "cmd = $BASE_CMD $@" WriteToLog x=0 for parm do let "x=x+1" if [ "$parm" == "-l" ] then let "pdlparm=x+1" eval "or_pdl=\$$pdlparm" fi if [ "$parm" == "-n" ] then let "userparm=x+1" eval "or_user=\$$userparm" fi done UpdateFolderPermission "$or_pdl" "$or_user" 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