#!/usr/local/bin/perl #This script is for checking the modification time of files under /config directory. use File::Find; use File::stat qw(:FIELDS); use HTTP::Request; use LWP::UserAgent; %fileModTimes; $serverPath = ""; $filesModified = ""; %broadcastingModTimes; $broadcastingModified = ""; open(IN, "/config/Status.conf") or file_not_found(); while () { if (/ServerPath/) { s/ServerPath.*=(.*)/$1/; $serverPath = $1; } } close IN; find(\&updateFileModTimes, "/config"); find(\&updateBroadCastingModTimes,"/config/Notify.conf"); #Check all files under /config directory sub updateFileModTimes { if ( -f "$File::Find::name" && "$File::Find::name" =~ /.*\.txt/i) { if ($fileModTimes{$File::Find::name}) { stat($File::Find::name) or die "Couldn't find $File::Find::name"; if ( $fileModTimes{$File::Find::name} eq $st_mtime ) { #do nothing } else { $fileModTimes{$File::Find::name} = $st_mtime; $filesModified = "true"; } } else { stat($File::Find::name) or die "Couldn't find $File::Find::name"; $fileModTimes{$File::Find::name} = $st_mtime; } } } #Check Notify.conf file for broadcating message under /config sub updateBroadCastingModTimes { if ( -f "$File::Find::name" && "$File::Find::name" eq "/config/Notify.conf") { if ($broadcastingModTimes{$File::Find::name}) { stat($File::Find::name) or die "Couldn't find $File::Find::name"; if ( $broadcastingModTimes{$File::Find::name} eq $st_mtime ) { #do nothing } else { $broadcastingModTimes{$File::Find::name} = $st_mtime; $broadcastingModified = "true"; } } else { stat($File::Find::name) or die "Couldn't find $File::Find::name"; $broadcastingModTimes{$File::Find::name} = $st_mtime; } } } while ( true ) { sleep 3; $url = $serverPath."\/appl?method=Updatefile"; $ua = LWP::UserAgent->new; $request = HTTP::Request->new(GET => $url); $response = $ua->request($request); #Check all files under configfiles directory find(\&updateFileModTimes, "/config"); if ($filesModified eq "true" ) { #A sleep of 10 secs is allowed here to ensure that all the files #are modified correctly. sleep 10; find(\&updateFileModTimes, "/config"); #send a request to the servlet $url = $serverPath."\/appl?method=Updatefile"; $ua = LWP::UserAgent->new; $request = HTTP::Request->new(GET => $url); $response = $ua->request($request); $filesModified = ""; } #check Notify.conf file for broadcasting message under configfiles directory find(\&updateBroadCastingModTimes, "/config/Notify.conf"); if ($broadcastingModified eq "true" ) { #A sleep of 10 secs is allowed here to ensure that Notify.conf file #is modified correctly. sleep 10; find(\&updateBroadCastingModTimes, "/config/Notify.conf"); #send a request to the servlet $url = $serverPath."\/appl?method=Updatefile&NotificationMessage=broadcast"; $ua = LWP::UserAgent->new; $request = HTTP::Request->new(GET => $url); $response = $ua->request($request); $broadcastingModified = ""; } }