Example #1
0
//=========================
int tcp_write(lua_State* L)
{
    tcp_info_t* p = ((tcp_info_t*)luaL_checkudata(L, 1, LUA_TCP));
    int len;
    char* str = (char *)luaL_checklstring(L, 2, &len);

    lua_pushinteger(L, vm_tcp_write(p->handle, str, len));

    return 1;
}
Example #2
0
//-----------------------------------------------------------------------------------
static void __tcp_callback(VM_TCP_HANDLE handle, VM_TCP_EVENT event, void* user_data)
{
    tcp_info_t* p = (tcp_info_t*)user_data;
    lua_State* L = p->L;

    lua_rawgeti(L, LUA_REGISTRYINDEX, p->cb_ref);
	if ((lua_type(L, -1) != LUA_TFUNCTION) && (lua_type(L, -1) != LUA_TLIGHTFUNCTION)) {
	  // * BAD CB function reference
	  lua_remove(L, -1);
	  if (event == VM_TCP_EVENT_CAN_READ) {
		    printf("[TCP] Read.\n");
		    int nread = -1;
		    char buf[256];
			while (nread > 0) {
				nread = vm_tcp_read(handle, buf, 254);
				if (nread < 0) {
					break;
				}
				else if (nread > 0) {
					buf[nread] = '\n';
					buf[nread+1] = '\0';
					printf("%s\n", buf);
				}
			}
	  }
	  else if (event == VM_TCP_EVENT_CONNECTED) {
		  printf("[TCP] Connected.\n");
		  if (send_buf != NULL) {
			  int nwrt = vm_tcp_write(handle, send_buf, strlen(send_buf));
			  printf("[TCP] Sent: %d\n", nwrt);
		  }
	  }
	  else if (event == VM_TCP_EVENT_PIPE_CLOSED) {
		  printf("[TCP] Closed.\n");
          if (send_buf != NULL) {
	       	vm_free(send_buf);
	      }
	  }
	  else printf("[TCP] Event: %d\n", event);
	}
	else {
		lua_pushlightuserdata(L, p);
		luaL_getmetatable(L, LUA_TCP);
		lua_setmetatable(L, -2);
		lua_pushinteger(L, (int)event);
		lua_call(L, 2, 0);
	}
}
boolean LTcpClient::wifiWrite(void *userData)
{
	vm_log_info("wifiWrite");
	LTcpReadWriteContext *pContext = (LTcpReadWriteContext*)userData;
	if (pContext->serverHandle != -1)
	{
		pContext->lenProcessed = vm_soc_svr_send(pContext->serverHandle,
												 pContext->handle, 
												 pContext->buf, 
												 pContext->len);
	}
	else
	{
		pContext->lenProcessed = vm_tcp_write(pContext->handle, 
											  pContext->buf, 
											  pContext->len);
	}
	
	vm_log_info("wifiWrite wrote %d", pContext->lenProcessed);
	return true;
}
Example #4
0
static void _vm_preload_try_query(vm_preload_ctx_t * ctx_p)
{
    VMCHAR http_header[BUFFER_LEN] = {0};
    VMCHAR http_body[BUFFER_LEN] = {0};
    VMINT ret = 0;
    VMINT written = 0;
    vm_common_t head = {E_PRELOAD_QUERYING, NULL};
    
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3114 );			
    // vm_preload_cancel check
    if (NULL == ctx_p->cb)
    {
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3117 );            
        return;
    }

    //memset(ctx_p->path, 0, sizeof(ctx_p->path));
    //vm_wstrcpy(ctx_p->path, (VMWSTR)data);
    //app_id=%d; ver=\"%s\"; imsi=\"%s\"; imei=\"%s\"; sc=\"%s\"; skb=\"%s\"; stch=\"%s\"; sgs=\"%s\"; scs=\"%s\"; w=%d; h=%d\r\n\
    // http body

    head.state = E_PRELOAD_QUERYING;
    head.user_data = ctx_p->user_data;
    PRELOAD_PMNG_WRAP_CALLBACK(ctx_p->p_hdl, 
        ctx_p->cb, ctx_p->res_id, (void*)&head);
    // vm_preload_cancel check
    if (NULL == ctx_p->cb)
    {
        return;
    }

    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3130 );			
    #ifndef _POST_

        // http header 
    if (ctx_p->query_info.ua[0])
    {
    sprintf(http_header, "GET %s?%s HTTP/1.1\r\nHost: %s:%d\r\n"
    #ifdef WIN32
    //"Proxy-Authorization: Basic TXRrODAwMjM6MWFjNmIxMDEx\r\n"
    #endif
    "User-Agent: %s\r\n"
    "Accept: %s\r\n"
    "Accept-Language: %s\r\n\r\n",
        ctx_p->url, 
/*        ctx_p->query_info.app_id,
        ctx_p->query_info.ver,  
        ctx_p->query_info.imsi,
        ctx_p->query_info.imei, */
        ctx_p->query_info.ua,
        ctx_p->host, 
        ctx_p->port, 
        (VMCHAR*)applib_inet_get_user_agent_string(),
        "*/*", 
        "en");
    }
    else
    {
        sprintf(http_header, "GET %s HTTP/1.1\r\nHost: %s:%d\r\n"
        "User-Agent: %s\r\n"
        "Accept: %s\r\n"
        "Accept-Language: %s\r\n\r\n",
            ctx_p->url, 
    /*        ctx_p->query_info.app_id,
            ctx_p->query_info.ver,  
            ctx_p->query_info.imsi,
            ctx_p->query_info.imei, */
            ctx_p->host, 
            ctx_p->port, 
            (VMCHAR*)applib_inet_get_user_agent_string(),
            "*/*", 
            "en");
    }

    #else
    //app_id=%d; ver=\"%s\"; imsi=\"%s\"; imei=\"%s\"; sc=\"%s\"; skb=\"%s\"; stch=\"%s\"; sgs=\"%s\"; scs=\"%s\"; w=%d; h=%d\r\n\r\n
    //app_id: %d\r\nver: %s\r\nimsi: %s\r\nimei: %s\r\nsc: %s\r\nskb: %s\r\nstch: %s\r\nsgs: %s\r\nscs: %s\r\nw: %d\r\nh: %d\r\n\r\n
