char *user = GetConfValue("MySqlDb/User");
char *password = GetConfValue("MySqlDb/Password");
char *database = GetConfValue("MySqlDb/Database");
- char *saveLogStr = GetConfValue("SaveLogToMngDb");
my_bool reconnect;
+ char *confStr;
/* initialize mysql */
mysql_library_init(-1,NULL,NULL);
reconnect = TRUE;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);
- /* read a flag from conf file and hold in a variable */
- if(isNull(saveLogStr)) saveLogToMngDb = 0;
- else saveLogToMngDb = strtol(saveLogStr, NULL, 2);
+ /* read logmode flag from conf file and hold in a variable */
+ confStr = GetConfValue("SaveLogToMngDb");
+ if(isNull(confStr)) saveLogToMngDb = 0; /* no conf means no-log */
+ else saveLogToMngDb = strtol(confStr, NULL, 2);
+ /* adjust relation of logmode in conf and logtable in mngdb */
+ AdjustLogModeAndLogTable();
+
return TRUE;
}
/* send SQL query */
if (mysql_query(&mysql, queryStr)){
-
- /* lost of 'watchlist table' is ignored */
- if(strcmp(mysql_error(&mysql),
- "Table 'opengatem.watchlist' doesn't exist")!=0){
- err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
+ err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
mysql_error(&mysql));
- }
return ERROR;
}
-
res = mysql_use_result(&mysql);
/* output table name */
row = mysql_fetch_row(res);
/* if not found, row is NULL */
- if(row==NULL) found=FALSE;
- else found=TRUE;
+ if(row==NULL) found=FALSE;
+ else found=TRUE;
mysql_free_result(res);
return found;
}
+/******************************************
+is found table in management db
+input=table name
+return value: 1=found,0=not found or error
+******************************************/
+int isTableFoundInMngDb(char* table){
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ int found=FALSE;
+ char queryStr[BUFFMAXLN];
+
+ /* if no table, return false */
+ if(isNull(table)) return FALSE;
+
+ /* prepare query string */
+ snprintf(queryStr, BUFFMAXLN,
+ "show tables like '%s'", table);
+
+ /* send SQL query */
+ if (mysql_query(&mysql, queryStr)){
+ err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
+ mysql_error(&mysql));
+ return ERROR;
+ }
+ res = mysql_use_result(&mysql);
+
+ /* output table row */
+ row = mysql_fetch_row(res);
+
+ /* row==NULL means getting no record */
+ if(row==NULL) found=FALSE;
+ else found=TRUE;
+
+ mysql_free_result(res);
+ return found;
+}
+
+/******************************************
+set closeTime to unclosed sessions in mngdb
+return value: 1=success, 0=error
+******************************************/
+int updateCloseTimeToUnclosedSessionInMngDb(void){
+
+ char* queryStr="update sessionmd set closeTime=now() where closeTime=0";
+
+ /* send SQL query */
+ if (mysql_query(&mysql, queryStr)){
+ err_msg("ERR at %s#%d: mysql query: %s",__FILE__,__LINE__,
+ mysql_error(&mysql));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**********************************************************
+adjust the relation of logmode(SaveLogToMngDb) in conf file
+and logtable(sessionmd) in management db
+***********************************************************/
+void adjustLogModeAndLogTable(void){
+
+ /* check the existence of table sessionmd in management.db */
+ int isSessionTableFoundInMngDb = IsTableFoundInMngDb("sessionmd");
+
+ /* if logmode=off and session table exists, cleanup all sessions */
+ if(!saveLogToMngDb && isSessionTableFoundInMngDb){
+ UpdateCloseTimeToUnclosedSessionInMngDb();
+ }
+
+ /* if logmode=on and session table does not exist, write error */
+ if(saveLogToMngDb && !isSessionTableFoundInMngDb){
+ err_msg("ERR at %s#%d: please create mysql table. sample script is found in archive",
+ __FILE__,__LINE__);
+ }
+}
+
+
/********************************************
- routines for debugging output
+ routines for debugging
********************************************/
int QueryMacFromMngDb(char* macAddress, char* userId, char* extraId){
int ret;
}
int DelOldSessionLogInMngDb(void){
- int ret;
+ int ret;
if(debug>1) err_msg("DEBUG:=>delOldSessionLogInMngDb()");
ret = delOldSessionLogInMngDb();
if(debug>1) err_msg("DEBUG:(%d)<=delOldSessionLogInMngDb()", ret);
return ret;
}
+
+int IsTableFoundInMngDb(char* table){
+ int ret;
+ if(debug>1) err_msg("DEBUG:=>isTableFoundInMngDb(%s)", table);
+ ret = isTableFoundInMngDb(table);
+ if(debug>1) err_msg("DEBUG:(%d)<=isTableFoundInMngDb()", ret);
+ return ret;
+}
+
+int UpdateCloseTimeToUnclosedSessionInMngDb(void){
+ int ret;
+ if(debug>1) err_msg("DEBUG:=>updateCloseTimeToUnclosedSessionInMngDb()");
+ ret = updateCloseTimeToUnclosedSessionInMngDb();
+ if(debug>1) err_msg("DEBUG:(%d)<=updateCloseTimeToUnclosedSessionInMngDb()", ret);
+ return ret;
+}
+
+void AdjustLogModeAndLogTable(void){
+ if(debug>1) err_msg("DEBUG:=>adjustLogModeAndLogTable()");
+ adjustLogModeAndLogTable();
+ if(debug>1) err_msg("DEBUG:<=adjustLogModeAndLogTable()");
+}