version 1.1.2.6, 2011/11/24 15:34:18
|
version 1.1.2.8, 2011/11/25 15:29:30
|
Line 85 mqtt_rtlm_init_session(sl_config *cfg, sqlite3 *sql, c
|
Line 85 mqtt_rtlm_init_session(sl_config *cfg, sqlite3 *sql, c
|
|
|
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
if (!str) { |
if (!str) { |
mqtt_rtlm_log("Error:: not found topics table name"); | mqtt_rtlm_log("Error:: not found online table name"); |
return -1; |
return -1; |
} |
} |
snprintf(szStmt, sizeof szStmt, "INSERT INTO %s (Username, RemoteHost, RemotePort) " |
snprintf(szStmt, sizeof szStmt, "INSERT INTO %s (Username, RemoteHost, RemotePort) " |
Line 128 mqtt_rtlm_fini_session(sl_config *cfg, sqlite3 *sql, c
|
Line 128 mqtt_rtlm_fini_session(sl_config *cfg, sqlite3 *sql, c
|
|
|
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
if (!str) { |
if (!str) { |
mqtt_rtlm_log("Error:: not found topics table name"); | mqtt_rtlm_log("Error:: not found online table name"); |
return -1; |
return -1; |
} |
} |
snprintf(szStmt, sizeof szStmt, "DELETE FROM %s WHERE Username = '%s' AND RemoteHost LIKE '%s';", |
snprintf(szStmt, sizeof szStmt, "DELETE FROM %s WHERE Username = '%s' AND RemoteHost LIKE '%s';", |
Line 171 mqtt_rtlm_chk_session(sl_config *cfg, sqlite3 *sql, co
|
Line 171 mqtt_rtlm_chk_session(sl_config *cfg, sqlite3 *sql, co
|
|
|
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_online")); |
if (!str) { |
if (!str) { |
mqtt_rtlm_log("Error:: not found topics table name"); | mqtt_rtlm_log("Error:: not found online table name"); |
return -1; |
return -1; |
} |
} |
snprintf(szStmt, sizeof szStmt, "SELECT RemoteHost, RemotePort FROM %s WHERE " |
snprintf(szStmt, sizeof szStmt, "SELECT RemoteHost, RemotePort FROM %s WHERE " |
Line 181 mqtt_rtlm_chk_session(sl_config *cfg, sqlite3 *sql, co
|
Line 181 mqtt_rtlm_chk_session(sl_config *cfg, sqlite3 *sql, co
|
MQTT_RTLM_LOG(sql); |
MQTT_RTLM_LOG(sql); |
return -1; |
return -1; |
} |
} |
while (sqlite3_step(stmt) == SQLITE_ROW); | if (sqlite3_step(stmt) == SQLITE_ROW) |
ret = sqlite3_changes(sql); | ret = sqlite3_changes(sql); |
| else |
| ret = 0; |
| sqlite3_finalize(stmt); |
| |
| return ret; |
| } |
| |
| /* |
| * mqtt_rtlm_write_topic() Publish topic |
| * |
| * @cfg = loaded config |
| * @sql = SQL handle |
| * @topic = topic |
| * @txt = text |
| * @user = username |
| * @host = hostname |
| * @retain = !=0 retain message to database |
| * return: -1 error, 0 no publish or >0 published ok |
| */ |
| int |
| mqtt_rtlm_write_topic(sl_config *cfg, sqlite3 *sql, const char *topic, const char *txt, |
| const char *user, const char *host, char retain) |
| { |
| int ret = 0; |
| char *str, szStmt[BUFSIZ] = { 0 }; |
| sqlite3_stmt *stmt; |
| |
| if (!cfg || !sql || !topic) |
| return -1; |
| |
| str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_topics")); |
| if (!str) { |
| mqtt_rtlm_log("Error:: not found topics table name"); |
| return -1; |
| } |
| snprintf(szStmt, sizeof szStmt, "INSERT INTO %s (Retain, Topic, Value, PubUser, PubDate, PubHost) " |
| "VALUES (%d, '%s', '%s', '%s', datetime('now', 'localtime'), '%s');", str, |
| retain, topic, txt, user, host); |
| |
| if (sqlite3_prepare_v2(sql, szStmt, strlen(szStmt), &stmt, NULL)) { |
| MQTT_RTLM_LOG(sql); |
| return -1; |
| } |
| if ((ret = sqlite3_step(stmt)) == SQLITE_DONE) |
| ret = sqlite3_changes(sql); |
| else { |
| if (ret > SQLITE_OK && ret < SQLITE_ROW) |
| MQTT_RTLM_LOG(sql); |
| ret = 0; |
| } |
| sqlite3_finalize(stmt); |
| |
| return ret; |
| } |
| |
| /* |
| * mqtt_rtlm_delete_topic() Delete topic |
| * |
| * @cfg = loaded config |
| * @sql = SQL handle |
| * @topic = topic |
| * @user = username |
| * @host = hostname |
| * @retain = -1 no matter |
| * return: -1 error, 0 no changes or >0 deleted rows |
| */ |
| int |
| mqtt_rtlm_delete_topic(sl_config *cfg, sqlite3 *sql, const char *topic, |
| const char *user, const char *host, char retain) |
| { |
| int ret = 0; |
| char *str, *rtn, szStmt[BUFSIZ] = { 0 }; |
| sqlite3_stmt *stmt; |
| |
| if (!cfg || !sql || !topic) |
| return -1; |
| |
| str = (char*) cfg_GetAttribute(cfg, CFG("mqtt_pub"), CFG("tbl_topics")); |
| if (!str) { |
| mqtt_rtlm_log("Error:: not found topics table name"); |
| return -1; |
| } |
| switch (retain) { |
| case -1: |
| rtn = ""; |
| break; |
| case 0: |
| rtn = "AND Retain = 0"; |
| break; |
| default: |
| rtn = "AND Retain != 0"; |
| break; |
| } |
| snprintf(szStmt, sizeof szStmt, "DELETE FROM %s WHERE Topic LIKE '%s' AND " |
| "PubUser LIKE '%s' AND PubHost LIKE '%s' %s;", str, |
| topic, user, host, rtn); |
| |
| if (sqlite3_prepare_v2(sql, szStmt, strlen(szStmt), &stmt, NULL)) { |
| MQTT_RTLM_LOG(sql); |
| return -1; |
| } |
| if ((ret = sqlite3_step(stmt)) == SQLITE_DONE) |
| ret = sqlite3_changes(sql); |
| else { |
| if (ret > SQLITE_OK && ret < SQLITE_ROW) |
| MQTT_RTLM_LOG(sql); |
| ret = 0; |
| } |
sqlite3_finalize(stmt); |
sqlite3_finalize(stmt); |
|
|
return ret; |
return ret; |