require_once("config.inc");
require("auth.inc");
require_once("functions.inc");

global $g, $config, $argv, $userindex;
$userindex = index_users();

$args = array_slice($argv, 3);

$password = "";
$confpassword = "";
$username = "";

$fp = fopen('php://stdin', 'r');

// If the first parameter is empty, ask for username
if (empty($args[0])) {
	echo gettext("Enter username: ");
	$username = fgets($fp);
} else {
	$username = $args[0];
}
$username = trim($username);

// If the user does not exist, bail
$user =& getUserEntry($username);
if ($user == NULL) {
	printf(gettext("User '%s' does not exist.\n"), $username);
	exit(-1);
} else {
	printf(gettext("Changing password for '%s'.\n"), $username);
}

// If the user does exist, prompt for password
while (empty($password)) {
	echo gettext("New Password") . ": ";
	exec('/bin/stty -echo');
	$password = trim(fgets($fp));
	exec('/bin/stty echo');
	echo "\n";
}

// Confirm password
while (empty($confpassword)) {
	echo gettext("Confirm New Password") . ": ";
	exec('/bin/stty -echo');
	$confpassword = trim(fgets($fp));
	exec('/bin/stty echo');
	echo "\n";
}

// Check if user is disabled
if (is_account_disabled($username)) {
	echo gettext("Account is disabled, would you like to re-enable? [y|n]") . ": ";
	if (strcasecmp(chop(fgets($fp)), "y") == 0) {
		unset($user['disabled']);
	}
}
// Check if user is expired
if (is_account_expired($username)) {
	echo gettext("Account is expired, would you like to clear the expiration date? [y|n]") . ": ";
	if (strcasecmp(chop(fgets($fp)), "y") == 0) {
		unset($user['expires']);
	}
}

fclose($fp);

// Compare password and confirm
if ($password == $confpassword) {
	//Reset password
	local_user_set_password($user, $password);
	local_user_set($user);
	write_config(sprintf(gettext("password changed for user '%s' from console."), $username));
	exit(0);
} else {
	echo gettext("New and Confirm passwords did not match.") . "\n";
	exit(-1);
}