Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.74 by tani, Sat Feb 26 05:11:31 2005 UTC revision 1.75 by aga4096, Thu Mar 3 10:13:00 2005 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.75  2005/03/03 10:13:00  aga4096
6     * ・isValidSessionでtimestampを更新するよう修正.
7     * ・sessionはisValidSessionしない限り1時間でタイムアウトするよう修正.
8     * ・loginUser, createSessionでタイムアウトしたsessionを削除するよう修正.
9     *
10   * Revision 1.74  2005/02/26 05:11:31  tani   * Revision 1.74  2005/02/26 05:11:31  tani
11   * getGroupItemID追加.   * getGroupItemID追加.
12   *   *
# Line 3044  static result_t addSession( userid_t uid Line 3049  static result_t addSession( userid_t uid
3049      return ret;      return ret;
3050  }  }
3051    
3052    /** 全てのタイムアウトしたセッションを削除.
3053     */
3054    static void deleteTimeoutSession(){
3055        time_t now = time(NULL);
3056        string sql;
3057        if( dbtype == DBTYPE_MYSQL ){
3058            sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE unix_timestamp(timestamp) < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC);
3059        }else if( dbtype == DBTYPE_SQLITE ){
3060            sql = "DELETE FROM " + dbprefix + "_xnpaccount_session WHERE timestamp < " + unsignedIntToString(now-SESSION_TIMEOUT_SEC);
3061        }
3062        querySimple( "deleteTimeoutSession", sql );
3063    }
3064    
3065  /**  /**
3066   *   *
# Line 3106  result_t loginUser(const char* uname, co Line 3123  result_t loginUser(const char* uname, co
3123          ret = RES_ERROR;          ret = RES_ERROR;
3124      }      }
3125            
3126        deleteTimeoutSession();
3127      return ret;      return ret;
3128  }  }
3129    
# Line 3194  result_t createSession( const char* sess Line 3212  result_t createSession( const char* sess
3212      }else{      }else{
3213          ret = RES_ERROR;          ret = RES_ERROR;
3214      }      }
3215        deleteTimeoutSession();
3216      return ret;      return ret;
3217  }  }
3218    
# Line 4856  bool isValidSessionID( sessionid_t sid ) Line 4875  bool isValidSessionID( sessionid_t sid )
4875          }          }
4876      }      }
4877            
4878      sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid );      time_t now = time(NULL);
4879        if( dbtype == DBTYPE_MYSQL ){
4880            sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid )
4881                + " AND unix_timestamp(timestamp) > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC);
4882        }else if( dbtype == DBTYPE_SQLITE ){
4883            sql = "SELECT * FROM " + dbprefix + "_xnpaccount_session WHERE sid=" + unsignedIntToString( sid )
4884                + " AND timestamp > " + unsignedIntToString(now-SESSION_TIMEOUT_SEC);
4885        }
4886        
4887      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {      if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) {
4888          if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){          if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){
4889              if( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){              if( ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS ){
# Line 4886  bool isValidSessionID( sessionid_t sid ) Line 4913  bool isValidSessionID( sessionid_t sid )
4913          syslog_printf( "isValidSessionID %s", getLastErrorString( ) );          syslog_printf( "isValidSessionID %s", getLastErrorString( ) );
4914          ret = false;          ret = false;
4915      }      }
4916        if ( ret == true ){
4917            // timestampを更新する
4918            if( dbtype == DBTYPE_MYSQL ){
4919                sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=from_unixtime(" + unsignedIntToString(now)
4920                  + ") WHERE sid=" + unsignedIntToString( sid );
4921            }else if( dbtype == DBTYPE_SQLITE ){
4922                sql = "UPDATE " + dbprefix + "_xnpaccount_session set timestamp=" + unsignedIntToString(now)
4923                  + " WHERE sid=" + unsignedIntToString( sid );
4924            }
4925            querySimple("isValidSession", sql);
4926        }
4927      return ret;      return ret;
4928  }  }
4929    

Legend:
Removed from v.1.74  
changed lines
  Added in v.1.75

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26