upgrade_cyrus_opts [plain text]
require 'Foundation.pm';
$quotaPlistPath = "/System/Library/LaunchDaemons/edu.cmu.andrew.cyrus.cyrus-quota.plist";
$quotaPlistPathNS = NSString->stringWithCString_($quotaPlistPath);
$otherPlistPath = "/etc/MailServicesOther.plist";
$otherPlistPathNS = NSString->stringWithCString_($otherPlistPath);
if ( ! -e "$quotaPlistPath" )
{
log_message("Config file: '$quotaPlistPath' does not exist");
exit;
}
if ( ! -e "$otherPlistPath" )
{
log_message("Config file: '$otherPlistPath' does not exist");
exit;
}
$quotaDict = NSMutableDictionary->dictionaryWithContentsOfFile_($quotaPlistPathNS);
$otherDict = NSDictionary->dictionaryWithContentsOfFile_($otherPlistPathNS);
if ( !$quotaDict or !$$quotaDict )
{
log_message( "Error: Can't get NSDictionary for '$quotaPlistPath'");
exit;
}
if ( !$otherDict or !$$otherDict )
{
log_message("Error: Can't get NSDictionary for '$otherPlistPath'");
exit;
}
$cyursDict = $otherDict->objectForKey_( "cyrus" );
if ($cyursDict and $$cyursDict)
{
$quotaDays = $cyursDict->objectForKey_("quota_warn_frequency_days") ;
if ($quotaDays or $$quotaDays)
{
$seconds = sprintf("%d", $quotaDays->description()->UTF8String());
$seconds = $seconds * 86400;
$quotaDict->setObject_forKey_( NSNumber->numberWithInt_($seconds), "StartInterval" );
$quotaDict->writeToFile_atomically_( $quotaPlistPathNS, 0 );
if ( system( "crontab -u cyrusimap -l" ) == 0 )
{
system( "/bin/launchctl load -w /System/Library/LaunchDaemons/edu.cmu.andrew.cyrus.cyrus-quota.plist" );
system( "crontab -u cyrusimap /dev/null" )
}
else
{
system( "/bin/launchctl unload -w /System/Library/LaunchDaemons/edu.cmu.andrew.cyrus.cyrus-quota.plist" );
}
}
}
sub log_message
{
`logger -t toggle_on_demand -p "mail.notice" "@_".`;
}