فهرست منبع

userblacklist: more debug info when failing to do the query

- renamed some parameters in order to be suggestive for their purpose
- code reformatting for long line
Daniel-Constantin Mierla 9 سال پیش
والد
کامیت
dce52ed68c
2فایلهای تغییر یافته به همراه93 افزوده شده و 61 حذف شده
  1. 35 20
      modules/userblacklist/db.c
  2. 58 41
      modules/userblacklist/userblacklist.c

+ 35 - 20
modules/userblacklist/db.c

@@ -13,8 +13,8 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License 
- * along with this program; if not, write to the Free Software 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
@@ -42,7 +42,8 @@
 
 extern int match_mode;
 
-int db_build_userbl_tree(const str *username, const str *domain, const str *table, struct dtrie_node_t *root, int use_domain)
+int db_build_userbl_tree(const str *username, const str *domain,
+		const str *dbtable, struct dtrie_node_t *root, int use_domain)
 {
 	db_key_t columns[2] = { &userblacklist_prefix_col, &userblacklist_whitelist_col };
 	db_key_t key[2] = { &userblacklist_username_col, &userblacklist_domain_col };
@@ -59,13 +60,14 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
 	VAL_STR(val + 1).s = domain->s;
 	VAL_STR(val + 1).len = domain->len;
 
-	
-	if (userblacklist_dbf.use_table(userblacklist_dbh, table) < 0) {
-		LM_ERR("cannot use table '%.*s'.\n", table->len, table->s);
+	if (userblacklist_dbf.use_table(userblacklist_dbh, dbtable) < 0) {
+		LM_ERR("cannot use db table '%.*s'.\n", dbtable->len, dbtable->s);
 		return -1;
 	}
-	if (userblacklist_dbf.query(userblacklist_dbh, key, 0, val, columns, (!use_domain) ? (1) : (2), 2, 0, &res) < 0) {
-		LM_ERR("error while executing query.\n");
+	if (userblacklist_dbf.query(userblacklist_dbh, key, 0, val, columns,
+				(!use_domain) ? (1) : (2), 2, 0, &res) < 0) {
+		LM_ERR("error while executing query on db table '%.*s'\n",
+				dbtable->len, dbtable->s);
 		return -1;
 	}
 
@@ -85,8 +87,12 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
 					} else {
 						nodeflags=(void *)MARK_WHITELIST;
 					}
-					if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val, strlen(RES_ROWS(res)[i].values[0].val.string_val),
-						nodeflags, match_mode) < 0) LM_ERR("could not insert values into trie.\n");
+
+					if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val,
+								strlen(RES_ROWS(res)[i].values[0].val.string_val),
+								nodeflags, match_mode) < 0)
+						LM_ERR("could not insert values into trie.\n");
+
 					n++;
 				}
 				else {
@@ -105,20 +111,22 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
  * Rebuild d-tree using database entries
  * \return negative on failure, positive on success, indicating the number of d-tree entries
  */
-int db_reload_source(const str *table, struct dtrie_node_t *root)
+int db_reload_source(const str *dbtable, struct dtrie_node_t *root)
 {
 	db_key_t columns[2] = { &globalblacklist_prefix_col, &globalblacklist_whitelist_col };
 	db1_res_t *res;
 	int i;
 	int n = 0;
 	void *nodeflags;
-	
-	if (userblacklist_dbf.use_table(userblacklist_dbh, table) < 0) {
-		LM_ERR("cannot use table '%.*s'.\n", table->len, table->s);
+
+	if (userblacklist_dbf.use_table(userblacklist_dbh, dbtable) < 0) {
+		LM_ERR("cannot use db table '%.*s'\n", dbtable->len, dbtable->s);
 		return -1;
 	}
-	if (userblacklist_dbf.query(userblacklist_dbh, NULL, NULL, NULL, columns, 0, 2, NULL, &res) < 0) {
-		LM_ERR("error while executing query.\n");
+	if (userblacklist_dbf.query(userblacklist_dbh, NULL, NULL, NULL,
+				columns, 0, 2, NULL, &res) < 0) {
+		LM_ERR("error while executing query on db table '%.*s'\n",
+				dbtable->len, dbtable->s);
 		return -1;
 	}
 
@@ -133,10 +141,17 @@ int db_reload_source(const str *table, struct dtrie_node_t *root)
 					/* LM_DBG("insert into tree prefix %s, whitelist %d",
 						RES_ROWS(res)[i].values[0].val.string_val,
 						RES_ROWS(res)[i].values[1].val.int_val); */
-					if (RES_ROWS(res)[i].values[1].val.int_val == 0) nodeflags=(void *) MARK_BLACKLIST;
-					else nodeflags=(void *)MARK_WHITELIST;
-					if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val, strlen(RES_ROWS(res)[i].values[0].val.string_val),
-						nodeflags, match_mode) < 0) LM_ERR("could not insert values into trie.\n");
+					if (RES_ROWS(res)[i].values[1].val.int_val == 0) {
+						nodeflags=(void *)MARK_BLACKLIST;
+					} else {
+						nodeflags=(void *)MARK_WHITELIST;
+					}
+
+					if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val,
+								strlen(RES_ROWS(res)[i].values[0].val.string_val),
+								nodeflags, match_mode) < 0)
+						LM_ERR("could not insert values into trie.\n");
+
 					n++;
 				}
 				else {

+ 58 - 41
modules/userblacklist/userblacklist.c

@@ -89,15 +89,19 @@ static int check_user_blacklist_fixup(void** param, int param_no);
 static int check_globalblacklist_fixup(void** param, int param_no);
 
 /* ---- exported commands: */
-static int check_user_blacklist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4);
-static int check_user_whitelist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4);
-static int check_user_blacklist2(struct sip_msg *msg, char* str1, char* str2);
-static int check_user_whitelist2(struct sip_msg *msg, char* str1, char* str2);
-static int check_user_blacklist3(struct sip_msg *msg, char* str1, char* str2, char* str3);
-static int check_user_whitelist3(struct sip_msg *msg, char* str1, char* str2, char* str3);
-static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1);
-static int check_whitelist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1);
-static int check_globalblacklist(struct sip_msg *msg);
+static int check_user_blacklist(sip_msg_t *msg, char* puser,
+		char* pdomain, char* pnumber, char* ptable);
+static int check_user_whitelist(sip_msg_t *msg, char* puser,
+		char* pdomain, char* pnumber, char* ptable);
+static int check_user_blacklist2(sip_msg_t *msg, char* puser, char* pdomain);
+static int check_user_whitelist2(sip_msg_t *msg, char* puser, char* pdomain);
+static int check_user_blacklist3(sip_msg_t *msg, char* puser, char* pdomain,
+		char* pnumber);
+static int check_user_whitelist3(sip_msg_t *msg, char* puser, char* pdomain,
+		char* pnumber);
+static int check_blacklist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1);
+static int check_whitelist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1);
+static int check_globalblacklist(sip_msg_t *msg);
 
 
 /* ---- module init functions: */
