瀏覽代碼

users list improved

mom040267 11 年之前
父節點
當前提交
541736ebed

+ 15 - 5
src/apps/relay/dbdrivers/dbd_mongo.c

@@ -386,6 +386,7 @@ static int mongo_list_users(int is_st, u08bits *realm) {
   bson_t fields;
   bson_init(&fields);
   BSON_APPEND_INT32(&fields, "name", 1);
+  if(!is_st) BSON_APPEND_INT32(&fields, "realm", 1);
 
   mongoc_cursor_t * cursor;
   cursor = mongoc_collection_find(collection, MONGOC_QUERY_NONE, 0, 0, 0, &query, &fields, NULL);
@@ -398,14 +399,23 @@ static int mongo_list_users(int is_st, u08bits *realm) {
     const bson_t * item;
     uint32_t length;
     bson_iter_t iter;
+    bson_iter_t iter_realm;
     const char * value;
     while (mongoc_cursor_next(cursor, &item)) {
     	if (bson_iter_init(&iter, item) && bson_iter_find(&iter, "name") && BSON_ITER_HOLDS_UTF8(&iter)) {
-        value = bson_iter_utf8(&iter, &length);
-        if (length) {
-					printf("%s\n", value);
-        }
-      }
+    		value = bson_iter_utf8(&iter, &length);
+    		if (length) {
+        		const char *realm = "";
+    			if (!is_st && bson_iter_init(&iter_realm, item) && bson_iter_find(&iter_realm, "realm") && BSON_ITER_HOLDS_UTF8(&iter_realm)) {
+    				realm = bson_iter_utf8(&iter_realm, &length);
+    			}
+    			if(realm && *realm) {
+    				printf("%s[%s]\n", value, realm);
+    			} else {
+    				printf("%s\n", value);
+    			}
+    		}
+    	}
     }
     mongoc_cursor_destroy(cursor);
     ret = 0;

+ 9 - 5
src/apps/relay/dbdrivers/dbd_mysql.c

@@ -400,11 +400,11 @@ static int mysql_list_users(int is_st, u08bits *realm) {
 	MYSQL * myc = get_mydb_connection();
 	if(myc) {
 		if(is_st) {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_st order by name");
+		  snprintf(statement,sizeof(statement),"select name,'' from turnusers_st order by name");
 		} else if(realm && realm[0]) {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_lt where realm='%s' order by name",realm);
+		  snprintf(statement,sizeof(statement),"select name, realm from turnusers_lt where realm='%s' order by name",realm);
 		} else {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_lt order by name");
+		  snprintf(statement,sizeof(statement),"select name, realm from turnusers_lt order by name");
 		}
 		int res = mysql_query(myc, statement);
 		if(res) {
@@ -413,7 +413,7 @@ static int mysql_list_users(int is_st, u08bits *realm) {
 			MYSQL_RES *mres = mysql_store_result(myc);
 			if(!mres) {
 				TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Error retrieving MySQL DB information: %s\n",mysql_error(myc));
-			} else if(mysql_field_count(myc)!=1) {
+			} else if(mysql_field_count(myc)!=2) {
 				TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Unknown error retrieving MySQL DB information: %s\n",statement);
 			} else {
 				for(;;) {
@@ -422,7 +422,11 @@ static int mysql_list_users(int is_st, u08bits *realm) {
 						break;
 					} else {
 						if(row[0]) {
-							printf("%s\n",row[0]);
+							if(row[1] && row[1][0]) {
+								printf("%s[%s]\n",row[0],row[1]);
+							} else {
+								printf("%s\n",row[0]);
+							}
 						}
 					}
 				}

+ 10 - 5
src/apps/relay/dbdrivers/dbd_pgsql.c

@@ -253,11 +253,11 @@ static int pgsql_list_users(int is_st, u08bits *realm) {
 	PGconn *pqc = get_pqdb_connection();
 	if(pqc) {
 		if(is_st) {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_st order by name");
+		  snprintf(statement,sizeof(statement),"select name,'' from turnusers_st order by name");
 		} else if(realm && realm[0]) {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_lt where realm='%s' order by name",realm);
+		  snprintf(statement,sizeof(statement),"select name,realm from turnusers_lt where realm='%s' order by name",realm);
 		} else {
-		  snprintf(statement,sizeof(statement),"select name from turnusers_lt order by name");
+		  snprintf(statement,sizeof(statement),"select name,realm from turnusers_lt order by name");
 		}
 		PGresult *res = PQexec(pqc, statement);
 		if(!res || (PQresultStatus(res) != PGRES_TUPLES_OK)) {
@@ -267,10 +267,15 @@ static int pgsql_list_users(int is_st, u08bits *realm) {
 			for(i=0;i<PQntuples(res);i++) {
 				char *kval = PQgetvalue(res,i,0);
 				if(kval) {
-					printf("%s\n",kval);
+					char *rval = PQgetvalue(res,i,1);
+					if(rval && *rval) {
+						printf("%s[%s]\n",kval,rval);
+					} else {
+						printf("%s\n",kval);
+					}
 				}
 			}
-      ret = 0;
+			ret = 0;
 		}
 		if(res) {
 			PQclear(res);

+ 1 - 1
src/apps/relay/dbdrivers/dbd_redis.c

@@ -650,7 +650,7 @@ static int redis_list_users(int is_st, u08bits *realm) {
 		}
 
 		clean_secrets_list(&keys);
-    ret = 0;
+		ret = 0;
 	}
   return ret;
 }