#!/usr/bin/perl
#
#  User Configuration Profile Utilities
#
#
# $Author: rz $
# $Date: 2005/11/25 09:26:16 $
# $Header: /home/vvk/RPM/SOURCES/Project_Cherry/CVSROOT/cherry/bin/admin/ucputil,v 2.0.0.1 2005/11/25 09:26:16 rz Exp $
# $Id: ucputil,v 2.0.0.1 2005/11/25 09:26:16 rz Exp $
# $Locker:  $
#
# $Log: ucputil,v $
# Revision 2.0.0.1  2005/11/25 09:26:16  rz
# Project Cherry release 2.0
#
# Revision 1.1.1.1  2003/07/30 08:31:28  rz
# Project CHerry: imported from RCS
#
# Revision 1.18  2003/03/05 21:07:54  rz
# *** empty log message ***
#
# Revision 1.17  2002/10/03 13:58:04  rz
# ucp_crypt implemented
#
# Revision 1.16  2002/09/29 16:17:22  rz
# *** empty log message ***
#
# Revision 1.15  2002/09/29 16:03:11  rz
# *** empty log message ***
#
# Revision 1.14  2002/09/29 15:58:56  rz
# passwd{} bug fixed
#
# Revision 1.13  2002/09/29 15:46:54  rz
# *** empty log message ***
#
# Revision 1.12  2002/09/29 15:39:51  rz
# *** empty log message ***
#
# Revision 1.11  2002/09/29 15:31:34  rz
# ucp_crypt draft added
#
# Revision 1.10  2002/09/29 15:24:37  rz
# TARGET bug fixed
#
# Revision 1.9  2002/09/29 15:22:59  rz
# mkpasswd call added
#
# Revision 1.8  2002/09/29 15:11:24  rz
# ucp_save implemented
#
# Revision 1.7  2002/09/29 12:07:43  rz
# *** empty log message ***
#
# Revision 1.6  2002/09/29 12:04:20  rz
# *** empty log message ***
#
# Revision 1.5  2002/09/29 11:59:03  rz
# *** empty log message ***
#
# Revision 1.4  2002/09/29 10:47:11  rz
# ucp_create added
#
# Revision 1.3  2002/09/29 10:26:32  rz
# *** empty log message ***
#
# Revision 1.2  2002/09/29 10:25:13  rz
# ucp_save added
#
# Revision 1.1  2002/09/29 10:24:20  rz
# Initial revision
#
#

package ucp;



sub ucp_crypt {
	local($passwd) = shift @_;
    	local($salt);               # initialization
    	local($i, $rand);
    	local(@itoa64) = ( 0 .. 9, a .. z, A .. Z ); # 0 .. 63
	local($crypted);

    	for ($i = 0; $i < 8; $i++) {
        	srand(time + $rand + $$);
        	$rand = rand(25*29*17 + $rand);
        	$salt .=  $itoa64[$rand & $#itoa64];
    	}

	$crypted=crypt($passwd,$salt);
	return $crypted;	
}

sub ucp_tr {
	local($str) = shift @_;
	$str =~ s/\"/\\\"/g;
	$str =~ s/\@/\\\@/g;
	$str =~ s/\$/\\\$/g;
	return $str;
}

sub ucp_save {
	local($flag)     = shift @_;
	local($temp_cfg) = "$CFG::BASE/ucp.cfg";

	open(CFG, ">$temp_cfg") || return 0;

	print CFG "\#\n\# User Configuration Profile\n\#\n\n";	
	print CFG "package operators;\n\n";

	foreach $login ( sort keys %operators::name ) {
		print CFG "\@name{'$login'}	= \"".&ucp_tr(@operators::name{$login})."\";\n";
		print CFG "\@group{'$login'}	= \"".@operators::group{$login}."\";\n";
		print CFG "\@language{'$login'}	= \"".@operators::language{$login}."\";\n";
		print CFG "\@options{'$login'}	= \"".@operators::options{$login}."\";\n";
		print CFG "\@providers{'$login'}	= \"".@operators::providers{$login}."\";\n";
		print CFG "\@email{'$login'}	= \"".&ucp_tr(@operators::email{$login})."\";\n";
		print CFG "\@passwd{'$login'}	= \"".&ucp_tr(@operators::passwd{$login})."\";\n" if(@operators::passwd{$login});
		print CFG "\#\n\n";
	}

	print CFG "\n1;\n\n";

	close(CFG);

	$ENV{'TARGET'} = $CFG::BASE;

	if(! ($flag =~ /skip_mkpasswd/) ) {
		system("/usr/lib/cherry/mkpasswd skip_ucp_save 2>/dev/null");
	}

	return 1;
}


1;

