Skip to content

Commit

Permalink
add auth2.0, change token len to 512, add clearauth function
Browse files Browse the repository at this point in the history
  • Loading branch information
itolfh committed Mar 14, 2017
1 parent 80f4017 commit 7a45719
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 7 deletions.
43 changes: 39 additions & 4 deletions src/networking/coap/wilddog_protocol_coap.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,8 +583,14 @@ STATIC Wilddog_Return_T WD_SYSTEM _wilddog_coap_send_sendPkt(Wilddog_Coap_Sendpk
STATIC Wilddog_Return_T WD_SYSTEM _wilddog_coap_initSession(void* data, int flag){
Wilddog_Proto_Cmd_Arg_T * arg = (Wilddog_Proto_Cmd_Arg_T*)data;
Wilddog_Return_T ret = WILDDOG_ERR_INVALID;
Wilddog_Str_T* tmp = NULL;
Wilddog_Str_T* tmp_path = NULL;
Wilddog_Str_T* new_path = NULL;
#ifdef WILDDOG_AUTH_2_0
Wilddog_Str_T* tmp_query = NULL;
Wilddog_Str_T* new_query = NULL;
int query_len = 0;
#endif

int finalPathLen = 0;
Wilddog_Coap_Sendpkt_Arg_T send_arg;
//now we only care one packet, do not thinking about partition.
Expand All @@ -600,8 +606,32 @@ STATIC Wilddog_Return_T WD_SYSTEM _wilddog_coap_initSession(void* data, int flag
}
sprintf((char*)new_path, "%s", WILDDOG_COAP_SESSION_PATH);
//store old path
tmp = arg->p_url->p_url_path;
tmp_path = arg->p_url->p_url_path;
arg->p_url->p_url_path = new_path;

#ifdef WILDDOG_AUTH_2_0
//auth 2.0, url is like coap://1.wilddogio.com/.cs?v=2
if(NULL != arg->p_url->p_url_query){
//query string length = (pkt.url->p_url_query) + (&) + (v=2) + '\0'
query_len = strlen((const char*)arg->p_url->p_url_query) + 1 + strlen(WILDDOG_COAP_SESSION_AUTH_QUERY_2_0) + 1;
}else{
//query string length = (v=2) + '\0'
query_len = strlen(WILDDOG_COAP_SESSION_AUTH_QUERY_2_0) + 1;
}
new_query = (Wilddog_Str_T*)wmalloc(query_len);
if(NULL == new_query){
wfree(new_path);
return WILDDOG_ERR_NULL;
}
if(NULL != arg->p_url->p_url_query){
sprintf((char*)new_query, "%s&%s",(const char*)arg->p_url->p_url_query,WILDDOG_COAP_SESSION_AUTH_QUERY_2_0);
}else{
sprintf((char*)new_query, "%s",WILDDOG_COAP_SESSION_AUTH_QUERY_2_0);
}
//store old query
tmp_query = arg->p_url->p_url_query;
arg->p_url->p_url_query = new_query;
#endif

send_arg.protocol = arg->protocol;
send_arg.url = arg->p_url;
Expand All @@ -616,10 +646,15 @@ STATIC Wilddog_Return_T WD_SYSTEM _wilddog_coap_initSession(void* data, int flag

ret = _wilddog_coap_send_sendPkt(send_arg, FALSE, WILDDOG_COAP_OBSERVE_NOOBSERVE);
//resume old path
arg->p_url->p_url_path = tmp;
arg->p_url->p_url_path = tmp_path;
if(new_path)
wfree(new_path);

#ifdef WILDDOG_AUTH_2_0
//resume old query
arg->p_url->p_url_query = tmp_query;
if(new_query)
wfree(new_query);
#endif

return ret;
}
Expand Down
4 changes: 4 additions & 0 deletions src/networking/coap/wilddog_protocol_coap.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
#define WILDDOG_COAP_CANCEL_DIS_QUERY ".dis=rm"
#define WILDDOG_COAP_OFFLINE_PATH ".off"

#ifdef WILDDOG_AUTH_2_0
#define WILDDOG_COAP_SESSION_AUTH_QUERY_2_0 "v=2"
#endif

typedef enum{
WILDDOG_COAP_OBSERVE_NOOBSERVE = 0,
WILDDOG_COAP_OBSERVE_ON,
Expand Down
15 changes: 15 additions & 0 deletions src/wilddog_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,21 @@ STATIC Wilddog_Return_T WD_SYSTEM _wilddog_conn_auth_callback
p_conn->d_session.d_session_status = WILDDOG_SESSION_NOTAUTHED;
break;
}
#ifdef WILDDOG_AUTH_2_0
case WILDDOG_HTTP_UNAUTHORIZED:
{
wilddog_debug_level(WD_DEBUG_WARN, "Auth failed, clear auth data.");
p_conn->d_session.d_session_status = WILDDOG_SESSION_NOTAUTHED;

//clear user auth token
if(p_conn->p_conn_repo->p_rp_store->p_se_callback){
(p_conn->p_conn_repo->p_rp_store->p_se_callback)(
p_conn->p_conn_repo->p_rp_store,
WILDDOG_STORE_CMD_CLEARAUTH,NULL,0);
}
break;
}
#endif
default:
{
//WTF! We don't recognize this error code, can do nothing but reauth.
Expand Down
3 changes: 2 additions & 1 deletion src/wilddog_conn.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ extern "C"
#include "wilddog_ct.h"
#include "wilddog_protocol.h"

#define WILDDOG_AUTH_2_0

#define WILDDOG_CONN_SESSION_SHORT_LEN (8 + 1)
#define WILDDOG_CONN_SESSION_LONG_LEN (32 + 1)


#define WILDDOG_CONN_PKT_FLAG_NEVERTIMEOUT (0x01)//this flag mean packet never timeout.

/*
Expand Down
26 changes: 26 additions & 0 deletions src/wilddog_store.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,30 @@ Wilddog_Store_T * WD_SYSTEM _wilddog_store_init(Wilddog_Repo_T* p_repo)
p_store->p_se_callback = (Wilddog_Func_T)_wilddog_store_ioctl;
return p_store;
}
/*
* Function: _wilddog_store_clearAuth
* Description: Clear the auth data.
* Input: p_store: The pointer of the store structure.
* arg: args.
* flag: unused.
* Output: N/A
* Return: If success return 0.
*/
STATIC Wilddog_Return_T WD_SYSTEM _wilddog_store_clearAuth
(
Wilddog_Store_T *p_store,
void* arg,
int flag
){
Wilddog_Conn_T *p_conn = p_store->p_se_repo->p_rp_conn;

wilddog_assert(p_conn, WILDDOG_ERR_NULL);

memset(p_store->p_se_auth->p_auth, 0, WILDDOG_AUTH_LEN);
p_store->p_se_auth->d_len = 0;

return WILDDOG_ERR_NOERR;
}

/*
* Function: _wilddog_store_setAuth
Expand Down Expand Up @@ -183,6 +207,8 @@ STATIC Wilddog_Return_T WD_SYSTEM _wilddog_store_ioctl
return _wilddog_store_getAuth(p_store, arg);
case WILDDOG_STORE_CMD_GETNODE:
return WILDDOG_ERR_INVALID;
case WILDDOG_STORE_CMD_CLEARAUTH:
return _wilddog_store_clearAuth(p_store, arg, flags);
case WILDDOG_STORE_CMD_SETAUTH:
return _wilddog_store_setAuth(p_store, arg, flags);
case WILDDOG_STORE_CMD_SENDGET:
Expand Down
3 changes: 2 additions & 1 deletion src/wilddog_store.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ extern "C"

#include "wilddog_conn.h"

#define WILDDOG_AUTH_LEN 256
#define WILDDOG_AUTH_LEN 512

typedef enum WILDDOG_STORE_CMD_T
{
WILDDOG_STORE_CMD_GETAUTH = 0,
WILDDOG_STORE_CMD_GETNODE,
WILDDOG_STORE_CMD_CLEARAUTH,
WILDDOG_STORE_CMD_SETAUTH,
WILDDOG_STORE_CMD_SENDGET,
WILDDOG_STORE_CMD_SENDSET,
Expand Down
2 changes: 1 addition & 1 deletion tests/linux/test_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ STATIC void addObserver_callback
int main(int argc, char **argv)
{
Wilddog_T wilddog = 0;

Wilddog_Str_T* url = NULL;
#ifndef TEST_URL
if(argc < 2){
printf("Input : \t ./test_reobserver url\n");
Expand Down

0 comments on commit 7a45719

Please sign in to comment.