@@ -116,15 +120,24 @@ struct mi_root * mi_check_userwhitelist(struct mi_root* cmd, void* param);  /* u
 
 
 static cmd_export_t cmds[]={
-	{ "check_user_blacklist", (cmd_function)check_user_blacklist2, 2, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_user_whitelist", (cmd_function)check_user_whitelist2, 2, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_user_blacklist", (cmd_function)check_user_blacklist3, 3, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_user_whitelist", (cmd_function)check_user_whitelist3, 3, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_user_blacklist", (cmd_function)check_user_blacklist, 4, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_user_whitelist", (cmd_function)check_user_whitelist, 4, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_blacklist", (cmd_function)check_blacklist, 1, check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_whitelist", (cmd_function)check_whitelist, 1, check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
-	{ "check_blacklist", (cmd_function)check_globalblacklist, 0, check_globalblacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_blacklist", (cmd_function)check_user_blacklist2, 2,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_whitelist", (cmd_function)check_user_whitelist2, 2,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_blacklist", (cmd_function)check_user_blacklist3, 3,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_whitelist", (cmd_function)check_user_whitelist3, 3,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_blacklist", (cmd_function)check_user_blacklist, 4,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_user_whitelist", (cmd_function)check_user_whitelist, 4,
+		check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_blacklist", (cmd_function)check_blacklist, 1,
+		check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_whitelist", (cmd_function)check_whitelist, 1,
+		check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+	{ "check_blacklist", (cmd_function)check_globalblacklist, 0,
+		check_globalblacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
 	{ 0, 0, 0, 0, 0, 0}
 };
 
@@ -205,8 +218,8 @@ static int check_user_blacklist_fixup(void** param, int param_no)
 }
 
 
-static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
-		char* str3, char* str4, int listtype)
+static int check_user_list(sip_msg_t *msg, char* puser, char* pdomain,
+		char* pnumber, char* ptable, int listtype)
 {
 	str user = { .len = 0, .s = NULL };
 	str domain = { .len = 0, .s = NULL};
@@ -218,25 +231,25 @@ static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
 	char req_number[MAXNUMBERLEN+1];
 
 	/* user */
