1#!/usr/local/bin/php
2<?php
3	chdir(__DIR__);
4	require("../libraries/banshee.php");
5	require("../libraries/security.php");
6
7	error_reporting(E_ALL & ~E_NOTICE);
8
9	$db = new MySQLi_connection(DB_HOSTNAME, DB_DATABASE, DB_USERNAME, DB_PASSWORD);
10	if ($db->connected == false) {
11		exit("Internal error: database not available.\n");
12	}
13
14	if (count($argv) <= 1) {
15		exit("Usage: ".$argv[0]." <username> [-t(test)]\n");
16	}
17	$username = $argv[1];
18	$test = ($argv[2] === "-t");
19
20	/* Check username
21	 */
22	if ($test == false) {
23		$query = "select count(*) as count from users where username=%s";
24		if (($result = $db->execute($query, $username)) === false) {
25			exit("Error while checking username.\n");
26		}
27		if ($result[0]["count"] == 0) {
28			exit("User ".$username." not found.\n");
29		}
30	}
31
32	do {
33		print "Enter password: ";
34		system("/bin/stty -echo");
35		$password = trim(fgets(STDIN));
36		system("/bin/stty echo");
37		print "\n";
38	} while ($password == "");
39
40	$password = hash_password($password, $username);
41
42	if ($test == false) {
43		$query = "update users set password=%s where username=%s";
44		if ($db->query($query, $password, $username) === false) {
45			exit("Database error while setting password.\n");
46		}
47	} else {
48		printf("Password: %s\n", $password);
49	}
50?>
51