From 685aef52bcf830cb591798cd0814dd4a10605497 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 14 Mar 2008 17:56:11 +0000 Subject: More ticket #485: initial test on TURN client/server git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1869 74dad513-b988-da41-8d7b-12977e46ad98 --- pjnath/src/pjturn-srv/auth.c | 23 +++++++++++++++++++++++ pjnath/src/pjturn-srv/auth.h | 12 ++++++++++++ pjnath/src/pjturn-srv/main.c | 11 ++++++++++- pjnath/src/pjturn-srv/server.c | 2 +- 4 files changed, 46 insertions(+), 2 deletions(-) (limited to 'pjnath/src/pjturn-srv') diff --git a/pjnath/src/pjturn-srv/auth.c b/pjnath/src/pjturn-srv/auth.c index 3071221c..ad930251 100644 --- a/pjnath/src/pjturn-srv/auth.c +++ b/pjnath/src/pjturn-srv/auth.c @@ -58,6 +58,29 @@ PJ_DEF(void) pj_turn_auth_dinit(void) } +PJ_DEF(pj_status_t) pj_turn_get_cred( const pj_stun_msg *msg, + void *user_data, + pj_pool_t *pool, + pj_str_t *realm, + pj_str_t *username, + pj_str_t *nonce, + int *data_type, + pj_str_t *data) +{ + PJ_UNUSED_ARG(msg); + PJ_UNUSED_ARG(pool); + PJ_UNUSED_ARG(user_data); + + *realm = pj_str(g_realm); + *username = pj_str(g_cred[0].username); + *nonce = pj_str(THE_NONCE); + *data_type = 0; + *data = pj_str(g_cred[0].passwd); + + return PJ_SUCCESS; +} + + /* * This function is called by pj_stun_verify_credential() when * server needs to challenge the request with 401 response. diff --git a/pjnath/src/pjturn-srv/auth.h b/pjnath/src/pjturn-srv/auth.h index db928051..d0b5a0ec 100644 --- a/pjnath/src/pjturn-srv/auth.h +++ b/pjnath/src/pjturn-srv/auth.h @@ -60,6 +60,18 @@ PJ_DECL(pj_status_t) pj_turn_get_auth(void *user_data, pj_str_t *realm, pj_str_t *nonce); +/** + * Get credential. + */ +PJ_DECL(pj_status_t) pj_turn_get_cred(const pj_stun_msg *msg, + void *user_data, + pj_pool_t *pool, + pj_str_t *realm, + pj_str_t *username, + pj_str_t *nonce, + int *data_type, + pj_str_t *data); + /** * This function is called to get the password for the specified username. * This function is also used to check whether the username is valid. diff --git a/pjnath/src/pjturn-srv/main.c b/pjnath/src/pjturn-srv/main.c index 3cddafc1..60c420b2 100644 --- a/pjnath/src/pjturn-srv/main.c +++ b/pjnath/src/pjturn-srv/main.c @@ -17,6 +17,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "turn.h" +#include "auth.h" + +#define REALM "pjsip.org" int err(const char *title, pj_status_t status) { @@ -38,13 +41,19 @@ int main() if (status != PJ_SUCCESS) return err("pj_init() error", status); + pjlib_util_init(); + pjnath_init(); + pj_caching_pool_init(&cp, NULL, 0); + pj_turn_auth_init(REALM); + status = pj_turn_srv_create(&cp.factory, &srv); if (status != PJ_SUCCESS) return err("Error creating server", status); - status = pj_turn_listener_create_udp(srv, pj_AF_INET(), NULL, 3478, 1, 0, &listener); + status = pj_turn_listener_create_udp(srv, pj_AF_INET(), NULL, + PJ_STUN_PORT, 1, 0, &listener); if (status != PJ_SUCCESS) return err("Error creating listener", status); diff --git a/pjnath/src/pjturn-srv/server.c b/pjnath/src/pjturn-srv/server.c index 6765b3ca..11180dbf 100644 --- a/pjnath/src/pjturn-srv/server.c +++ b/pjnath/src/pjturn-srv/server.c @@ -147,7 +147,7 @@ PJ_DEF(pj_status_t) pj_turn_srv_create(pj_pool_factory *pf, srv->core.cred.type = PJ_STUN_AUTH_CRED_DYNAMIC; srv->core.cred.data.dyn_cred.user_data = srv; srv->core.cred.data.dyn_cred.get_auth = &pj_turn_get_auth; - srv->core.cred.data.dyn_cred.get_cred = &pj_turn_srv_get_cred; + srv->core.cred.data.dyn_cred.get_cred = &pj_turn_get_cred; srv->core.cred.data.dyn_cred.get_password = &pj_turn_get_password; srv->core.cred.data.dyn_cred.verify_nonce = &pj_turn_verify_nonce; -- cgit v1.2.3