-	if(fixup_get_svalue(msg, (gparam_t*)str1, &user)!=0) {
+	if(fixup_get_svalue(msg, (gparam_t*)puser, &user)!=0) {
 		LM_ERR("cannot print user pseudo-variable\n");
 		return -1;
 	}
 	/* domain */
-	if(fixup_get_svalue(msg, (gparam_t*)str2, &domain)!=0) {
+	if(fixup_get_svalue(msg, (gparam_t*)pdomain, &domain)!=0) {
 		LM_ERR("cannot print domain pseudo-variable\n");
 		return -1;
 	}
 	/* source number */
-	if(str3 != NULL) {
-		if(fixup_get_svalue(msg, (gparam_t*)str3, &number)!=0) {
+	if(pnumber != NULL) {
+		if(fixup_get_svalue(msg, (gparam_t*)pnumber, &number)!=0) {
 			LM_ERR("cannot print number pseudo-variable\n");
 			return -1;
 		}
 	}
 	/* table name */
-	if(str4 != NULL) {
-		if(fixup_get_svalue(msg, (gparam_t*)str4, &table)!=0) {
+	if(pnumber != NULL) {
+		if(fixup_get_svalue(msg, (gparam_t*)ptable, &table)!=0) {
 			LM_ERR("cannot print number pseudo-variable\n");
 			return -1;
 		}
@@ -304,37 +317,41 @@ static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
 }
 
 
-static int check_user_whitelist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4)
+static int check_user_whitelist(sip_msg_t *msg, char* puser,
+		char* pdomain, char* pnumber, char* ptable)
 {
-	return check_user_list(msg, str1, str2, str3, str4, 1);
+	return check_user_list(msg, puser, pdomain, pnumber, ptable, 1);
 }
 
 
-static int check_user_blacklist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4)
+static int check_user_blacklist(sip_msg_t *msg, char* puser,
+		char* pdomain, char* pnumber, char* ptable)
 {
-	return check_user_list(msg, str1, str2, str3, str4, 0);
+	return check_user_list(msg, puser, pdomain, pnumber, ptable, 0);
 }
 
-static int check_user_whitelist2(struct sip_msg *msg, char* str1, char* str2)
+static int check_user_whitelist2(sip_msg_t *msg, char* puser, char* pdomain)
 {
-	return check_user_list(msg, str1, str2, NULL, NULL, 1);
+	return check_user_list(msg, puser, pdomain, NULL, NULL, 1);
 }
 
 
-static int check_user_blacklist2(struct sip_msg *msg, char* str1, char* str2)
+static int check_user_blacklist2(sip_msg_t *msg, char* puser, char* pdomain)
 {
-	return check_user_list(msg, str1, str2, NULL, NULL, 0);
+	return check_user_list(msg, puser, pdomain, NULL, NULL, 0);
 }
 
-static int check_user_whitelist3(struct sip_msg *msg, char* str1, char* str2, char* str3)
+static int check_user_whitelist3(sip_msg_t *msg, char* puser, char* pdomain,
+		char* pnumber)
 {
-	return check_user_list(msg, str1, str2, str3, NULL, 1);
+	return check_user_list(msg, puser, pdomain, pnumber, NULL, 1);
 }
 
 
-static int check_user_blacklist3(struct sip_msg *msg, char* str1, char* str2, char* str3)
+static int check_user_blacklist3(sip_msg_t *msg, char* puser, char* pdomain,
+		char* pnumber)
 {
-	return check_user_list(msg, str1, str2, str3, NULL, 0);
+	return check_user_list(msg, puser, pdomain, pnumber, NULL, 0);
 }
 
 
@@ -426,7 +443,7 @@ static int check_globalblacklist_fixup(void** param, int param_no)
 	return 0;
 }
 
-static int check_globalblacklist(struct sip_msg* msg)
+static int check_globalblacklist(sip_msg_t* msg)
 {
 	static struct check_blacklist_fs_t* arg = NULL;
 	if(!arg){
@@ -482,7 +499,7 @@ static int check_blacklist_fixup(void **arg, int arg_no)
 }
 
 
-static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1)
+static int check_blacklist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1)
 {
 	void **nodeflags;
 	char *ptr;
@@ -528,7 +545,7 @@ static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg
 	return ret;
 }
 
-static int check_whitelist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1)
+static int check_whitelist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1)
 {
 	void **nodeflags;
 	char *ptr;