Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
k-sdk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈伟灿
k-sdk
Commits
58448213
Commit
58448213
authored
Mar 10, 2021
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】修改jwt的获取
【提交人】陈伟灿
parent
03825dca
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
100 additions
and
42 deletions
+100
-42
application/kcloud/kcloud_config.h
application/kcloud/kcloud_config.h
+4
-3
application/kcloud/kk_register.c
application/kcloud/kk_register.c
+71
-13
application/kcloud/kk_topic_mng.c
application/kcloud/kk_topic_mng.c
+16
-12
application/kcloud/mqtt_api.c
application/kcloud/mqtt_api.c
+5
-10
common/hal/kk_product.h
common/hal/kk_product.h
+1
-1
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+1
-1
midware/tsl/tsl_handle/kk_tsl_load.c
midware/tsl/tsl_handle/kk_tsl_load.c
+2
-2
No files found.
application/kcloud/kcloud_config.h
View file @
58448213
...
...
@@ -4,16 +4,17 @@
#define ADDRESS "tcp://172.25.240.199:1883"//"tcp://172.25.240.31:1983"////
#define CLIENTID "CCU.%s.%s"
#define TOPIC "/sys/a1OYuSBt23u/aIqEbWno8yDdsjCX15iq/thing/service/property/set"
#define PAYLOAD "Hello
cwc
World!"
#define PAYLOAD "Hello World!"
#define QOS 0
#define TIMEOUT 10000L
#define USRNAME "hangzhou_gateway "
#define PASSWORD "2ca1442865ff4cb99870f60f2c646190"
#define AUTO_CONN 1
#define CONNECT_TIMEOUT 3
#define IPSTR "172.25.240.122"
#define PORT 8092
#define GET_KEY_CMD "/usr/sbin/fw_printenv key -n"
typedef
enum
{
RETURN_FAIL
=
-
1
,
RETURN_SUCCESS
=
0
,
...
...
application/kcloud/kk_register.c
View file @
58448213
...
...
@@ -14,11 +14,32 @@
#include "cJSON.h"
#include "com_api.h"
#include "kk_product.h"
#
define IPSTR "172.25.240.122
"
#define PORT 8092
#
include "kcloud_config.h
"
#define BUFSIZE 1024
#define PRODUCTSECRET "123456"
int
kk_execel_cmd
(
char
*
cmd
,
char
*
buf
,
int
buf_len
,
int
*
ret_len
)
{
if
(
cmd
==
NULL
||
buf
==
NULL
||
buf_len
==
0
)
{
printf
(
"arg error
\n
"
);
return
-
1
;
}
memset
(
buf
,
0
,
buf_len
);
FILE
*
fp
=
NULL
;
fp
=
popen
(
cmd
,
"r"
);
while
(
fgets
(
buf
,
buf_len
,
fp
)
!=
NULL
){
printf
(
"%s return %s"
,
cmd
,
buf
);
}
pclose
(
fp
);
*
ret_len
=
strlen
(
buf
);
return
0
;
}
int
kk_parse_deviceSecret
(
char
*
info
){
FILE
*
fp
;
if
(
info
==
NULL
){
...
...
@@ -170,6 +191,7 @@ int arrayToStr(unsigned char *buf, unsigned int buflen, char *out)
printf
(
"out = %s
\n
"
,
out
);
return
buflen
*
2
;
}
static
char
*
kk_create_register_info
()
{
cJSON
*
root
;
...
...
@@ -183,13 +205,21 @@ static char * kk_create_register_info()
char
ramdonId
[
16
]
=
{
0
};
unsigned
char
sign_hex
[
32
]
=
{
0
};
unsigned
char
sign_hex_str
[
65
]
=
{
0
};
uint8_t
productSecret
[
64
]
=
{
0
};
int
productSecret_len
=
0
;
root
=
cJSON_CreateObject
();
HAL_Get_mac
(
mac
);
HAL_GetTime_s
(
ramdonId
);
cJSON_AddStringToObject
(
root
,
"deviceCode"
,
"CCU_77777"
);
cJSON_AddStringToObject
(
root
,
"deviceCode"
,
KK_CCU_ID
);
cJSON_AddStringToObject
(
root
,
"productCode"
,
productCode
);
signSource
=
kk_dictionary_order
(
"CCU_77777"
,
productCode
,
"0000000000"
);
signSource
=
kk_dictionary_order
(
KK_CCU_ID
,
productCode
,
KK_CCU_RANDOM
);
kk_execel_cmd
(
GET_KEY_CMD
,(
char
*
)
productSecret
,
sizeof
(
productSecret
),
&
productSecret_len
);
if
(
productSecret_len
==
0
){
utils_hmac_sha256
(
signSource
,
strlen
(
signSource
),
PRODUCTSECRET
,
strlen
(
PRODUCTSECRET
),
sign_hex
);
}
else
{
utils_hmac_sha256
(
signSource
,
strlen
(
signSource
),
productSecret
,
strlen
(
productSecret
),
sign_hex
);
}
arrayToStr
(
sign_hex
,
32
,
sign_hex_str
);
base64Out
=
malloc
(
128
);
...
...
@@ -201,7 +231,7 @@ static char * kk_create_register_info()
//base64_encode(sign_hex_str,base64Out,strlen(sign_hex_str));
printf
(
"[%s][%d]base64Out:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
base64Out
);
cJSON_AddStringToObject
(
root
,
"sign"
,
sign_hex_str
);
cJSON_AddStringToObject
(
root
,
"random"
,
"0000000000"
);
cJSON_AddStringToObject
(
root
,
"random"
,
KK_CCU_RANDOM
);
free
(
signSource
);
free
(
base64Out
);
out
=
cJSON_Print
(
root
);
...
...
@@ -210,14 +240,44 @@ static char * kk_create_register_info()
printf
(
"--------------------->kk_create_register_info:%s
\n
"
,
out
);
return
out
;
}
char
g_clientId
[
64
]
=
{
0
};
static
char
*
kk_create_get_jwt_info
()
{
cJSON
*
root
;
FILE
*
fp
;
char
*
out
=
NULL
;
char
timestamp
[
16
]
=
{
0
};
char
deviceSecret
[
64
]
=
{
0
};
HAL_GetTime_s
(
timestamp
);
sprintf
(
g_clientId
,
CLIENTID
,
KK_CCU_ID
,
timestamp
);
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
"deviceCode"
,
KK_CCU_ID
);
cJSON_AddStringToObject
(
root
,
"productCode"
,
KK_CCU_PRODUCTID
);
cJSON_AddStringToObject
(
root
,
"clientId"
,
g_clientId
);
fp
=
fopen
(
"/usr/kk/kk_deviceSecret.txt"
,
"r"
);
if
(
fp
!=
NULL
){
fread
(
deviceSecret
,
1
,
sizeof
(
deviceSecret
),
fp
);
fclose
(
fp
);
}
cJSON_AddStringToObject
(
root
,
"deviceSecret"
,
deviceSecret
);
static
int
kk_send_register_info
(
int
sockfd
,
const
char
*
path
)
out
=
cJSON_Print
(
root
);
//cJSON_Minify(out);
cJSON_Delete
(
root
);
printf
(
"--------------------->kk_create_get_jwt_info:%s
\n
"
,
out
);
return
out
;
}
static
int
kk_send_register_info
(
int
sockfd
,
const
char
*
path
,
int
type
)
{
char
str1
[
1024
],
str2
[
1024
],
str
[
16
]
=
{
0
};
char
tmp
[
128
]
=
{
0
};
int
len
=
0
;
memset
(
str2
,
0
,
sizeof
(
str2
));
if
(
type
==
0
){
strcat
(
str2
,
kk_create_register_info
());
}
else
{
strcat
(
str2
,
kk_create_get_jwt_info
());
}
len
=
strlen
(
str2
);
sprintf
(
str
,
"%d"
,
len
);
...
...
@@ -263,7 +323,7 @@ int kk_start_ccu_register(void)
return
-
1
;
}
printf
(
"connect successful
\n
"
);
ret
=
kk_send_register_info
(
sockfd
,
"/deviceRegister/register"
);
ret
=
kk_send_register_info
(
sockfd
,
"/deviceRegister/register"
,
0
);
if
(
ret
<
0
)
{
printf
(
"send fail'%s'
\n
"
,
errno
,
strerror
(
errno
));
close
(
sockfd
);
...
...
@@ -303,7 +363,7 @@ int kk_start_ccu_register(void)
printf
(
"[%s][%d]buf2:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
buf2
);
ret
=
kk_parse_deviceSecret
(
buf2
);
if
(
ret
==
0
){
ret
=
kk_send_register_info
(
sockfd
,
"/auth/generateJwt"
);
ret
=
kk_send_register_info
(
sockfd
,
"/auth/generateJwt"
,
1
);
if
(
ret
<
0
)
{
printf
(
"send fail'%s'
\n
"
,
errno
,
strerror
(
errno
));
close
(
sockfd
);
...
...
@@ -315,10 +375,8 @@ int kk_start_ccu_register(void)
}
}
}
else
if
(
registerType
==
2
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
char
*
jwt
=
strstr
(
buf
,
"jwt"
);
if
(
jwt
!=
NULL
){
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
char
*
start
=
strchr
(
buf
,
'{'
);
char
*
end
=
strrchr
(
buf
,
'}'
);
strncpy
(
buf2
,
start
,
end
-
start
+
1
);
...
...
application/kcloud/kk_topic_mng.c
View file @
58448213
...
...
@@ -8,10 +8,10 @@
#include "kk_log.h"
const
char
KK_URI_SYS_PREFIX
[]
=
"
/sys
/kk/%s/%s/thing/service/property/set"
;
const
char
KK_URI_SYS_PREFIX_SERVICE
[]
=
"
/sys
/kk/%s/%s/thing/service/+"
;
const
char
KK_URI_SYS_PREFIX_TOPO_CHANGE
[]
=
"
/sys
/kk/%s/%s/thing/topo/change"
;
const
char
KK_URI_SYS_PREFIX_EX
[]
=
"
/sys
/kk/%s/%s"
;
const
char
KK_URI_SYS_PREFIX
[]
=
"
biz
/kk/%s/%s/thing/service/property/set"
;
const
char
KK_URI_SYS_PREFIX_SERVICE
[]
=
"
biz
/kk/%s/%s/thing/service/+"
;
const
char
KK_URI_SYS_PREFIX_TOPO_CHANGE
[]
=
"
biz
/kk/%s/%s/thing/topo/change"
;
const
char
KK_URI_SYS_PREFIX_EX
[]
=
"
biz
/kk/%s/%s"
;
const
char
KK_URI_OTA_PREFIX
[]
=
"/ota/device/upgrade/kk/%s/%s/#"
;
const
char
KK_URI_OTA_PROCESS
[]
=
"/ota/device/progress/%s/%s"
;
const
char
KK_URI_OTA_INFORM
[]
=
"/ota/device/inform/%s/%s"
;
...
...
@@ -54,8 +54,8 @@ int KK_Subdev_Subscribe(const cJSON *root)
memset
(
url
,
0
,
url_len
);
snprintf
(
url
,
url_len
,
KK_URI_OTA_PREFIX
,
productCode
->
valuestring
,
deviceCode
->
valuestring
);
INFO_PRINT
(
"ota [%s][%d] URL:%s
\n
"
,
__FUNCTION__
,
__LINE__
,
url
);
res
=
KK_MQTT_SubTopic
(
url
);
//
INFO_PRINT("ota [%s][%d] URL:%s\n",__FUNCTION__,__LINE__,url);
//
res = KK_MQTT_SubTopic(url);
memset
(
url
,
0
,
url_len
);
snprintf
(
url
,
url_len
,
KK_URI_SYS_PREFIX
,
productCode
->
valuestring
,
deviceCode
->
valuestring
);
...
...
@@ -74,7 +74,7 @@ int KK_Subdev_Subscribe(const cJSON *root)
}
static
int
_kk_c
lient
_subscribe
(
char
productCode
[
PRODUCT_CODE_LEN
],
char
deviceCode
[
DEVICE_CODE_LEN
])
static
int
_kk_c
cu_topic
_subscribe
(
char
productCode
[
PRODUCT_CODE_LEN
],
char
deviceCode
[
DEVICE_CODE_LEN
])
{
int
res
=
0
,
index
=
0
,
fail_count
=
0
;
...
...
@@ -100,15 +100,19 @@ static int _kk_client_subscribe(char productCode[PRODUCT_CODE_LEN],char deviceCo
free
(
url
);
return
res
;
}
int
KK_C
lient_Gateway
_Subscribe
(
void
)
static
int
s_ccu_topic_sub
=
0
;
int
KK_C
CU_TOPIC
_Subscribe
(
void
)
{
char
productCode
[
PRODUCT_CODE_LEN
]
=
{
0
};
char
deviceCode
[
MAC_ADDR_LEN
]
=
{
0
};
if
(
s_ccu_topic_sub
==
1
){
INFO_PRINT
(
"[%s][%d] already Subscribe
\n
"
,
__FUNCTION__
,
__LINE__
);
return
-
1
;
}
s_ccu_topic_sub
=
1
;
HAL_GetProduct_Code
(
productCode
);
HAL_Get_mac
(
deviceCode
);
return
_kk_c
lient
_subscribe
(
productCode
,
KK_CCU_ID
);
return
_kk_c
cu_topic
_subscribe
(
productCode
,
KK_CCU_ID
);
}
static
int
_kk_utils_topic
(
_IN_
const
char
*
name
,
_IN_
char
*
product_code
,
...
...
@@ -225,7 +229,7 @@ char* KK_Make_Topic(cJSON *info)
}
if
((
!
strcmp
(
product_code
->
valuestring
,
"15"
)
||
!
strcmp
(
product_code
->
valuestring
,
"ccu_n12"
))
&&
\
(
strstr
(
type
->
valuestring
,
"thing/status/online"
)
!=
NULL
)){
KK_C
lient_Gateway
_Subscribe
();
KK_C
CU_TOPIC
_Subscribe
();
}
if
(
!
strcmp
(
product_code
->
valuestring
,
KK_GW_PRODUCTID
)){
if
(
strstr
(
type
->
valuestring
,
"/thing/status/offline"
)
!=
NULL
){
...
...
application/kcloud/mqtt_api.c
View file @
58448213
...
...
@@ -148,11 +148,10 @@ static void onOptSuccess(void* context, MQTTAsync_successData* response)
{
INFO_PRINT
(
"MQTTAsync_sendMessage success,return token:%d,msg length:%d
\n
"
,
response
->
token
,
response
->
alt
.
pub
.
message
.
payloadlen
);
}
else
if
(
strcmp
((
char
*
)
context
,
OPT_SUB
)
==
0
)
{
//
INFO_PRINT("MQTTAsync_subscribe success,return token:%d \n",response->token);
INFO_PRINT
(
"MQTTAsync_subscribe success,return token:%d
\n
"
,
response
->
token
);
}
else
if
(
strcmp
((
char
*
)
context
,
OPT_UNSUB
)
==
0
)
{
...
...
@@ -191,7 +190,7 @@ void KK_Get_MqttClient(MQTTAsync *pClient)
*
pClient
=
s_Client
;
}
}
extern
char
g_clientId
[
64
];
MQTTAsync
KK_MQTT_Connect
(
void
)
{
int
rc
=
0
;
...
...
@@ -201,8 +200,6 @@ MQTTAsync KK_MQTT_Connect(void)
MQTTAsync_setTraceCallback
(
mqttTraceCallback
);
opts
.
MQTTVersion
=
MQTTVERSION_3_1_1
;
char
mac
[
16
]
=
{
0
};
char
clientBuf
[
64
]
=
{
0
};
char
timestamp
[
16
]
=
{
0
};
char
token
[
512
]
=
{
0
};
char
usrname
[
128
]
=
{
0
};
fp
=
fopen
(
"/usr/kk/kk_token.txt"
,
"r"
);
...
...
@@ -211,12 +208,10 @@ MQTTAsync KK_MQTT_Connect(void)
fclose
(
fp
);
}
HAL_Get_mac
(
mac
);
HAL_GetTime_s
(
timestamp
);
sprintf
(
clientBuf
,
CLIENTID
,
KK_CCU_ID
,
timestamp
);
sprintf
(
usrname
,
"%s&%s"
,
KK_CCU_ID
,
KK_CCU_PRODUCTID
);
printf
(
"cliendid:%s,usrname:%s
\n
"
,
clientBuf
,
usrname
);
printf
(
"cliendid:%s,usrname:%s
\n
"
,
g_clientId
,
usrname
);
printf
(
"------------>token:%s
\n
"
,
token
);
if
((
rc
=
MQTTAsync_createWithOptions
(
&
s_Client
,
ADDRESS
,
clientBuf
,
MQTTCLIENT_PERSISTENCE_NONE
,
NULL
,
&
opts
))
!=
MQTTASYNC_SUCCESS
)
if
((
rc
=
MQTTAsync_createWithOptions
(
&
s_Client
,
ADDRESS
,
g_clientId
,
MQTTCLIENT_PERSISTENCE_NONE
,
NULL
,
&
opts
))
!=
MQTTASYNC_SUCCESS
)
{
ERROR_PRINT
(
"Failed to create client object, return code %d
\n
"
,
rc
);
return
NULL
;
...
...
common/hal/kk_product.h
View file @
58448213
...
...
@@ -34,7 +34,7 @@
#define KK_CCU_ID "CCU_77777"
#define KK_CCU_PRODUCTID "ccu_n12"
#define KK_GW_PRODUCTID "gateway_2"
#define KK_CCU_RANDOM "0000000000"
enum
{
DEVICE_OFFLINE
=
0
,
DEVICE_ONLINE
,
...
...
midware/midware/scene/kk_scene_handle.c
View file @
58448213
...
...
@@ -195,7 +195,7 @@ void *kk_scene_yield(void *args)
/****系统起来15s后开始定时处理****/
if
((
HAL_Uptimes
()
-
s_start_time
)
<=
15
){
sleep
(
1
);
INFO_PRINT
(
"HAL_Uptimes:%ld
\n
"
,
HAL_Uptimes
());
//
INFO_PRINT("HAL_Uptimes:%ld\n",HAL_Uptimes());
continue
;
}
...
...
midware/tsl/tsl_handle/kk_tsl_load.c
View file @
58448213
...
...
@@ -18,7 +18,7 @@ char* kk_load_json(const char *productCode,int type)
unsigned
int
filesize
;
if
(
type
==
KK_DM_DEVICE_CCU
){
path_len
=
strlen
(
TSL_CCU_PATH_FILE
)
+
strlen
(
productCode
)
+
1
;
path_len
=
strlen
(
TSL_CCU_PATH_FILE
)
+
strlen
(
"12"
)
+
1
;
}
else
if
(
type
==
KK_DM_DEVICE_GATEWAY
){
path_len
=
strlen
(
TSL_GATEWAY_PATH_FILE
)
+
strlen
(
"2"
)
+
1
;
...
...
@@ -36,7 +36,7 @@ char* kk_load_json(const char *productCode,int type)
memset
(
tslPath
,
0x0
,
path_len
);
if
(
type
==
KK_DM_DEVICE_CCU
){
snprintf
(
tslPath
,
path_len
,
TSL_CCU_PATH_FILE
,
productCode
);
snprintf
(
tslPath
,
path_len
,
TSL_CCU_PATH_FILE
,
"12"
);
}
else
if
(
type
==
KK_DM_DEVICE_GATEWAY
){
snprintf
(
tslPath
,
path_len
,
TSL_GATEWAY_PATH_FILE
,
"2"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment