Sfoglia il codice sorgente

server name cleaning

mom040267 11 anni fa
parent
commit
f2cc2e9457

+ 35 - 16
src/apps/relay/mainrelay.c

@@ -85,7 +85,7 @@ LOW_DEFAULT_PORTS_BOUNDARY,HIGH_DEFAULT_PORTS_BOUNDARY,0,0,0,"",
 0,NULL,0,NULL,DEFAULT_GENERAL_RELAY_SERVERS_NUMBER,0,
 ////////////// Auth server /////////////////////////////////////
 {NULL,NULL,NULL,0,NULL},
-"",
+"","",
 /////////////// AUX SERVERS ////////////////
 {NULL,0,{0,NULL}},0,
 /////////////// ALTERNATE SERVERS ////////////////
@@ -1693,26 +1693,38 @@ static void drop_privileges(void)
 }
 
 static void init_oauth_server_name(void) {
-	struct utsname name;
-	if(!uname(&name)) {
-		STRCPY(turn_params.oauth_server_name,name.nodename);
-	}
+
 	if(!turn_params.oauth_server_name[0]) {
-		STRCPY(turn_params.oauth_server_name,TURN_SOFTWARE);
-	}
-	{
-		char domain[513];
-		if(getdomainname(domain,sizeof(domain)-1)>=0) {
-			size_t dlen = strlen(domain);
-			if(dlen>0 && domain[0] != '(') {
-				size_t slen = strlen(turn_params.oauth_server_name);
+
+		struct utsname name;
+
+		if(!uname(&name)) {
+			STRCPY(turn_params.oauth_server_name,name.nodename);
+		}
+		if(!turn_params.oauth_server_name[0]) {
+			STRCPY(turn_params.oauth_server_name,TURN_SOFTWARE);
+		}
+
+		size_t slen = strlen(turn_params.oauth_server_name);
+
+		if(get_realm(NULL)->options.name[0]) {
+			turn_params.oauth_server_name[slen]='.';
+			ns_bcopy(get_realm(NULL)->options.name,turn_params.oauth_server_name+slen+1,strlen(get_realm(NULL)->options.name)+1);
+		} else {
+			size_t dlen = strlen(turn_params.domain);
+			if(dlen>0 && turn_params.domain[0] != '(') {
 				turn_params.oauth_server_name[slen]='.';
-				ns_bcopy(domain,turn_params.oauth_server_name+slen+1,strlen(domain)+1);
+				ns_bcopy(turn_params.domain,turn_params.oauth_server_name+slen+1,strlen(turn_params.domain)+1);
 			}
 		}
 	}
 }
 
+static void init_domain(void)
+{
+	getdomainname(turn_params.domain,sizeof(turn_params.domain)-1);
+}
+
 int main(int argc, char **argv)
 {
 	int c = 0;
@@ -1727,7 +1739,8 @@ int main(int argc, char **argv)
 	redis_async_init();
 #endif
 
-	create_new_realm(NULL);
+	init_domain();
+	create_default_realm();
 
 	init_turn_server_addrs_list(&turn_params.alternate_servers_list);
 	init_turn_server_addrs_list(&turn_params.tls_alternate_servers_list);
@@ -1738,7 +1751,6 @@ int main(int argc, char **argv)
 	init_listener();
 	init_secrets_list(&turn_params.default_users_db.ram_db.static_auth_secrets);
 	init_dynamic_ip_lists();
-	init_oauth_server_name();
 
 	if (!strstr(argv[0], "turnadmin")) {
 
@@ -1815,6 +1827,13 @@ int main(int argc, char **argv)
 
 	read_config_file(argc,argv,1);
 
+	if(!get_realm(NULL)->options.name[0]) {
+		STRCPY(get_realm(NULL)->options.name,turn_params.domain);
+	}
+
+	init_oauth_server_name();
+	TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Domain name: %s\n",turn_params.domain);
+	TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Default realm: %s\n",get_realm(NULL)->options.name);
 	TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Server name: %s\n",turn_params.oauth_server_name);
 
 	optind = 0;

+ 1 - 0
src/apps/relay/mainrelay.h

@@ -272,6 +272,7 @@ typedef struct _turn_params_ {
 
   struct auth_server authserver;
   char oauth_server_name[1025];
+  char domain[1025];
 
 /////////////// AUX SERVERS ////////////////
 

+ 1 - 1
src/apps/relay/ns_ioalib_impl.h

@@ -236,7 +236,7 @@ typedef struct _timer_event
 
 /* realm */
 
-void create_new_realm(char* name);
+void create_default_realm();
 int get_realm_data(char* name, realm_params_t* rp);
 
 /* engine handling */

+ 21 - 40
src/apps/relay/userdb.c

@@ -65,15 +65,6 @@
 //////////// REALM //////////////
 
 static realm_params_t *default_realm_params_ptr = NULL;
-static const realm_params_t _default_realm_params =
-{
-  1,
-  {
-	"\0", /* name */
-    {0,0,0}
-  },
-  {0,NULL}
-};
 
 static ur_string_map *realms = NULL;
 static turn_mutex o_to_realm_mutex;
@@ -95,40 +86,30 @@ void update_o_to_realm(ur_string_map * o_to_realm_new) {
   TURN_MUTEX_UNLOCK(&o_to_realm_mutex);
 }
 
-void create_new_realm(char* name)
+void create_default_realm()
 {
-	realm_params_t *ret = NULL;
-
-	if((name == NULL)||(name[0]==0)) {
-		if(default_realm_params_ptr) {
-			return;
-		}
-		/* init everything: */
-		TURN_MUTEX_INIT_RECURSIVE(&o_to_realm_mutex);
-		init_secrets_list(&realms_list);
-		o_to_realm = ur_string_map_create(free);
-		default_realm_params_ptr = (realm_params_t*)malloc(sizeof(realm_params_t));
-		ns_bcopy(&_default_realm_params,default_realm_params_ptr,sizeof(realm_params_t));
-		realms = ur_string_map_create(NULL);
-		ur_string_map_lock(realms);
-		ret = default_realm_params_ptr;
-	} else {
-		ur_string_map_value_type value = 0;
-		ur_string_map_lock(realms);
-		if (!ur_string_map_get(realms, (const ur_string_map_key_type) name, &value)) {
-			ret = (realm_params_t*)turn_malloc(sizeof(realm_params_t));
-			ns_bcopy(default_realm_params_ptr,ret,sizeof(realm_params_t));
-			STRCPY(ret->options.name,name);
-			value = (ur_string_map_value_type)ret;
-			ur_string_map_put(realms, (const ur_string_map_key_type) name, value);
-			add_to_secrets_list(&realms_list, name);
-		} else {
-			ur_string_map_unlock(realms);
-			return;
-		}
+	if(default_realm_params_ptr) {
+		return;
 	}
 
-	ret->status.alloc_counters =  ur_string_map_create(NULL);
+	static realm_params_t _default_realm_params =
+	{
+	  1,
+	  {
+		"\0", /* name */
+	    {0,0,0}
+	  },
+	  {0,NULL}
+	};
+
+	/* init everything: */
+	TURN_MUTEX_INIT_RECURSIVE(&o_to_realm_mutex);
+	init_secrets_list(&realms_list);
+	o_to_realm = ur_string_map_create(free);
+	default_realm_params_ptr = &_default_realm_params;
+	realms = ur_string_map_create(NULL);
+	ur_string_map_lock(realms);
+	default_realm_params_ptr->status.alloc_counters =  ur_string_map_create(NULL);
 	ur_string_map_unlock(realms);
 }