mirror of
https://github.com/coturn/coturn.git
synced 2025-10-28 13:31:16 +01:00
oauth db tests
This commit is contained in:
parent
268de3e3d1
commit
00336faf3d
@ -566,11 +566,15 @@ static int mongo_list_oauth_keys(void) {
|
|||||||
if(!collection)
|
if(!collection)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
bson_t query, child;
|
bson_t query;
|
||||||
bson_init(&query);
|
bson_init(&query);
|
||||||
|
|
||||||
|
bson_t child;
|
||||||
bson_append_document_begin(&query, "$orderby", -1, &child);
|
bson_append_document_begin(&query, "$orderby", -1, &child);
|
||||||
bson_append_int32(&child, "kid", -1, 1);
|
bson_append_int32(&child, "kid", -1, 1);
|
||||||
bson_append_document_end(&query, &child);
|
bson_append_document_end(&query, &child);
|
||||||
|
bson_append_document_begin(&query, "$query", -1, &child);
|
||||||
|
bson_append_document_end(&query, &child);
|
||||||
|
|
||||||
bson_t fields;
|
bson_t fields;
|
||||||
bson_init(&fields);
|
bson_init(&fields);
|
||||||
@ -598,6 +602,8 @@ static int mongo_list_oauth_keys(void) {
|
|||||||
uint32_t length;
|
uint32_t length;
|
||||||
bson_iter_t iter;
|
bson_iter_t iter;
|
||||||
while (mongoc_cursor_next(cursor, &item)) {
|
while (mongoc_cursor_next(cursor, &item)) {
|
||||||
|
|
||||||
|
ns_bzero(key,sizeof(oauth_key_data_raw));
|
||||||
if (bson_iter_init(&iter, item) && bson_iter_find(&iter, "kid") && BSON_ITER_HOLDS_UTF8(&iter)) {
|
if (bson_iter_init(&iter, item) && bson_iter_find(&iter, "kid") && BSON_ITER_HOLDS_UTF8(&iter)) {
|
||||||
STRCPY(key->kid,bson_iter_utf8(&iter, &length));
|
STRCPY(key->kid,bson_iter_utf8(&iter, &length));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -511,24 +511,25 @@ static int redis_get_oauth_key(const u08bits *kid, oauth_key_data_raw *key) {
|
|||||||
} else {
|
} else {
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < (reply->elements)/2; ++i) {
|
for (i = 0; i < (reply->elements)/2; ++i) {
|
||||||
char *kw = reply->element[i]->str;
|
char *kw = reply->element[2*i]->str;
|
||||||
|
char *val = reply->element[2*i+1]->str;
|
||||||
if(kw) {
|
if(kw) {
|
||||||
if(!strcmp(kw,"as_rs_alg")) {
|
if(!strcmp(kw,"as_rs_alg")) {
|
||||||
STRCPY(key->as_rs_alg,reply->element[i+1]->str);
|
STRCPY(key->as_rs_alg,val);
|
||||||
} else if(!strcmp(kw,"as_rs_key")) {
|
} else if(!strcmp(kw,"as_rs_key")) {
|
||||||
STRCPY(key->as_rs_key,reply->element[i+1]->str);
|
STRCPY(key->as_rs_key,val);
|
||||||
} else if(!strcmp(kw,"auth_key")) {
|
} else if(!strcmp(kw,"auth_key")) {
|
||||||
STRCPY(key->auth_key,reply->element[i+1]->str);
|
STRCPY(key->auth_key,val);
|
||||||
} else if(!strcmp(kw,"auth_alg")) {
|
} else if(!strcmp(kw,"auth_alg")) {
|
||||||
STRCPY(key->auth_alg,reply->element[i+1]->str);
|
STRCPY(key->auth_alg,val);
|
||||||
} else if(!strcmp(kw,"ikm_key")) {
|
} else if(!strcmp(kw,"ikm_key")) {
|
||||||
STRCPY(key->ikm_key,reply->element[i+1]->str);
|
STRCPY(key->ikm_key,val);
|
||||||
} else if(!strcmp(kw,"hkdf_hash_func")) {
|
} else if(!strcmp(kw,"hkdf_hash_func")) {
|
||||||
STRCPY(key->hkdf_hash_func,reply->element[i+1]->str);
|
STRCPY(key->hkdf_hash_func,val);
|
||||||
} else if(!strcmp(kw,"timestamp")) {
|
} else if(!strcmp(kw,"timestamp")) {
|
||||||
key->timestamp = (u64bits)strtoull(reply->element[i+1]->str,NULL,10);
|
key->timestamp = (u64bits)strtoull(val,NULL,10);
|
||||||
} else if(!strcmp(kw,"lifetime")) {
|
} else if(!strcmp(kw,"lifetime")) {
|
||||||
key->lifetime = (u32bits)strtoul(reply->element[i+1]->str,NULL,10);
|
key->lifetime = (u32bits)strtoul(val,NULL,10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -739,16 +740,18 @@ static int redis_list_oauth_keys(void) {
|
|||||||
init_secrets_list(&keys);
|
init_secrets_list(&keys);
|
||||||
|
|
||||||
if(rc) {
|
if(rc) {
|
||||||
|
|
||||||
redisReply *reply = NULL;
|
redisReply *reply = NULL;
|
||||||
|
|
||||||
reply = (redisReply*)redisCommand(rc, "keys turn/oauth/kid/*");
|
reply = (redisReply*)redisCommand(rc, "keys turn/oauth/kid/*");
|
||||||
if(reply) {
|
if(reply) {
|
||||||
|
|
||||||
if (reply->type == REDIS_REPLY_ERROR)
|
if (reply->type == REDIS_REPLY_ERROR) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Error: %s\n", reply->str);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Error: %s\n", reply->str);
|
||||||
else if (reply->type != REDIS_REPLY_ARRAY) {
|
} else if (reply->type != REDIS_REPLY_ARRAY) {
|
||||||
if (reply->type != REDIS_REPLY_NIL)
|
if (reply->type != REDIS_REPLY_NIL) {
|
||||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Unexpected type: %d\n", reply->type);
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "Unexpected type: %d\n", reply->type);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < reply->elements; ++i) {
|
for (i = 0; i < reply->elements; ++i) {
|
||||||
@ -761,6 +764,7 @@ static int redis_list_oauth_keys(void) {
|
|||||||
|
|
||||||
for(isz=0;isz<keys.sz;++isz) {
|
for(isz=0;isz<keys.sz;++isz) {
|
||||||
char *s = keys.secrets[isz];
|
char *s = keys.secrets[isz];
|
||||||
|
s += strlen("turn/oauth/kid/");
|
||||||
oauth_key_data_raw key_;
|
oauth_key_data_raw key_;
|
||||||
oauth_key_data_raw *key=&key_;
|
oauth_key_data_raw *key=&key_;
|
||||||
if(redis_get_oauth_key((const u08bits*)s,key) == 0) {
|
if(redis_get_oauth_key((const u08bits*)s,key) == 0) {
|
||||||
|
|||||||
@ -1686,6 +1686,9 @@ static void* run_auth_server_thread(void *arg)
|
|||||||
read_userdb_file(0);
|
read_userdb_file(0);
|
||||||
update_white_and_black_lists();
|
update_white_and_black_lists();
|
||||||
auth_ping(authserver->rch);
|
auth_ping(authserver->rch);
|
||||||
|
#if defined(DB_TEST)
|
||||||
|
run_db_test();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return arg;
|
return arg;
|
||||||
|
|||||||
@ -1101,6 +1101,20 @@ void auth_ping(redis_context_handle rch)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////// TEST /////////////////
|
||||||
|
|
||||||
|
#if defined(DB_TEST)
|
||||||
|
|
||||||
|
void run_db_test(void)
|
||||||
|
{
|
||||||
|
turn_dbdriver_t * dbd = get_dbdriver();
|
||||||
|
if (dbd) {
|
||||||
|
dbd->list_oauth_keys();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////// WHITE/BLACK IP LISTS ///////////////////
|
///////////////// WHITE/BLACK IP LISTS ///////////////////
|
||||||
|
|
||||||
#if !defined(TURN_NO_RWLOCK)
|
#if !defined(TURN_NO_RWLOCK)
|
||||||
|
|||||||
@ -195,6 +195,10 @@ void release_allocation_quota(u08bits *username, u08bits *realm);
|
|||||||
|
|
||||||
/////////// Handle user DB /////////////////
|
/////////// Handle user DB /////////////////
|
||||||
|
|
||||||
|
#if defined(DB_TEST)
|
||||||
|
void run_db_test(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
void read_userdb_file(int to_print);
|
void read_userdb_file(int to_print);
|
||||||
void auth_ping(redis_context_handle rch);
|
void auth_ping(redis_context_handle rch);
|
||||||
void reread_realms(void);
|
void reread_realms(void);
|
||||||
|
|||||||
@ -41,7 +41,7 @@ db.allowed_peer_ip.insert({ ip_range: '172.17.13.200' });
|
|||||||
db.denied_peer_ip.insert({ ip_range: '172.17.13.133-172.17.14.56' });
|
db.denied_peer_ip.insert({ ip_range: '172.17.13.133-172.17.14.56' });
|
||||||
db.denied_peer_ip.insert({ ip_range: '123::45' });
|
db.denied_peer_ip.insert({ ip_range: '123::45' });
|
||||||
|
|
||||||
db.oauth_key.insert({ kid: 'north', ikm_key: 'Y2FybGVvbg==', hkdf_hash_func: 'SHA-256', as_rs_alg: 'AES-128-CBC', auth_alg: 'HMAC-SHA-256-128' });
|
db.oauth_key.insert({ kid: 'north', ikm_key: 'Y2FybGVvbg==', hkdf_hash_func: 'SHA-256', as_rs_alg: 'AES-256-CBC', auth_alg: 'HMAC-SHA-256-128' });
|
||||||
|
|
||||||
exit
|
exit
|
||||||
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@ set turn/denied-peer-ip/234567 "123::45"
|
|||||||
|
|
||||||
set turn/allowed-peer-ip/345678 "172.17.13.200"
|
set turn/allowed-peer-ip/345678 "172.17.13.200"
|
||||||
|
|
||||||
hmset turn/oauth/kid/north ikm_key Y2FybGVvbg== hkdf_hash_func 'SHA-256' as_rs_alg 'AES-128-CBC' auth_alg 'HMAC-SHA-256-128'
|
hmset turn/oauth/kid/north ikm_key Y2FybGVvbg== hkdf_hash_func 'SHA-256' as_rs_alg 'AES-256-CBC' auth_alg 'HMAC-SHA-256-128'
|
||||||
|
|
||||||
save
|
save
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user