|
|
@@ -620,12 +620,6 @@ int get_user_key(int in_oauth, int *out_oauth, int *max_session_time, u08bits *u
|
|
|
ur_string_map_lock(turn_params.default_users_db.ram_db.static_accounts);
|
|
|
if(ur_string_map_get(turn_params.default_users_db.ram_db.static_accounts, (ur_string_map_key_type)usname, &ukey)) {
|
|
|
ret = 0;
|
|
|
- } else {
|
|
|
- ur_string_map_lock(turn_params.default_users_db.ram_db.dynamic_accounts);
|
|
|
- if(ur_string_map_get(turn_params.default_users_db.ram_db.dynamic_accounts, (ur_string_map_key_type)usname, &ukey)) {
|
|
|
- ret = 0;
|
|
|
- }
|
|
|
- ur_string_map_unlock(turn_params.default_users_db.ram_db.dynamic_accounts);
|
|
|
}
|
|
|
ur_string_map_unlock(turn_params.default_users_db.ram_db.static_accounts);
|
|
|
|
|
|
@@ -721,7 +715,7 @@ void release_allocation_quota(u08bits *user, int oauth, u08bits *realm)
|
|
|
|
|
|
//////////////////////////////////
|
|
|
|
|
|
-int add_user_account(char *user, int dynamic)
|
|
|
+int add_static_user_account(char *user)
|
|
|
{
|
|
|
/* Realm is either default or empty for users taken from file or command-line */
|
|
|
if(user && !turn_params.use_auth_secret_with_timestamp) {
|
|
|
@@ -755,11 +749,7 @@ int add_user_account(char *user, int dynamic)
|
|
|
//this is only for default realm
|
|
|
stun_produce_integrity_key_str((u08bits*)usname, (u08bits*)get_realm(NULL)->options.name, (u08bits*)s, *key, turn_params.shatype);
|
|
|
}
|
|
|
- if(dynamic) {
|
|
|
- ur_string_map_lock(turn_params.default_users_db.ram_db.dynamic_accounts);
|
|
|
- ur_string_map_put(turn_params.default_users_db.ram_db.dynamic_accounts, (ur_string_map_key_type)usname, (ur_string_map_value_type)*key);
|
|
|
- ur_string_map_unlock(turn_params.default_users_db.ram_db.dynamic_accounts);
|
|
|
- } else {
|
|
|
+ {
|
|
|
ur_string_map_lock(turn_params.default_users_db.ram_db.static_accounts);
|
|
|
ur_string_map_put(turn_params.default_users_db.ram_db.static_accounts, (ur_string_map_key_type)usname, (ur_string_map_value_type)*key);
|
|
|
ur_string_map_unlock(turn_params.default_users_db.ram_db.static_accounts);
|
|
|
@@ -775,11 +765,19 @@ int add_user_account(char *user, int dynamic)
|
|
|
|
|
|
////////////////// Admin /////////////////////////
|
|
|
|
|
|
-static int list_users(u08bits *realm)
|
|
|
+static int list_users(u08bits *realm, int is_admin)
|
|
|
{
|
|
|
const turn_dbdriver_t * dbd = get_dbdriver();
|
|
|
- if (dbd && dbd->list_users) {
|
|
|
- (*dbd->list_users)(realm);
|
|
|
+ if (dbd) {
|
|
|
+ if(is_admin) {
|
|
|
+ if(dbd->list_admin_users) {
|
|
|
+ (*dbd->list_admin_users)();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if(dbd->list_users) {
|
|
|
+ (*dbd->list_users)(realm);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
@@ -895,17 +893,13 @@ static int list_realm_options(u08bits *realm)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08bits *origin, TURNADMIN_COMMAND_TYPE ct, perf_options_t *po)
|
|
|
+int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08bits *origin, TURNADMIN_COMMAND_TYPE ct, perf_options_t *po, int is_admin)
|
|
|
{
|
|
|
hmackey_t key;
|
|
|
char skey[sizeof(hmackey_t) * 2 + 1];
|
|
|
|
|
|
- password_t passwd;
|
|
|
-
|
|
|
- STRCPY(passwd,pwd);
|
|
|
-
|
|
|
if (ct == TA_LIST_USERS) {
|
|
|
- return list_users(realm);
|
|
|
+ return list_users(realm, is_admin);
|
|
|
}
|
|
|
|
|
|
if (ct == TA_LIST_ORIGINS) {
|
|
|
@@ -950,7 +944,7 @@ int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08b
|
|
|
|
|
|
must_set_admin_user(user);
|
|
|
|
|
|
- if (ct != TA_DELETE_USER) {
|
|
|
+ if (ct != TA_DELETE_USER && !is_admin) {
|
|
|
|
|
|
must_set_admin_pwd(pwd);
|
|
|
|
|
|
@@ -977,14 +971,29 @@ int adminuser(u08bits *user, u08bits *realm, u08bits *pwd, u08bits *secret, u08b
|
|
|
|
|
|
} else if (dbd) {
|
|
|
|
|
|
- must_set_admin_realm(realm);
|
|
|
+ if(!is_admin)
|
|
|
+ must_set_admin_realm(realm);
|
|
|
|
|
|
if (ct == TA_DELETE_USER) {
|
|
|
- if (dbd->del_user)
|
|
|
- (*dbd->del_user)(user, realm);
|
|
|
+ if(is_admin) {
|
|
|
+ if (dbd->del_admin_user)
|
|
|
+ (*dbd->del_admin_user)(user);
|
|
|
+ } else {
|
|
|
+ if (dbd->del_user)
|
|
|
+ (*dbd->del_user)(user, realm);
|
|
|
+ }
|
|
|
} else if (ct == TA_UPDATE_USER) {
|
|
|
- if (dbd->set_user_key)
|
|
|
- (*dbd->set_user_key)(user, realm, skey);
|
|
|
+ if(is_admin) {
|
|
|
+ must_set_admin_pwd(pwd);
|
|
|
+ if (dbd->set_admin_user) {
|
|
|
+ password_t password;
|
|
|
+ STRCPY(password,pwd);
|
|
|
+ (*dbd->set_admin_user)(user, realm, password);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (dbd->set_user_key)
|
|
|
+ (*dbd->set_user_key)(user, realm, skey);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|