forked from pgpool/pgpooladmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changePassword.php
101 lines (81 loc) · 2.87 KB
/
changePassword.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Change in password for PgpoolAdmin written in pcp.conf
*
* PHP versions 4 and 5
*
* LICENSE: Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby
* granted, provided that the above copyright notice appear in all
* copies and that both that copyright notice and this permission
* notice appear in supporting documentation, and that the name of the
* author not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. The author makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* @author Ryuma Ando <ando@ecomas.co.jp>
* @copyright 2003-2008 PgPool Global Development Group
* @version CVS: $Id$
*/
require_once('common.php');
$tpl->assign('help', basename( __FILE__, '.php'));
if (!isset($_SESSION[SESSION_LOGIN_USER])) {
header('Location: login.php');
exit();
}
if(isset($_POST['action'])) {
$action = $_POST['action'];
} else {
$action = FALSE;
}
switch ( $action ) {
case 'update':
if (!isset($_POST['password']) || !isset($_POST['password2'])) {
$tpl->display('changePassword.tpl');
break;
}
$password = $_POST['password'];
$password2 = $_POST['password2'];
if ($password == '' || $password2 == '') {
$tpl->assign('error', $message['errPasswordMismatch']);
$tpl->display('changePassword.tpl');
break;
}
if ($password === $password2) {
$passFile = @file(_PGPOOL2_PASSWORD_FILE);
if ($passFile == FALSE) {
$errorCode = 'e6001';
$tpl->assign('errorCode', $errorCode);
$tpl->display('error.tpl');
exit();
}
if (! is_writable(_PGPOOL2_PASSWORD_FILE) ) {
$errorCode = 'e6003';
$tpl->assign('errorCode', $errorCode);
$tpl->display('error.tpl');
exit();
}
$fw = fopen(_PGPOOL2_PASSWORD_FILE, 'w');
for ($i = 0; $i<count($passFile); $i++) {
$line = $passFile[$i];
$spt = explode(":", $line);
if ($spt[0] == $_SESSION[SESSION_LOGIN_USER]) {
$line = $_SESSION[SESSION_LOGIN_USER] . ":" . md5($password) . "\n";
}
fputs($fw, $line);
}
fclose($fw);
session_unset();
$tpl->display('login.tpl');
break;
} else {
$tpl->assign('error', $message['errPasswordMismatch']);
}
default:
$tpl->display('changePassword.tpl');
break;
}
?>