summaryrefslogtreecommitdiff
path: root/changePassword.php
blob: 3d43dc8de84018a1777e6112f1182b76ad9a1e96 (plain)
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
101
<?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 <[email protected]>
 * @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;
}
?>