#!/usr/bin/perl -U 
#
# $Id: setTime
#

use lib "/usr/sausalito/perl";

use POSIX;
use CCE;

my ($epochTime, $timeZone, $ntpAddress, $hasNtp, $defer) = @ARGV;

# make attributes for time. only include the things that actually change.
my %attributes;
$attributes{epochTime} = $epochTime if $epochTime;
$attributes{ntpAddress} = $ntpAddress if $hasNtp;
if ($defer) {
    $attributes{deferCommit} = 1; 
    $attributes{deferTimeZone} = $timeZone if $timeZone;
    $attributes{epochOffset} = time();
}
else {
    $attributes{timeZone} = $timeZone if $timeZone;
}

# my $pid;
# defined($pid = fork) or die "Can't fork: $!";
# exit if $pid;

POSIX::setsid() or die "Can't start a new session: $!";

# set time into CCE
my $cce = new CCE();
$cce->connectuds();

# We must auth to CCE so that our sessionId doesn't expire
$cce->authkey($ENV{CCE_USERNAME}, $ENV{CCE_SESSIONID});

my ($sysId) = $cce->find('System');
$cce->set($sysId, 'Time', \%attributes);

$cce->bye('SUCCESS');
exit 0;

# 
# Copyright (c) 2008-2022 Michael Stauber, SOLARSPEED.NET
# Copyright (c) 2008-2022 Team BlueOnyx, BLUEONYX.IT
# Copyright (c) 2003 Sun Microsystems, Inc. 
# All Rights Reserved.
# 
# 1. Redistributions of source code must retain the above copyright 
#    notice, this list of conditions and the following disclaimer.
# 
# 2. Redistributions in binary form must reproduce the above copyright 
#    notice, this list of conditions and the following disclaimer in 
#    the documentation and/or other materials provided with the 
#    distribution.
# 
# 3. Neither the name of the copyright holder nor the names of its 
#    contributors may be used to endorse or promote products derived 
#    from this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.
# 
# You acknowledge that this software is not designed or intended for 
# use in the design, construction, operation or maintenance of any 
# nuclear facility.
# 