Subversion Repositories portal2

Rev

Rev 690 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*  emg - Energy Monitoring & Graphing
*  Copyright (C) 2006-2012 Romain Lievin
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

?>

<div id="page_auth_login">
        <h1>
                <?php echo _('Login'); ?>
        </h1>

        <?php
       
        $form_token = md5(uniqid('auth', true));
        $_SESSION['form_token'] = $form_token;

        $error = new Error();
       
        $file_username       = '';
        $file_password       = '';
        $form_login_username = '';
        $form_login_password = '';
       
        /*
        $ret1 = filter_var("http://lievin.net", FILTER_VALIDATE_URL);
        $ret2 = filter_var("192.168.0.10", FILTER_VALIDATE_IP);
        var_dump($ret1);
        var_dump($ret2);
        */


        // Already logged - in?
        if(isset($_SESSION['user_id'] ))
        {
                $error->push(_('You are already logged in.'));

                if(file_exists('auth/login.txt'))
                {
                        $handle = fopen('auth/login.txt', 'rt');
                        if($handle === false)
                        {
                                $error->push(_('Unable to open password database.'));                          
                        }
                        else
                        {
                                fscanf($handle, "%s", $user_id);
                                fscanf($handle, "%s", $file_username);
                                fscanf($handle, "%s", $file_password);
                                fclose($handle);

                                $form_login_username = $file_username;
                                $form_login_password = '';
                        }
                }
        }

        // Not logged - in yet...
        else
        {
                // Form submitted
                if(isset($_POST['form_login_submit']))
                {
                        if(!isset($_POST['form_login_username']))
                        {
                                $error->push(_('Please enter a valid username.'));
                        }
                        elseif(!isset($_POST['form_login_password']))
                        {
                                $error->push(_('Please enter a valid password.'));
                        }
                        elseif($_POST['form_login_username'] === '')
                        {
                                $error->push(_('Username can\'t be empty.'));
                        }
                        elseif(strlen( $_POST['form_login_username']) > 20 || strlen($_POST['form_login_username']) < 4)
                        {
                                $error->push(_('Username must have [4-20] characters.'));
                        }
                        elseif(strlen( $_POST['form_login_password']) > 20 || strlen($_POST['form_login_password']) < 4)
                        {
                                $error->push(_('Password must have [4-20] characters.'));
                        }
                        elseif(ctype_alnum($_POST['form_login_username']) != true)
                        {
                                $error->push(_('Username must be alpha numeric.'));
                        }
                        elseif(ctype_alnum($_POST['form_login_password']) != true)
                        {
                                $error->push(_('Password must be alpha numeric.'));
                        }
                        else
                        {
                                $form_login_username = filter_var($_POST['form_login_username'], FILTER_SANITIZE_STRING);
                                $form_login_password = filter_var($_POST['form_login_password'], FILTER_SANITIZE_STRING);

                                $form_login_password = sha1( $form_login_password );
                               
                                if(!isset($_POST['form_login_offline']))
                                {
                                        $_SESSION['offline'] = false;
                                }
                                elseif($_POST['form_login_offline'] == "on")
                                {
                                        $_SESSION['offline'] = true;
                                }

                                if(!file_exists('auth/login.txt'))
                                {
                                        $error->push(_('Unable to login: there is no account yet.'));
                                }
                                else
                                {
                                        $handle = fopen('auth/login.txt', 'rt');
                                        if($handle === false)
                                        {
                                                $error->push(_('Unable to open password database.'));
                                        }
                                        else
                                        {
                                                fscanf($handle, "%s", $user_id);
                                                fscanf($handle, "%s", $file_username);
                                                fscanf($handle, "%s", $file_password);
                                                fclose($handle);

                                                if($form_login_username == $file_username && $form_login_password == $file_password)
                                                {
                                                        $_SESSION['user_id'] = $user_id;
                                                        if($_SESSION['offline'] === false)
                                                        {
                                                                $error->push(_('You are now logged in (online mode).'));
                                                        }
                                                        else
                                                        {
                                                                $error->push(_('You are now logged in (offline mode).'));
                                                        }
                                                       
                                                        config_load();
                                                }
                                                else
                                                {
                                                        echo "<p>\n";
                                                        $error->push(_('Login failed. Please retry.'));
                                                        echo "</p>\n";
                                                }

                                                $form_login_password = '';
                                        }
                                }
                        }
                }
                else
                {
                        if(file_exists('auth/login.txt'))
                        {
                                $handle = fopen('auth/login.txt', 'rt');
                                if($handle === false)
                                {
                                        $error->push(_('Unable to open password database.'));
                                }

                                fscanf($handle, "%s", $user_id);
                                fscanf($handle, "%s", $file_username);
                                fscanf($handle, "%s", $file_password);
                                fclose($handle);
                        }
                }
        }
        ?>

        <?php
        $id = link_get_id_from_filename("auth_login.php");
        echo "<form action=\"index.php?id_page=$id\" method=\"post\">";
        ?>

        <fieldset>
                <legend>
                        <?php echo _('Authentication'); ?>
                </legend>

                <?php
                if(!isset($_POST['form_login_username']) && isset($_POST['form_login_submit']))
                {
                        echo "<font color='#FF0000'> Username is required </font><BR>";
                }
                ?>
                <label for="form_login_username">
                        <?php echo _('Username'); ?>:
                </label>
                <input type="text" id="form_login_username" name="form_login_username" value="<?php echo $form_login_username; ?>" maxlength="20" title="Enter your username here." />
                <br/>

                <label for="form_login_password">
                        <?php echo _('Password'); ?>:
                </label>
                <input type="text" id="form_login_password" name="form_login_password" value="<?php echo $form_login_password; ?>" maxlength="20" title="Enter your password here." />
                <br/>
               
                <label for="form_login_offline">
                        <?php echo _('Stay offline'); ?>:
                </label>
                <input type="checkbox" id="form_login_offline" name="form_login_offline"
                <?php if($_SESSION['offline'] == true) echo "checked=\"checked\""; ?> />
                <br/>

                <hr/>

                <div class="buttons">
                        <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" />
                        <input type="submit" name="form_login_submit" value=<?php echo _('Login');?> alt="login" id="form_login_submit" />
                </div>

                <div class="links">
                        <?php
                        $id = link_get_id_from_filename("auth_adduser.php");
                        echo "<a href=\"index.php?id_page=$id\">" . _('First connection?') . '</a>';
                        ?>
                       
                        <br />

                        <?php
                        $id = link_get_id_from_filename("auth_pwdlost.php");
                        echo "<a href=\"index.php?id_page=$id\">" . _('Password lost?') . '</a>';
                        ?>

                        <br />

                        <?php
                        $id = link_get_id_from_filename("auth_changepwd.php");
                        echo "<a href=\"index.php?id_page=$id\">" . _('Need to change password?') . '</a>';
                        ?>
                </div>

        </fieldset>
        </form>

        <?php echo $error->display(); ?>

</div>