OSDN Git Service

restored optional log table in management db
[opengatem/opengatem.git] / mngsrc / managementdb.c
index 744e1c3..6e19c58 100644 (file)
@@ -480,6 +480,66 @@ int pauseMacAddrInMngDb(char* macAddr){
 }
 
 /*******************************************
+ get next next usage log from management db
+ if end of list, return false
+*******************************************/
+int getNextUsageLogFromMngDb(char* userId, char* extraId, char* macAddr, char* deviceName, char* openTime, char* closeTime, char* gatewayName){
+  static MYSQL_RES *res=NULL;
+  MYSQL_ROW row;
+  char queryStr[BUFFMAXLN];
+
+  /* set default values */
+  macAddr[0]=deviceName[0]=openTime[0]=gatewayName[0]='\0';
+
+  /* if do not get result yet */
+  if(res==NULL){
+
+    /* prepare query string */
+    /* get log where addr.entry < session.open < addr.limit */
+    /*  (the same device may be registered by other users in old days) */
+    snprintf(queryStr, BUFFMAXLN, 
+            "select macaddrs.macAddress, device, openTime, closeTime, "
+            " gatewayName "
+            " from macaddrs, sessionmd "
+            " where macaddrs.macAddress=sessionmd.macAddress "
+            " and entryDate < openTime and openTime < limitDate "
+            " and (%s<closeTime or closeTime=0) "
+            " and userId='%s' and extraId='%s'",
+            GetConfValue("ShowLogAfter"), userId, extraId);
+
+    /* send SQL query */
+    if (mysql_query(&mysql, queryStr)){
+
+      /* query error */
+      /* might be caused by <SaveLogToMngDb> setting in opengatemd.conf */
+      return FALSE; 
+    }
+    
+    /* store result */
+    res = mysql_store_result(&mysql);
+  }
+
+  /* output table name */
+  row = mysql_fetch_row(res);
+
+  /* if found, return values */
+  if(row!=NULL){
+    strlcpy(macAddr, row[0],ADDRMAXLN);
+    strlcpy(deviceName,row[1],WORDMAXLN);
+    strlcpy(openTime,row[2],WORDMAXLN);
+    strlcpy(closeTime,row[3],WORDMAXLN);
+    strlcpy(gatewayName,row[4],WORDMAXLN);
+    return TRUE;
+  }
+  /* if not found, free memory area */
+  else{
+    mysql_free_result(res);
+    return FALSE;
+  }
+}
+
+
+/*******************************************
  get next mail address near limit date
 from management db 
 *******************************************/
@@ -860,6 +920,17 @@ int PauseMacAddrInMngDb(char* macAddr){
   return ret;
 }
 
+int GetNextUsageLogFromMngDb(char* userId, char* extraId, char* macAddr, 
+ char* deviceName, char* openTime, char* closeTime, char* gatewayName){
+  int ret;
+  if(debug>1) err_msg("DEBUG:=>getNextUsageLogFromMngDb(%s,%s)",userId,extraId);
+  ret=getNextUsageLogFromMngDb(userId,extraId,macAddr,deviceName,
+                             openTime,closeTime,gatewayName);
+  if(debug>1) err_msg("DEBUG:(%d)<=getNextUsageLogFromMngDb(,,%s,%s,%s,%s,%s)",
+                ret,macAddr,deviceName,openTime,closeTime,gatewayName);
+  return ret;
+}
+
 int GetNextMailAddressFromMngDb(char* mailAddress, char* limitDate, char*device){
   int ret;
   if(debug>1) err_msg("DEBUG:=>getnextMailAddressFromMngDb( )");