#!/usr/bin/perl -I/opt/SUNWstade/lib
#<copyright>
# ----------------------------------------------------------
# Sun Proprietary/Confidential Code
# Copyright 2001-2002, Sun Microsystems, Inc. All rights reserved.
# ----------------------------------------------------------
#</copyright>

use FindBin;

print "Enter password: ";
system('stty -echo');
my $pass1 = <STDIN>;
system('stty echo');

print "\nConfirm password: ";
system('stty -echo');
my $pass2 = <STDIN>;
print "\n";
system('stty echo');

if($pass1 =~ /$pass2/){
  chomp($pass1);
  &cryptnsalt($pass1); 
  &changeall($pass2);
  print "Password has been updated\n";

}else{
  print "Passwords entered didn't match\n";
  print "Please try again\n";
}


exit;

sub cryptnsalt {
  my($pass) = @_;
  $pass1 = crypt($pass, ((sprintf("%x", time | $$)) =~ /(..)$/, $1));

  my($local_p) = $FindBin::Bin;
  my($ix) = rindex($local_p, "/");
  $HOME   = substr($local_p,0,$ix);

  open(O,">$HOME/System/password");
  print O $pass1;
  close(O);
}

sub changeall {
   my($pass) = @_;

   print "Restarting services with new password...";

   my $cmd = "/opt/SUNWstade/bin/ras_admin";
   system("$cmd login_update -l peer -p $pass");
   system("$cmd login_update -l srm -p $pass");
   system("$cmd login_update -l ras -p $pass");
   system("$cmd login_update -l storade -p $pass");
   
   open(IPC, ">/opt/SUNWstade/DATA/IPC_Access");
   print IPC "peer:$pass";
   close(IPC);
   system("chmod 600 /opt/SUNWstade/DATA/IPC_Access");
   system("chown noaccess /opt/SUNWstade/DATA/IPC_Access");
   # edit /opt/SUNWstade/DATA/IPC_Access  to contain "peer:$pass\n";
   system("/usr/sbin/smcwebserver restart");
   system("/usr/bin/pkill rashttp");  

}