/*    sprintf(http_body, "app_id=%d&ver=%s&imsi=%s&imei=%s&ua=%s&w=128&h=320&asdfasdf=asdfasdf&hahsdj=asdf&sss=fff",
        ctx_p->query_info.app_id,
        ctx_p->query_info.ver, 
        ctx_p->query_info.imsi,
        ctx_p->query_info.imei, 
        ctx_p->query_info.ua);*/
    strcpy(http_body,ctx_p->query_info.ua);
        
    sprintf(http_header, "POST %s HTTP/1.1\r\nHost: %s:%d\r\nProxy-Authorization: Basic TXRrODAwMjM6MWFjNmIxMDEx\r\n\
    User-Agent: %s\r\n\
    Accept: %s\r\n\
    Accept-Language: %s\r\n\
    Accept-Charset: %s\r\n\
    Accept-Encoding: %s\r\n\
    Connection: %s\r\n\
    Content-Type: %s\r\n\
    Content-Length: %d\r\n\r\n", 
        ctx_p->url, ctx_p->host, ctx_p->port, 
        (VMCHAR*)applib_inet_get_user_agent_string(),
        "*/*", 
        "zh_CN,zh",
        "UTF-8,ISO-8859-1,US-ASCII,ISO-10646-UCS-2;q=0.6",
        "identity",
        "Keep-Alive",
        "form-data/application/x-www-form-urlencoded", 
        strlen(http_body));

    strcat(http_header, http_body);

    #endif
    
    while (0 < (ret = vm_tcp_write(ctx_p->soc_id, http_header + written, strlen(http_header) - written)))
    {
        written += ret;
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3190 , written);            
    }
    #if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
    #endif
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3200 , ret);			
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3201 );			
}
Example #5
0
static VMINT _vm_preload_try_download(vm_preload_ctx_t * ctx_p)
{
    VMCHAR *http_header;
    VMINT ret = 0;
    VMINT written = 0;
    VMINT bufSize = 0;
    ASSERT(ctx_p);
    if (0 > ctx_p->soc_id && ctx_p->update)
    {
        // host is changed.
        if (0 == strstr(ctx_p->url, ctx_p->host))
        {
            VMINT nspan = 7; // http:// is 7 bytes
            for(nspan = 7; ctx_p->url[nspan] != '\0'; nspan ++)
            {
                if (ctx_p->url[nspan] == ':')
                {
                    ctx_p->port = atoi(&ctx_p->url[nspan + 1]);
                    break;
                }
                if (ctx_p->url[nspan] == '/')
                    break;
            }
            memset(ctx_p->host, 0, sizeof(ctx_p->host));
            memcpy(ctx_p->host, &ctx_p->url[7], nspan - 7);
        }
#if 1
        vm_preload_do_connection(ctx_p, 2);
#else
/* under construction !*/
#endif
        if (0 > ctx_p->soc_id)
        {
            MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3023 );         
            return -4;
        }
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3026 );
        ctx_p->update = 2;
        return 0;
    }

    http_header = vm_calloc(BUFFER_LEN);
    if (NULL == http_header)
        return -5;
    // http header
    sprintf(http_header, "GET %s HTTP/1.1\r\nHost: %s:%d\r\n"
#ifdef WIN32
   //"Proxy-Authorization: Basic TXRrODAwMjM6MWFjNmIxMDEx\r\n"
#endif
    "User-Agent: %s\r\n"
    "Accept: %s\r\n"
    "Accept-Language: %s\r\n\r\n",
        ctx_p->url, 
        ctx_p->host, 
        ctx_p->port, 
        (VMCHAR*)applib_inet_get_user_agent_string(),
        "*/*", 
        "en");
        
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3051 , ctx_p->url, ctx_p->port, ctx_p->host);  

    while (0 < (ret = vm_tcp_write(ctx_p->soc_id, http_header + written, strlen(http_header) - written)))
    {
        written += ret;
    }
    vm_free(http_header);

    return written;

}