summaryrefslogtreecommitdiff
path: root/pjnath/src/pjturn-srv
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/src/pjturn-srv')
-rw-r--r--pjnath/src/pjturn-srv/auth.c23
-rw-r--r--pjnath/src/pjturn-srv/auth.h12
-rw-r--r--pjnath/src/pjturn-srv/main.c11
-rw-r--r--pjnath/src/pjturn-srv/server.c2
4 files changed, 46 insertions, 2 deletions
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
@@ -61,6 +61,18 @@ PJ_DECL(pj_status_t) pj_turn_get_auth(void *user_data,
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;