Changeset 206

Show
Ignore:
Timestamp:
08/28/04 15:20:34 (9 years ago)
Author:
benoitg
Message:

2004-08-28 Benoit Gr�goire <bock@…>

  • Fix big gaping security hole in login page (password would be ignored if the username was used to login)
  • PostgreSql? port
  • Change the method to determine who is online
  • Stop keeping unused token once user successfully logs in.
  • Fix missing update of token update date.
  • Counters wouldn't get updated for stage=LOGOUT
  • wifidog/auth/index.php: Added a Messages: response in addition to Auth: so we can know what the hell the server is up to. Currently you need to run wifidog in debug level 7 to see it. That message should be parsed so it is visible in debug level 6.
  • wifidog/auth/index.php: Fix code injection vulnerability.
Location:
trunk/wifidog-auth
Files:
2 added
1 removed
8 modified

Legend:

Unmodified
Added
Removed
  • trunk/wifidog-auth/ChangeLog

    r204 r206  
    11# $Header$ 
     22004-08-28 Benoit Gr�goire  <bock@step.polymtl.ca> 
     3        * Fix big gaping security hole in login page (password would be ignored if the username was used to login) 
     4        * PostgreSql port 
     5        * Change the method to determine who is online 
     6        * Stop keeping unused token once user successfully logs in. 
     7        * Fix missing update of token update date. 
     8        * Counters wouldn't get updated for stage=LOGOUT 
     9        * wifidog/auth/index.php:  Added a Messages: response in addition to Auth: so we can know what the hell the server is up to.  Currently you need to run wifidog in debug level 7 to see it. That message should be parsed so it is visible in debug level 6. 
     10        * wifidog/auth/index.php:   Fix code injection vulnerability. 
     11         
    2122004-08-27 Benoit Gr�goire  <bock@step.polymtl.ca> 
    313        * SSL support and RSS improvement 
  • trunk/wifidog-auth/wifidog/admin/import_user_database.php

    r174 r206  
    173173              $status = ACCOUNT_STATUS_ALLOWED; 
    174174              $token = gentoken(); 
    175               $reg_date = time(); 
     175              $reg_date = iso8601_date(time()); 
    176176              $password_hash = $db->EscapeString($user['passwd_hash']); 
    177177              $username =  $db->EscapeString($username); 
  • trunk/wifidog-auth/wifidog/auth/index.php

    r158 r206  
    2020   *                                                                  * 
    2121   \********************************************************************/ 
    22   /**@file 
     22  /**@file index.php 
     23   * This is the main auth handler, be very carefull while editing this file. 
    2324   * @author Copyright (C) 2004 Benoit Gr�goire et Philippe April 
    2425   */ 
     
    2627require_once BASEPATH.'include/common.php'; 
    2728 
    28 $auth_response = 0; 
    29 $db->ExecSqlUniqueRes("SELECT * FROM users,connections WHERE users.user_id=connections.user_id AND connections.token='{$_REQUEST['token']}' LIMIT 1", $info, false); 
     29$auth_response = ACCOUNT_STATUS_DENIED; 
     30$auth_message = ''; 
     31$token = $db->EscapeString($_REQUEST['token']); 
     32$db->ExecSqlUniqueRes("SELECT * FROM users,connections WHERE users.user_id=connections.user_id AND connections.token='$token'", $info, false); 
    3033if ($info != null) 
    3134  { 
    32     switch($_REQUEST['stage']) 
     35    if ($_REQUEST['stage']== STAGE_LOGIN) 
    3336      { 
    34       case STAGE_LOGIN: 
    3537        if ($info['token_status'] == TOKEN_UNUSED)  
    3638          { 
    3739            $auth_response = $info['account_status']; 
    38  
    39             /* Logging in implies that all other tokens should expire */ 
    40             $sql = ''; 
    41             $sql .= "UPDATE connections SET " . 
    42               "timestamp_out=NOW()," . 
    43               "token_status='" . TOKEN_USED . "' " . 
    44               "WHERE user_id = '{$info['user_id']}' " . 
    45               "AND token_status='" . TOKEN_INUSE . "';\n"; 
    46             $db->ExecSqlUpdate($sql, false); 
     40            /* Login the user */ 
     41            $mac = $db->EscapeString($_REQUEST['mac']); 
     42            $ip = $db->EscapeString($_REQUEST['ip']); 
    4743            $sql = "UPDATE connections SET " . 
    4844              "token_status='" . TOKEN_INUSE . "'," . 
    49               "user_mac='{$_REQUEST['mac']}'," . 
    50               "user_ip='{$_REQUEST['ip']}' " . 
    51               "WHERE conn_id='{$info['conn_id']}' LIMIT 1;\n"; 
    52                     $db->ExecSqlUpdate($sql, false); 
    53             $sql = "UPDATE users SET " . 
    54               "online_status='" . ONLINE_STATUS_ONLINE . "' " . 
    55               "WHERE user_id='{$info['user_id']}' LIMIT 1;\n"; 
     45              "user_mac='$mac'," . 
     46              "user_ip='$ip'," . 
     47              "last_updated=NOW()" . 
     48              "WHERE conn_id='{$info['conn_id']}';\n"; 
     49            $db->ExecSqlUpdate($sql, false); 
     50             
     51            /* Logging in with a new token implies that all other active tokens should expire */ 
     52            $sql = "UPDATE connections SET " . 
     53              "timestamp_out=NOW(), token_status='" . TOKEN_USED . "' " . 
     54              "WHERE user_id = '{$info['user_id']}' AND token_status='" . TOKEN_INUSE . "' AND token!='$token';\n"; 
     55            $db->ExecSqlUpdate($sql, false); 
     56            /* Delete all unused tokens for this user, so we don't fill the database with them */ 
     57            $sql = "DELETE FROM connections " 
     58              . "WHERE token_status='" . TOKEN_UNUSED . "' AND user_id = '{$info['user_id']}';\n"; 
    5659            $db->ExecSqlUpdate($sql, false); 
    5760          } 
    58         break; 
     61        else 
     62          { 
     63            $auth_message .= "| Tried to login with a token that wasn't TOKEN_UNUSED. "; 
     64          } 
     65      } 
     66    else if($_REQUEST['stage']==STAGE_LOGOUT || $_REQUEST['stage']==STAGE_COUNTERS) 
     67      { 
     68        if($_REQUEST['stage']==STAGE_LOGOUT) 
     69          { 
     70            $db->ExecSqlUpdate("UPDATE connections SET " . 
     71                               "timestamp_out=NOW()," . 
     72                               "token_status='" . TOKEN_USED . "' " . 
     73                               "WHERE conn_id='{$info['conn_id']}';\n"); 
     74            $auth_message .= "| User is now logged out. "; 
     75          } 
     76         
     77        if( $_REQUEST['stage']==STAGE_COUNTERS) 
     78          { 
     79            if ($info['token_status'] == TOKEN_INUSE) 
     80              { 
     81                /* This is for the 15 minutes validation period */ 
     82                if (($info['account_status'] == ACCOUNT_STATUS_VALIDATION) && (time() >= (strtotime($info['reg_date']) + (60*15))))  
     83                  { 
     84                    $auth_response = ACCOUNT_STATUS_VALIDATION_FAILED; 
     85                    $db->ExecSqlUpdate("UPDATE users SET account_status='".ACCOUNT_STATUS_VALIDATION_FAILED."' WHERE user_id='{$info['user_id']}'"); 
     86                    $auth_message .= "| The validation period has now expired. "; 
     87                  } 
     88                else 
     89                  { 
     90                    $auth_response = $info['account_status']; 
     91                  } 
     92              } 
    5993 
    60       case STAGE_LOGOUT: 
    61         $sql = ''; 
    62         $sql .= "UPDATE connections SET " . 
    63           "timestamp_out=NOW()," . 
    64           "token_status='" . TOKEN_USED . "' " . 
    65           "WHERE conn_id='{$info['conn_id']}' LIMIT 1;\n"; 
     94          } 
    6695         
    67         $sql .= "UPDATE users SET " . 
    68           "online_status='" . ONLINE_STATUS_OFFLINE . "'" . 
    69           "WHERE user_id='{$info['user_id']}' LIMIT 1;\n"; 
    70         $db->ExecSqlUpdate($sql); 
    71         break; 
    72          
    73       case STAGE_COUNTERS: 
    74         if ($info['token_status'] == TOKEN_INUSE) { 
    75           $auth_response = $info['account_status']; 
     96        if (!empty($_REQUEST['incoming']) && !empty($_REQUEST['outgoing'])) 
     97          { 
     98            $incoming = $db->EscapeString($_REQUEST['incoming']); 
     99            $outgoing = $db->EscapeString($_REQUEST['outgoing']); 
    76100 
    77           /* This is for the 15 minutes validation period */ 
    78           if (($info['account_status'] == ACCOUNT_STATUS_VALIDATION) && (time() >= ($info['reg_date'] + (60*15))))  
    79             { 
    80               $info['account_status'] = ACCOUNT_STATUS_VALIDATION_FAILED; 
    81               $db->ExecSqlUpdate("UPDATE users SET account_status='{$info['account_status']}' WHERE user_id='{$info['user_id']}'"); 
    82             } 
     101            if (($incoming > $info['incoming']) || 
     102                ($outgoing > $info['outgoing']))  
     103              { 
     104                $db->ExecSqlUpdate("UPDATE connections SET " . 
     105                                   "incoming='$incoming'," . 
     106                                   "outgoing='$outgoing'," . 
     107                                   "last_updated=NOW() " . 
     108                                   "WHERE conn_id='{$info['conn_id']}'" 
     109                                   ); 
     110                    $auth_message .= "| Updated counters. "; 
     111              } 
     112            else 
     113              { 
     114                    $auth_message .= "| Warning:  Incoming or outgoing counter is smaller than what is stored in the database; counters not updated. "; 
    83115 
    84           if ($_REQUEST['incoming'] && $_REQUEST['outgoing']) 
    85             { 
    86               if (($_REQUEST['incoming'] > $info['incoming']) || 
    87                   ($_REQUEST['outgoing'] > $info['outgoing']))  
    88                 { 
    89                   $db->ExecSqlUpdate("UPDATE connections SET " . 
    90                                      "incoming='{$_REQUEST['incoming']}'," . 
    91                                      "outgoing='{$_REQUEST['outgoing']}' " . 
    92                                      "WHERE conn_id='{$info['conn_id']}' LIMIT 1" 
    93                                      ); 
    94                 } 
    95             } 
    96         } 
    97  
    98         break; 
    99  
    100       default: 
    101         echo "Unknown stage"; 
    102         break; 
    103       }// End switch 
     116              } 
     117          } 
     118        else 
     119          { 
     120            $auth_message .= "| Incoming or outgoing counter is missing; counters not updated. "; 
     121          } 
     122      } 
     123    else 
     124      { 
     125        $auth_message .= "| Error: Unknown stage. "; 
     126        $auth_response = ACCOUNT_STATUS_ERROR; 
     127      } 
     128  } 
     129else 
     130  { 
     131    $auth_message .= "| Error: couldn't find the requested token. "; 
     132    $auth_response = ACCOUNT_STATUS_ERROR; 
    104133  } 
    105134 
    106135echo "Auth: $auth_response\n"; 
     136echo "Messages: $auth_message\n" 
    107137?> 
  • trunk/wifidog-auth/wifidog/classes/AbstractDbPostgres.php

    r204 r206  
    11<?php 
    22/********************************************************************\ 
    3  * This program is free software; you can redistribute it and/or                * 
    4  * modify it under the terms of the GNU General Public License as               * 
    5  * published by the Free Software Foundation; either version 2 of               * 
    6  * the License, or (at your option) any later version.                                  * 
    7  *                                                                                                              * 
    8  * This program is distributed in the hope that it will be useful,                      * 
    9  * but WITHOUT ANY WARRANTY; without even the implied warranty of       * 
    10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        * 
    11  * GNU General Public License for more details.                                       * 
    12  *                                                                                                              * 
    13  * You should have received a copy of the GNU General Public License      * 
    14  * along with this program; if not, contact:                                                            * 
    15  *                                                                                                                                              * 
    16  * Free Software Foundation           Voice:  +1-617-542-5942                           * 
    17  * 59 Temple Place - Suite 330        Fax:    +1-617-542-2652                           * 
    18  * Boston, MA  02111-1307,  USA       gnu@gnu.org                                       * 
    19  *                                                                                                                                              * 
     3 * This program is free software; you can redistribute it and/or    * 
     4 * modify it under the terms of the GNU General Public License as   * 
     5 * published by the Free Software Foundation; either version 2 of   * 
     6 * the License, or (at your option) any later version.              * 
     7 *                                                                  * 
     8 * This program is distributed in the hope that it will be useful,  * 
     9 * but WITHOUT ANY WARRANTY; without even the implied warranty of   * 
     10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    * 
     11 * GNU General Public License for more details.                     * 
     12 *                                                                  * 
     13 * You should have received a copy of the GNU General Public License* 
     14 * along with this program; if not, contact:                        * 
     15 *                                                                  * 
     16 * Free Software Foundation           Voice:  +1-617-542-5942       * 
     17 * 59 Temple Place - Suite 330        Fax:    +1-617-542-2652       * 
     18 * Boston, MA  02111-1307,  USA       gnu@gnu.org                   * 
     19 *                                                                  * 
    2020\********************************************************************/ 
    2121/**@file AbstractBd.php 
     
    2323*/ 
    2424error_reporting(E_ALL); 
    25 /** Classe statique, permet d'abstraire la connexion à la base de donnée 
     25/** Classe statique, permet d'abstraire la connexion � la base de donn�e 
    2626 */ 
    27 class AbstractBd 
     27class AbstractDb 
    2828{ 
    29         function connexionBd($str_baseDonnees) 
    30         { 
    31                 if ($str_baseDonnees == NULL) 
    32                 { 
    33                         $str_baseDonnees = CONF_DATABASE_NAME; 
    34                 } 
    35  
    36                 $conn_string = "host=".CONF_DATABASE_HOST." dbname=$str_baseDonnees user=".CONF_DATABASE_USER." password=".CONF_DATABASE_PASSWORD.""; 
     29        function connexionDb($db_name) 
     30        { 
     31                if ($db_name == NULL) 
     32                { 
     33                        $db_name = CONF_DATABASE_NAME; 
     34                } 
     35 
     36                $conn_string = "host=".CONF_DATABASE_HOST." dbname=$db_name user=".CONF_DATABASE_USER." password=".CONF_DATABASE_PASSWORD.""; 
    3737                $ptr_connexion = pg_connect($conn_string); 
    3838 
    3939                if ($ptr_connexion == FALSE) 
    4040                { 
    41                         echo "Impossible de le connecter à $conn_string"; 
     41                        echo "<p class=warning>Unable to connect to database on ".CONF_DATABASE_HOST."</p>\n"; 
    4242                        return FALSE; 
    4343                } 
     
    4646        } 
    4747 
    48         /**Exécute la requête, et retourne le résultat.  Affiche l'erreur s'il y a lieu. 
    49          @param $sql Requête SELECT à exécuter 
    50          @param $returnResults un array à deux dimensions des rangées de résultats, NULL si aucun résultats. 
    51          @param $debug Si TRUE, affiche les résultats bruts de la requête 
    52          @return TRUE si la requete a été effectuée avec succès, FALSE autrement. 
     48        /**Ex�cute la requ�te, et retourne le r�sultat.  Affiche l'erreur s'il y a lieu. 
     49         @param $sql Requ�te SELECT � ex�cuter 
     50         @param $returnResults un array � deux dimensions des rang�es de r�sultats, NULL si aucun r�sultats. 
     51         @param $debug Si TRUE, affiche les r�sultats bruts de la requ�te 
     52         @return TRUE si la requete a �t� effectu�e avec succ�s, FALSE autrement. 
    5353        */ 
    54         function ExecuterSql($sql, & $returnResults, $debug) 
    55         { 
    56                 $connection = $this -> connexionBd(NULL); 
    57                 if ($debug == TRUE) 
    58                 { 
    59                         echo "<hr /><p>ExecuterSql(): DEBUG: Requête:<br>\n<pre>$sql</pre></p>\n<p>Plan:<br />\n"; 
     54        function ExecSql($sql, & $returnResults, $debug=false) 
     55        { 
     56                $connection = $this -> connexionDb(NULL); 
     57                if ($debug == TRUE) 
     58                { 
     59                        echo "<hr /><p>ExecuterSql(): DEBUG: Requte:<br>\n<pre>$sql</pre></p>\n<p>Plan:<br />\n"; 
    6060                        $result = pg_query($connection, "EXPLAIN ".$sql); 
    6161 
     
    8989                if ($debug == TRUE) 
    9090                { 
    91                         echo "<P>Temps écoulé pour la requête SQL: $sql_timetaken seconde(s)</P>\n"; 
     91                        echo "<P>Temps �coul� pour la requ�te SQL: $sql_timetaken seconde(s)</P>\n"; 
    9292                } 
    9393 
    9494                if ($result == FALSE) 
    9595                { 
    96                         echo "<p>ExecuterSql(): ERREUR: Lors de l'exécution de la requête SQL:<br>$sql</p>"; 
     96                        echo "<p>ExecuterSql(): ERREUR: Lors de l'ex�cution de la requ�te SQL:<br>$sql</p>"; 
    9797                        echo "<p>L'erreur est:<br>".pg_last_error($connection)."</p>"; 
    9898                        $returnResults = NULL; 
     
    112112                                { 
    113113                                        $num_rows = pg_num_rows($result); 
    114                                         echo "<p>ExecuterSql(): DEBUG: Il y a $num_rows résultats:<br><TABLE class='spreadsheet'>"; 
     114                                        echo "<p>ExecuterSql(): DEBUG: Il y a $num_rows rsultats:<br><TABLE class='spreadsheet'>"; 
    115115                                        if ($returnResults != NULL) 
    116116                                        { 
    117                                                 //On affiche l'en-tête des colonnes une seule fois*/ 
     117                                                //On affiche l'en-tte des colonnes une seule fois*/ 
    118118                                                echo "<TR class='spreadsheet'>"; 
    119119                                                while (list ($col_name, $col_content) = each($returnResults[0])) 
     
    139139        } 
    140140 
    141         /**Retourne une chaine de caractère dans un format compatible pour stockage dans la bd 
    142          @param $chaine La chaîne de caractère à nettoyer 
    143          @return La chaîne nettoyée 
    144          */ 
    145         function NettoyerChaine($chaine) 
     141        /**Retourne une chaine de caractre dans un format compatible pour stockage dans la bd 
     142         @param $chaine La cha�ne de caract�re � nettoyer 
     143         @return La cha�ne nettoy�e 
     144         */ 
     145        function EscapeString($chaine) 
    146146        { 
    147147                if (true) //if (!get_magic_quotes_gpc()) 
     
    155155        } 
    156156 
    157         /** Nettoye une chaine de caractère dans un format compatible bytea. 
    158          @param $chaine La chaîne de caractère à nettoyer 
    159          @return La chaîne nettoyée (escaped string) 
     157        /** Nettoye une chaine de caractre dans un format compatible bytea. 
     158         @param $chaine La cha�ne de caract�re � nettoyer 
     159         @return La cha�ne nettoy�e (escaped string) 
    160160         */ 
    161161 
     
    166166        } 
    167167 
    168         /** Reconverti une chaine de caractère en format bytea pur. 
    169          @param $chaine La chaîne de caractère  
    170          @return La chaîne reconvertie  en format original (unescaped string) 
     168        /** Reconverti une chaine de caractre en format bytea pur. 
     169         @param $chaine La cha�ne de caract�re  
     170         @return La chane reconvertie  en format original (unescaped string) 
    171171         */ 
    172172 
     
    177177        } 
    178178 
    179         /**Exécute une requête pour laquelle on prévoit un résultat UNIQUE.  Si le résultat n'est pas unique, un avertissement est affiché 
    180          @param $sql Requête SELECT à exécuter 
    181          @param $retVal un array des colonnes de la rangée retournée, NULL si aucun résultats. 
    182          @param $debug Si TRUE, affiche les résultats bruts de la requête 
    183          @return TRUE si la requete a été effectuée avec succès, FALSE autrement. 
    184          */ 
    185         function ExecuterSqlResUnique($sql, & $retVal, $debug) 
     179        /**Ex�cute une requ�te pour laquelle on pr�voit un r�sultat UNIQUE.  Si le r�sultat n'est pas unique, un avertissement est affich� 
     180         @param $sql Requ�te SELECT � ex�cuter 
     181         @param $retVal un array des colonnes de la rang�e retourn�e, NULL si aucun r�sultats. 
     182         @param $debug Si TRUE, affiche les r�sultats bruts de la requ�te 
     183         @return TRUE si la requete a �t� effectu�e avec succ�s, FALSE autrement. 
     184         */ 
     185        function ExecSqlUniqueRes($sql, & $retVal, $debug=false) 
    186186        { 
    187187                $retval = TRUE; 
    188188                if ($debug == TRUE) 
    189189                { 
    190                         echo "<hr /><p>Requête: <br><pre>$sql</pre></p>"; 
    191                 } 
    192                 $connection = $this -> connexionBd(NULL); 
     190                        echo "<hr /><p>Requte: <br><pre>$sql</pre></p>"; 
     191                } 
     192                $connection = $this -> connexionDb(NULL); 
    193193 
    194194                $sql_starttime = microtime(); 
     
    214214                if ($debug == TRUE) 
    215215                { 
    216                         echo "<P>Temps écoulé pour la requête SQL: $sql_timetaken seconde(s)</P>\n"; 
     216                        echo "<P>Temps �coul� pour la requ�te SQL: $sql_timetaken seconde(s)</P>\n"; 
    217217                } 
    218218 
    219219                if ($result == FALSE) 
    220220                { 
    221                         echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'exécution de la requête SQL:<br>$sql</p>"; 
     221                        echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'ex�cution de la requ�te SQL:<br>$sql</p>"; 
    222222                        echo "<p>L'erreur est:<br>".pg_last_error($connection)."</p>"; 
    223223                        $retval = FALSE; 
     
    229229                        if (pg_num_rows($result) > 1) 
    230230                        { 
    231                                 echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'exécution de la requête SQL:<br>$sql</p>"; 
    232                                 echo "<p>Il y a ".pg_num_rows($result)." résultats alors qu'il ne devrait y en avoir qu'un seul.</p>"; 
     231                                echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'ex�cution de la requ�te SQL:<br>$sql</p>"; 
     232                                echo "<p>Il y a ".pg_num_rows($result)." rsultats alors qu'il ne devrait y en avoir qu'un seul.</p>"; 
    233233                                $retval = FALSE; 
    234234                                $debug = true; 
     
    239239                        { 
    240240                                $num_rows = pg_num_rows($result); 
    241                                 echo "<p>ExecuterSqlResUnique(): DEBUG: Il y a $num_rows résultats:<br><TABLE class='spreadsheet'>"; 
     241                                echo "<p>ExecuterSqlResUnique(): DEBUG: Il y a $num_rows rsultats:<br><TABLE class='spreadsheet'>"; 
    242242                                if ($returnResults != NULL) 
    243243                                { 
    244                                         //On affiche l'en-tête des colonnes une seule fois*/ 
     244                                        //On affiche l'en-tte des colonnes une seule fois*/ 
    245245                                        echo "<TR class='spreadsheet'>"; 
    246246                                        while (list ($col_name, $col_content) = each($returnResults[0])) 
     
    268268        } 
    269269 
    270         /**Exécute une requête visant à modifier la base de donnée, et donc ne retournant aucun résultat. 
    271          @param $sql Requête SELECT à exécuter 
    272          @param $debug Si TRUE, affiche la requête brute 
    273          */ 
    274         function ExecuterSqlUpdate($sql, $debug) 
    275         { 
    276                 $connection = $this -> connexionBd(NULL); 
    277                 if ($debug == TRUE) 
    278                 { 
    279                         echo "<hr /><p>ExecuterSqlUpdate(): DEBUG: Requête:<br>\n<pre>$sql</pre></p>\n"; 
     270        /**Ex�cute une requ�te visant � modifier la base de donn�e, et donc ne retournant aucun r�sultat. 
     271         @param $sql Requ�te SELECT � ex�cuter 
     272         @param $debug Si TRUE, affiche la requte brute 
     273         */ 
     274        function ExecSqlUpdate($sql, $debug=false) 
     275        { 
     276                $connection = $this -> connexionDb(NULL); 
     277                if ($debug == TRUE) 
     278                { 
     279                        echo "<hr /><p>ExecuterSqlUpdate(): DEBUG: Requte:<br>\n<pre>$sql</pre></p>\n"; 
    280280                } 
    281281 
     
    302302                if ($debug == TRUE) 
    303303                { 
    304                         echo "<P>".pg_affected_rows($result)." rangées affectées par la requête SQL<br>\n"; 
    305                         echo "Temps écoulé: $sql_timetaken seconde(s)</P>\n"; 
     304                        echo "<P>".pg_affected_rows($result)." rang�es affect�es par la requ�te SQL<br>\n"; 
     305                        echo "Temps �coul�: $sql_timetaken seconde(s)</P>\n"; 
    306306                } 
    307307 
    308308                if ($result == FALSE) 
    309309                { 
    310                         echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'exécution de la requête SQL:<br><pre>$sql</pre></p>"; 
     310                        echo "<p>ExecuterSqlResUnique(): ERREUR: Lors de l'ex�cution de la requ�te SQL:<br><pre>$sql</pre></p>"; 
    311311                        echo "<p>L'erreur est:<br>".pg_last_error()."<br>".pg_result_error($result)."</p>"; 
    312312                } 
     
    315315                        if ($debug == TRUE) 
    316316                        { 
    317                                 echo "<p>ExecuterSqlUpdate(): DEBUG: ".pg_affected_rows($result)." rangée(s) affectée(s)</p><hr />\n"; 
     317                                echo "<p>ExecuterSqlUpdate(): DEBUG: ".pg_affected_rows($result)." rang�e(s) affect�e(s)</p><hr />\n"; 
    318318                        } 
    319319                        return $result; 
     
    365365        } 
    366366 
    367 } /* end class AbstractBd */ 
     367} /* end class AbstractDb */ 
    368368?> 
    369  
  • trunk/wifidog-auth/wifidog/config.php

    r205 r206  
    44define('CONF_DATABASE_NAME',   'wifidog'); 
    55define('CONF_DATABASE_USER',   'wifidog'); 
    6 define('CONF_DATABASE_PASSWORD',   ''); 
     6define('CONF_DATABASE_PASSWORD',   'wifidogtest'); 
    77 
    88/*************************** Common setup option.  Adjust to suit your environment *******************************/ 
     
    3030 
    3131/** Defines which Database management software you want to use */ 
    32 define('CONF_DBMS',DBMS_MYSQL); 
     32define('CONF_DBMS',DBMS_POSTGRES); 
    3333 
    3434/***** You should normally not have to edit anything below this ******/ 
  • trunk/wifidog-auth/wifidog/include/common.php

    r204 r206  
    114114} 
    115115 
     116function iso8601_date($unix_timestamp) { 
     117   $tzd = date('O',$unix_timestamp); 
     118   $tzd = substr(chunk_split($tzd, 3, ':'),0,6); 
     119   $date = date('Y-m-d\TH:i:s', $unix_timestamp) . $tzd; 
     120   return $date;  
     121} 
     122 
    116123/** Cleanup dangling tokens and connections from the database, left if a gateway crashed, etc. */ 
    117124function garbage_collect() 
     
    121128  // 10 minutes 
    122129  $expiration = time() - 60*10; 
    123   $db -> ExecSqlUpdate ("UPDATE connections SET token_status='" . TOKEN_USED . "' WHERE UNIX_TIMESTAMP(last_updated) < $expiration"); 
     130  $expiration=iso8601_date($expiration); 
     131  $db -> ExecSqlUpdate ("UPDATE connections SET token_status='" . TOKEN_USED . "' WHERE last_updated < '$expiration' AND token_status = '".TOKEN_INUSE."'", false); 
    124132 
    125  
    126   $db -> ExecSql("SELECT user_id FROM users WHERE online_status='" . ONLINE_STATUS_ONLINE . "'", $users); 
     133/* Not needed anymore 
     134  $db -> ExecSql("SELECT user_id FROM users WHERE online_status='" . ONLINE_STATUS_ONLINE . "'", $users, true); 
    127135  if($users!=null) 
    128136    { 
    129137      foreach ($users as $user) 
    130138      { 
    131         $db -> ExecSqlUniqueRes("SELECT COUNT(*) FROM connections WHERE user_id='{$user['user_id']}' AND token_status='" . TOKEN_INUSE . "'",$count_row, false); 
     139        $db -> ExecSqlUniqueRes("SELECT COUNT(*) FROM connections WHERE user_id='{$user['user_id']}' AND token_status='" . TOKEN_INUSE . "'",$count_row, true); 
    132140        if ($count_row['COUNT(*)'] != 1) 
    133141          { 
     
    136144      } 
    137145    } 
     146*/ 
    138147} 
    139148 
  • trunk/wifidog-auth/wifidog/login/index.php

    r204 r206  
    4040    $user = $db->EscapeString($_REQUEST['user']); 
    4141    $password_hash = get_password_hash($_REQUEST['pass']); 
    42     $db->ExecSqlUniqueRes("SELECT * FROM users WHERE user_id='$user' OR email='$user' AND pass='$password_hash'", $user_info, false); 
    43      
     42    $db->ExecSqlUniqueRes("SELECT * FROM users WHERE (user_id='$user' OR email='$user') AND pass='$password_hash'", $user_info, false); 
     43 
    4444    if ($user_info != null) 
    4545      { 
     
    5353            $node_ip = $db->EscapeString($_SERVER['REMOTE_ADDR']); 
    5454          } 
    55         $db->ExecSqlUpdate("INSERT INTO connections (user_id, token, token_status, timestamp_in, node_id, node_ip) VALUES ('{$user_info['user_id']}', '$token', '" . TOKEN_UNUSED . "', NOW(), '$node_id', '$node_ip')"); 
     55        $db->ExecSqlUpdate("INSERT INTO connections (user_id, token, token_status, timestamp_in, node_id, node_ip, last_updated) VALUES ('{$user_info['user_id']}', '$token', '" . TOKEN_UNUSED . "', NOW(), '$node_id', '$node_ip', NOW())"); 
    5656         
    5757        $login_successfull=true; 
     
    6868        else 
    6969          { 
    70             $login_failed_message = _('Incorrect password'); 
     70            $login_failed_message = _('Incorrect password (Maybe you have CAPS LOCK on?)'); 
    7171          } 
    7272      } 
  • trunk/wifidog-auth/wifidog/portal/index.php

    r204 r206  
    9292  } 
    9393 
     94/* Find out who is online */ 
    9495$db->ExecSql("SELECT users.user_id FROM users,connections " . 
    9596             "WHERE connections.token_status='" . TOKEN_INUSE . "' " . 
    96              "AND users.user_id=connections.user_id " . 
    97              "AND users.online_status='" . ONLINE_STATUS_ONLINE . "'" 
     97             "AND users.user_id=connections.user_id " 
    9898             ,$users, false); 
    9999if($users!=null) 
    100100  { 
    101      
    102101    foreach ($users as $user_info) 
    103102    {