|
|
@@ -50,10 +50,10 @@ typedef struct{
|
|
|
network_ctrl_t *cmd_netc; // ftp netc
|
|
|
network_ctrl_t *data_netc; // ftp data_netc
|
|
|
luat_ip_addr_t ip_addr; // ftp ip
|
|
|
- const char *addr; // ftp addr
|
|
|
- const char *username; // ftp username
|
|
|
- const char *password; // ftp password
|
|
|
- const char *remote_name;//去掉?
|
|
|
+ char addr[64]; // ftp addr
|
|
|
+ char username[64]; // ftp username
|
|
|
+ char password[64]; // ftp password
|
|
|
+ char remote_name[64];//去掉?
|
|
|
size_t upload_done_size;
|
|
|
size_t local_file_size;
|
|
|
uint8_t cmd_send_data[FTP_CMD_SEND_MAX];
|
|
|
@@ -94,22 +94,6 @@ static uint32_t luat_ftp_close(void) {
|
|
|
network_release_ctrl(g_s_ftp.network->data_netc);
|
|
|
g_s_ftp.network->data_netc = NULL;
|
|
|
}
|
|
|
- if (g_s_ftp.network->addr){
|
|
|
- luat_heap_free(g_s_ftp.network->addr);
|
|
|
- g_s_ftp.network->addr = NULL;
|
|
|
- }
|
|
|
- if (g_s_ftp.network->username){
|
|
|
- luat_heap_free(g_s_ftp.network->username);
|
|
|
- g_s_ftp.network->username = NULL;
|
|
|
- }
|
|
|
- if (g_s_ftp.network->password){
|
|
|
- luat_heap_free(g_s_ftp.network->password);
|
|
|
- g_s_ftp.network->password = NULL;
|
|
|
- }
|
|
|
- if (g_s_ftp.network->remote_name){
|
|
|
- luat_heap_free(g_s_ftp.network->remote_name);
|
|
|
- g_s_ftp.network->remote_name = NULL;
|
|
|
- }
|
|
|
luat_heap_free(g_s_ftp.network);
|
|
|
g_s_ftp.network = NULL;
|
|
|
return 0;
|
|
|
@@ -285,9 +269,6 @@ static int32_t luat_ftp_data_callback(void *data, void *param){
|
|
|
static int32_t ftp_task_cb(void *pdata, void *param)
|
|
|
{
|
|
|
OS_EVENT *event = pdata;
|
|
|
- uint8_t *rx_buffer;
|
|
|
- int ret = 0;
|
|
|
- uint32_t rx_len = 0;
|
|
|
if (event->ID >= FTP_EVENT_LOGIN && event->ID <= FTP_EVENT_PUSH)
|
|
|
{
|
|
|
LLOGE("last cmd not finish, ignore %d,%u,%u,%x", event->ID - USER_EVENT_ID_START, event->Param1, event->Param2, param);
|
|
|
@@ -298,8 +279,8 @@ static int32_t ftp_task_cb(void *pdata, void *param)
|
|
|
case FTP_EVENT_DATA_WRITE_FILE:
|
|
|
if (g_s_ftp.fd)
|
|
|
{
|
|
|
- luat_fs_fwrite(event->Param1, event->Param2, 1, g_s_ftp.fd);
|
|
|
- luat_heap_free(event->Param1);
|
|
|
+ luat_fs_fwrite((void*)event->Param1, event->Param2, 1, g_s_ftp.fd);
|
|
|
+ luat_heap_free((void*)event->Param1);
|
|
|
}
|
|
|
break;
|
|
|
case FTP_EVENT_DATA_TX_DONE:
|
|
|
@@ -341,8 +322,8 @@ static int luat_ftp_pasv_connect(luat_ftp_ctrl_t *ftp_ctrl,uint32_t timeout_ms){
|
|
|
char h1[4]={0},h2[4]={0},h3[4]={0},h4[4]={0},p1[4]={0},p2[4]={0},data_addr[64]={0};
|
|
|
uint8_t port1,port2;
|
|
|
uint16_t data_port;
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, (uint8_t*)"PASV\r\n", strlen("PASV\r\n"),FTP_SOCKET_TIMEOUT);
|
|
|
- int ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, (uint8_t*)"PASV\r\n", strlen("PASV\r\n"),FTP_SOCKET_TIMEOUT);
|
|
|
+ int ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
return -1;
|
|
|
}else{
|
|
|
@@ -441,7 +422,7 @@ static int ftp_login(void)
|
|
|
LLOGE("ftp network_connect fail");
|
|
|
return -1;
|
|
|
}
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
return -1;
|
|
|
}else{
|
|
|
@@ -453,8 +434,8 @@ static int ftp_login(void)
|
|
|
LLOGD("ftp connect ok");
|
|
|
memset(g_s_ftp.network->cmd_send_data,0,FTP_CMD_SEND_MAX);
|
|
|
snprintf_((char *)(g_s_ftp.network->cmd_send_data), FTP_CMD_SEND_MAX, "USER %s\r\n",g_s_ftp.network->username);
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
LLOGE("ftp username wrong");
|
|
|
return -1;
|
|
|
@@ -467,8 +448,8 @@ static int ftp_login(void)
|
|
|
LLOGD("ftp username ok");
|
|
|
memset(g_s_ftp.network->cmd_send_data,0,FTP_CMD_SEND_MAX);
|
|
|
snprintf_((char *)(g_s_ftp.network->cmd_send_data), FTP_CMD_SEND_MAX, "PASS %s\r\n",g_s_ftp.network->password);
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
LLOGE("ftp login wrong");
|
|
|
return -1;
|
|
|
@@ -489,7 +470,6 @@ static void ftp_task(void *param){
|
|
|
OS_EVENT task_event;
|
|
|
rtos_msg_t msg = {0};
|
|
|
uint8_t is_timeout = 0;
|
|
|
- uint8_t is_online = 0;
|
|
|
g_s_ftp.is_run = 1;
|
|
|
msg.handler = l_ftp_callback;
|
|
|
luat_rtos_event_recv(g_s_ftp.task_handle, FTP_EVENT_LOGIN, &task_event, NULL, LUAT_WAIT_FOREVER);
|
|
|
@@ -539,13 +519,13 @@ static void ftp_task(void *param){
|
|
|
network_release_ctrl(g_s_ftp.network->data_netc);
|
|
|
g_s_ftp.network->data_netc = NULL;
|
|
|
}
|
|
|
- if(luat_ftp_pasv_connect(g_s_ftp.network,FTP_SOCKET_TIMEOUT)){
|
|
|
+ if(luat_ftp_pasv_connect(&g_s_ftp,FTP_SOCKET_TIMEOUT)){
|
|
|
LLOGE("ftp pasv_connect fail");
|
|
|
goto operation_failed;
|
|
|
}
|
|
|
snprintf_((char *)(g_s_ftp.network->cmd_send_data), FTP_CMD_SEND_MAX, "RETR %s\r\n",g_s_ftp.network->remote_name);
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)g_s_ftp.network->cmd_send_data),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)g_s_ftp.network->cmd_send_data),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -570,7 +550,7 @@ static void ftp_task(void *param){
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -580,7 +560,7 @@ static void ftp_task(void *param){
|
|
|
}
|
|
|
}
|
|
|
while (count<3 && g_s_ftp.network->data_netc_online!=0){
|
|
|
- luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT/3);
|
|
|
+ luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT/3);
|
|
|
count++;
|
|
|
}
|
|
|
if (g_s_ftp.fd){
|
|
|
@@ -590,15 +570,15 @@ static void ftp_task(void *param){
|
|
|
luat_msgbus_put(&msg, 0);
|
|
|
break;
|
|
|
case FTP_EVENT_PUSH:
|
|
|
- if(luat_ftp_pasv_connect(g_s_ftp.network,FTP_SOCKET_TIMEOUT)){
|
|
|
+ if(luat_ftp_pasv_connect(&g_s_ftp,FTP_SOCKET_TIMEOUT)){
|
|
|
LLOGD("ftp pasv_connect fail");
|
|
|
goto operation_failed;
|
|
|
}
|
|
|
|
|
|
memset(g_s_ftp.network->cmd_send_data,0,FTP_CMD_SEND_MAX);
|
|
|
snprintf_((char *)(g_s_ftp.network->cmd_send_data), FTP_CMD_SEND_MAX, "STOR %s\r\n",g_s_ftp.network->remote_name);
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)g_s_ftp.network->cmd_send_data),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)g_s_ftp.network->cmd_send_data),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -616,12 +596,12 @@ static void ftp_task(void *param){
|
|
|
int len = luat_fs_fread(buff, sizeof(uint8_t), PUSH_BUFF_SIZE, g_s_ftp.fd);
|
|
|
if (len < 1)
|
|
|
break;
|
|
|
- luat_ftp_data_send(g_s_ftp.network, buff, len);
|
|
|
+ luat_ftp_data_send(&g_s_ftp, buff, len);
|
|
|
offset += len;
|
|
|
}
|
|
|
luat_heap_free(buff);
|
|
|
LLOGD("offset:%d file_size:%d",offset,g_s_ftp.network->local_file_size);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (g_s_ftp.network->upload_done_size != g_s_ftp.network->local_file_size)
|
|
|
{
|
|
|
LLOGE("upload not finish !!! %d,%d", g_s_ftp.network->upload_done_size, g_s_ftp.network->local_file_size);
|
|
|
@@ -634,7 +614,7 @@ static void ftp_task(void *param){
|
|
|
}
|
|
|
}
|
|
|
while (count<3 && g_s_ftp.network->data_netc_online!=0){
|
|
|
- luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT/3);
|
|
|
+ luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT/3);
|
|
|
count++;
|
|
|
}
|
|
|
if (g_s_ftp.fd){
|
|
|
@@ -650,12 +630,12 @@ static void ftp_task(void *param){
|
|
|
OS_DeInitBuffer(&g_s_ftp.result_buffer);
|
|
|
if(!memcmp(g_s_ftp.network->cmd_send_data, "LIST", 4))
|
|
|
{
|
|
|
- if(luat_ftp_pasv_connect(g_s_ftp.network,FTP_SOCKET_TIMEOUT)){
|
|
|
+ if(luat_ftp_pasv_connect(&g_s_ftp,FTP_SOCKET_TIMEOUT)){
|
|
|
LLOGD("ftp pasv_connect fail");
|
|
|
goto operation_failed;
|
|
|
}
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -676,7 +656,7 @@ static void ftp_task(void *param){
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -689,8 +669,8 @@ static void ftp_task(void *param){
|
|
|
luat_msgbus_put(&msg, 0);
|
|
|
break;
|
|
|
}
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, g_s_ftp.network->cmd_send_data, strlen((const char *)(g_s_ftp.network->cmd_send_data)),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
goto operation_failed;
|
|
|
}else{
|
|
|
@@ -751,8 +731,8 @@ operation_failed:
|
|
|
|
|
|
msg.arg1 = 0;
|
|
|
msg.arg2 = 0;
|
|
|
- luat_ftp_cmd_send(g_s_ftp.network, (uint8_t*)"QUIT\r\n", strlen("QUIT\r\n"),FTP_SOCKET_TIMEOUT);
|
|
|
- ret = luat_ftp_cmd_recv(g_s_ftp.network,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
+ luat_ftp_cmd_send(&g_s_ftp, (uint8_t*)"QUIT\r\n", strlen("QUIT\r\n"),FTP_SOCKET_TIMEOUT);
|
|
|
+ ret = luat_ftp_cmd_recv(&g_s_ftp,g_s_ftp.network->cmd_recv_data,&g_s_ftp.network->cmd_recv_len,FTP_SOCKET_TIMEOUT);
|
|
|
if (ret){
|
|
|
msg.arg1 = 1;
|
|
|
}else{
|
|
|
@@ -798,14 +778,14 @@ FTP客户端
|
|
|
ftp_login = ftp.login(nil,"xxx")
|
|
|
*/
|
|
|
static int l_ftp_login(lua_State *L) {
|
|
|
- size_t server_cert_len,client_cert_len, client_key_len, client_password_len,addr_len,username_len,password_len;
|
|
|
+ size_t server_cert_len,client_cert_len, client_key_len, client_password_len;
|
|
|
+ size_t len = 0;
|
|
|
const char *server_cert = NULL;
|
|
|
const char *client_cert = NULL;
|
|
|
const char *client_key = NULL;
|
|
|
const char *client_password = NULL;
|
|
|
const char *username = NULL;
|
|
|
const char *password = NULL;
|
|
|
- uint8_t is_timeout = 0;
|
|
|
int result = 0;
|
|
|
// mbedtls_debug_set_threshold(4);
|
|
|
if (g_s_ftp.network){
|
|
|
@@ -823,7 +803,7 @@ static int l_ftp_login(lua_State *L) {
|
|
|
memset(g_s_ftp.network, 0, sizeof(luat_ftp_network_t));
|
|
|
|
|
|
g_s_ftp.network->adapter_index = luaL_optinteger(L, 1, network_get_last_register_adapter());
|
|
|
- if (g_s_ftp.network->adapter_index < 0 || g_s_ftp.network->adapter_index >= NW_ADAPTER_QTY){
|
|
|
+ if (g_s_ftp.network->adapter_index >= NW_ADAPTER_QTY){
|
|
|
LLOGE("bad network adapter index %d", g_s_ftp.network->adapter_index);
|
|
|
result = FTP_ERROR_STATE;
|
|
|
goto error;
|
|
|
@@ -836,27 +816,20 @@ static int l_ftp_login(lua_State *L) {
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
- luat_rtos_task_create(&g_s_ftp.task_handle, 2048, 40, "ftp", ftp_task, NULL, 16);
|
|
|
- network_init_ctrl(g_s_ftp.network->cmd_netc,g_s_ftp.task_handle, ftp_task_cb, NULL);
|
|
|
- network_set_base_mode(g_s_ftp.network->cmd_netc, 1, 30000, 0, 0, 0, 0);
|
|
|
- network_set_local_port(g_s_ftp.network->cmd_netc, 0);
|
|
|
|
|
|
- const char *addr = luaL_checklstring(L, 2, &addr_len);
|
|
|
- g_s_ftp.network->addr = luat_heap_malloc(addr_len + 1);
|
|
|
- memset(g_s_ftp.network->addr, 0, addr_len + 1);
|
|
|
- memcpy(g_s_ftp.network->addr, addr, addr_len);
|
|
|
+ const char *addr = luaL_checklstring(L, 2, &len);
|
|
|
+ if (len > 0 && len < 64)
|
|
|
+ memcpy(g_s_ftp.network->addr, addr, len + 1);
|
|
|
|
|
|
g_s_ftp.network->port = luaL_optinteger(L, 3, 21);
|
|
|
|
|
|
- username = luaL_optlstring(L, 4, "",&username_len);
|
|
|
- g_s_ftp.network->username = luat_heap_malloc(username_len + 1);
|
|
|
- memset(g_s_ftp.network->username, 0, username_len + 1);
|
|
|
- memcpy(g_s_ftp.network->username, username, username_len);
|
|
|
+ username = luaL_optlstring(L, 4, "",&len);
|
|
|
+ if (len > 0 && len < 64)
|
|
|
+ memcpy(g_s_ftp.network->username, username, len + 1);
|
|
|
|
|
|
- password = luaL_optlstring(L, 5, "",&password_len);
|
|
|
- g_s_ftp.network->password = luat_heap_malloc(password_len + 1);
|
|
|
- memset(g_s_ftp.network->password, 0, password_len + 1);
|
|
|
- memcpy(g_s_ftp.network->password, password, password_len);
|
|
|
+ password = luaL_optlstring(L, 5, "",&len);
|
|
|
+ if (len > 0 && len < 64)
|
|
|
+ memcpy(g_s_ftp.network->password, password, len + 1);
|
|
|
|
|
|
// 加密相关
|
|
|
if (lua_isboolean(L, 6)){
|
|
|
@@ -922,6 +895,10 @@ static int l_ftp_login(lua_State *L) {
|
|
|
}
|
|
|
|
|
|
network_set_ip_invaild(&g_s_ftp.network->ip_addr);
|
|
|
+ luat_rtos_task_create(&g_s_ftp.task_handle, 8*1024, 10, "ftp", ftp_task, NULL, 16);
|
|
|
+ network_init_ctrl(g_s_ftp.network->cmd_netc,g_s_ftp.task_handle, ftp_task_cb, NULL);
|
|
|
+ network_set_base_mode(g_s_ftp.network->cmd_netc, 1, 30000, 0, 0, 0, 0);
|
|
|
+ network_set_local_port(g_s_ftp.network->cmd_netc, 0);
|
|
|
|
|
|
g_s_ftp.idp = luat_pushcwait(L);
|
|
|
luat_rtos_event_send(g_s_ftp.task_handle, FTP_EVENT_LOGIN, 0, 0, 0, LUAT_WAIT_FOREVER);
|
|
|
@@ -1025,14 +1002,8 @@ static int l_ftp_pull(lua_State *L) {
|
|
|
}
|
|
|
g_s_ftp.network->local_file_size = luat_fs_fsize(local_name);
|
|
|
const char * remote_name = luaL_optlstring(L, 2, "",&len);
|
|
|
- if (g_s_ftp.network->remote_name) {
|
|
|
- luat_heap_free(g_s_ftp.network->remote_name);
|
|
|
- g_s_ftp.network->remote_name = NULL;
|
|
|
- }
|
|
|
- g_s_ftp.network->remote_name = luat_heap_malloc(len + 1);
|
|
|
- memset(g_s_ftp.network->remote_name, 0, len + 1);
|
|
|
- memcpy(g_s_ftp.network->remote_name, remote_name, len);
|
|
|
- luat_rtos_event_send(g_s_ftp.task_handle, FTP_EVENT_PULL, 0, 0, 0, NULL);
|
|
|
+ memcpy(g_s_ftp.network->remote_name, remote_name, len + 1);
|
|
|
+ luat_rtos_event_send(g_s_ftp.task_handle, FTP_EVENT_PULL, 0, 0, 0, 0);
|
|
|
return 1;
|
|
|
error:
|
|
|
LLOGE("ftp pull fail");
|
|
|
@@ -1070,13 +1041,7 @@ static int l_ftp_push(lua_State *L) {
|
|
|
}
|
|
|
g_s_ftp.network->local_file_size = luat_fs_fsize(local_name);
|
|
|
const char * remote_name = luaL_optlstring(L, 2, "",&len);
|
|
|
- if (g_s_ftp.network->remote_name) {
|
|
|
- luat_heap_free(g_s_ftp.network->remote_name);
|
|
|
- g_s_ftp.network->remote_name = NULL;
|
|
|
- }
|
|
|
- g_s_ftp.network->remote_name = luat_heap_malloc(len + 1);
|
|
|
- memset(g_s_ftp.network->remote_name, 0, len + 1);
|
|
|
- memcpy(g_s_ftp.network->remote_name, remote_name, len);
|
|
|
+ memcpy(g_s_ftp.network->remote_name, remote_name, len + 1);
|
|
|
luat_rtos_event_send(g_s_ftp.task_handle, FTP_EVENT_PUSH, 0, 0, 0, LUAT_WAIT_FOREVER);
|
|
|
return 1;
|
|
|
error:
|
|
|
@@ -1131,7 +1096,7 @@ LUAMOD_API int luaopen_ftp( lua_State *L ) {
|
|
|
luat_newlib2(L, reg_ftp);
|
|
|
#else
|
|
|
luat_newlib2(L, reg_ftp_emtry);
|
|
|
- LLOGE("reg_ftp require network enable!!");
|
|
|
+ LLOGE("ftp require network enable!!");
|
|
|
#endif
|
|
|
return 1;
|
|
|
}
|