mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-30 07:41:39 +00:00 
			
		
		
		
	git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| #
 | |
| # Script to expire voicemail after a specified number of days
 | |
| # by Steve Creel <screel@turbs.com>
 | |
| # 
 | |
| 
 | |
| # Directory housing the voicemail spool for asterisk
 | |
| $dir = "/var/spool/asterisk/voicemail";
 | |
| 
 | |
| # Context for which the script should be running
 | |
| $context = "default";
 | |
| 
 | |
| # Age (Delete files older than $age days old)
 | |
| $age = 31;
 | |
| 
 | |
| # Age for unheard messages (Defaults to same age for all messages)
 | |
| # Set to 0 to not delete unheard messages
 | |
| $unheardage = $age;
 | |
| 
 | |
| 
 | |
| # Delete all files older than $age and $unheardage
 | |
| # (named msg????.??? to get the audio and txt files, 
 | |
| # but we don't delete greetings or the user's name)
 | |
| 
 | |
| if($age==$unheardage) {
 | |
| 
 | |
|   # Save time by doing one find if we're treating everything the same
 | |
|   system('find '.$dir.'/'.$context.' -name msg????.??? -mtime +'.$age.' -exec rm {} \; -exec echo Deleted {} \;');
 | |
| 
 | |
| } else {
 | |
| 
 | |
|   # Find everything not in a folder called 'INBOX' and delete it after $age days
 | |
|   system('find '.$dir.'/'.$context.' -path \'*INBOX*\' -prune -o -name msg????.??? -mtime +'.$age.' -exec rm {} \; -exec echo Deleted {} \;');
 | |
| 
 | |
|   # If unheardage is set to 0, we won't delete any unheard messages
 | |
|   if($unheardage > 0) {
 | |
| 
 | |
|     # Delete things that are in a folder called INBOX after $unheardage days
 | |
|     system('find '.$dir.'/'.$context.' -path \'*INBOX*\' -name msg????.??? -mtime +'.$unheardage.' -exec rm {} \; -exec echo Deleted {} \;');
 | |
| 
 | |
|   }
 | |
| }
 | |
| 
 | |
| # For testing - what number to we start when we renumber?
 | |
| $start = "0";
 | |
| 
 | |
| # Rename to msg and a 4 digit number, 0 padded.
 | |
| $fnbase = sprintf "msg%04d", $start;
 | |
| 
 | |
| # Make $dir include the context too
 | |
| $dir.="/".$context;
 | |
| 
 | |
| ( -d $dir ) || die "Can't read list of mailboxes ($dir): $!\n"; 
 | |
| @mailboxes = `ls -A1 $dir`;
 | |
| chomp(@mailboxes);
 | |
| 
 | |
| $save_fnbase = $fnbase;
 | |
| 
 | |
| foreach $mailbox (@mailboxes) {
 | |
| 
 | |
|   ( -d $dir."/".$mailbox) || die "Can't read list of folders (".$dir."/".$mailbox."): $!\n";
 | |
|   @folders = `ls -A1 $dir/$mailbox`;
 | |
|   chomp(@folders);
 | |
| 
 | |
|   foreach $folder (@folders) {
 | |
|    if (-d $dir."/".$mailbox."/".$folder) {
 | |
|     ( -d $dir."/".$mailbox."/".$folder) || die "Can't read list of messages (".$dir."/".$mailbox."/".$folder.") $!\n";
 | |
|     @files = `ls -A1 $dir/$mailbox/$folder/`;
 | |
| 
 | |
|     # Sort so everything is in proper order.
 | |
|     @files = sort @files;
 | |
|     chomp(@files);
 | |
| 
 | |
|     # If there is still (after deleting old files earlier in the
 | |
|     # script) a msg0000.txt, we don't need to shuffle anything
 | |
|     # in this folder.
 | |
|     if (-f $dir."/".$mailbox."/".$folder."/msg0000.txt") { next; }
 | |
| 
 | |
|     foreach $ext (("WAV", "wav", "gsm", "txt")) {
 | |
|       # Reset the fnbase for each file type
 | |
|       $fnbase = $save_fnbase;
 | |
| 
 | |
|       foreach $file (@files) {
 | |
| 	if ( $file =~ /$ext/ ) {
 | |
| 		chdir($dir."/".$mailbox."/".$folder."/") || die "Can't change folder: $!";
 | |
| 		print "Renaming: ".$dir."/".$mailbox."/".$folder."/".$file." to ".$fnbase.".".$ext."\n";
 | |
| 		rename($file, $fnbase.".".$ext) || die "Cannot rename: $!";
 | |
| 		$fnbase++;
 | |
| 	}
 | |
|       }
 | |
|     }
 | |
|    }
 | |
|   }
 | |
| }
 | |
| 
 | |
| __END__ |