toggle_on_demand   [plain text]


#!/usr/bin/perl
#
# Copyright (c) 2003 Apple Computer, Inc.  All Rights Reserved
#
# Toggle the OnDemand key in the postfix launchd plist to false
#

require 'Foundation.pm';

$configFilePath = "/System/Library/LaunchDaemons/org.postfix.master.plist";
$configFilePathNS = NSString->stringWithCString_($configFilePath);

if (! -e "$configFilePath") {
	log_message("Error: Config file: '$configFilePath' does not exist");
	exit;
}

$configDictNS = NSMutableDictionary->dictionaryWithContentsOfFile_($configFilePathNS);

if (!$configDictNS or !$$configDictNS) {
	log_message("Error: Can't get NSDictionary for '$configFilePath'");
	exit;
}

system( "/bin/launchctl unload -w /System/Library/LaunchDaemons/org.postfix.master.plist");

$OnDemandKey = "OnDemand";
$OnDemandKeyNS = NSString->stringWithCString_($OnDemandKey);

$DisabledKey = "Disabled";
$DisabledKeyNS = NSString->stringWithCString_($DisabledKey);

$ProgramArgumentsKey = "ProgramArguments";
$ProgramArgumentsKeyNS = NSString->stringWithCString_($ProgramArgumentsKey);

$MasterValue = "master";
$MasterValueNS = NSString->stringWithCString_($MasterValue);

$ProgramArgumentsValue = NSArray->arrayWithObjects_( $MasterValueNS );

$configDictNS->setObject_forKey_( NSNumber->numberWithBool_(0), $OnDemandKeyNS );

$configDictNS->setObject_forKey_( NSNumber->numberWithBool_(0), $DisabledKeyNS );

$configDictNS->setObject_forKey_( $ProgramArgumentsValue, $ProgramArgumentsKeyNS );

$configDictNS->writeToFile_atomically_( $configFilePathNS, 0 );

system( "/bin/launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist");

sub log_message
{
	`logger -t toggle_on_demand -p "mail.notice" "@_".`;
}