Ejemplo n.º 1
0
void CSMSReceiver::EvolStatusRetrSent(CString csData)
{
	if(csData.Left(3)=="+OK")
	{
		CString csFrom;
		CString csMensaje;
		CString csFromMensaje=ReadSMS(csData);
		if(!csFromMensaje.IsEmpty())
			m_slMessages.AddTail(csFromMensaje);

		m_nStatus = POP3_STATUS_RETR;

		m_nMessageNum++;
		if(m_nMessageNum<=m_nNumMessages)
		{
			// Solicitamos el siguiente mensaje
			char strRetr[20];
			memset(strRetr,0,20);
			sprintf(strRetr,"RETR %d\r\n",m_nMessageNum);
			m_pSocket->Send(strRetr,strlen(strRetr));

			m_nStatus = POP3_STATUS_RETRSENT;
		}
		else
		{
			CString csQuit;
			csQuit.Format("QUIT\r\n",m_csLogin);
			m_pSocket->Send(csQuit.GetBuffer(0),csQuit.GetLength());

			m_nStatus = POP3_STATUS_QUITSENT;
		}
	}
	else
		m_nStatus = POP3_STATUS_RETR;
}
Ejemplo n.º 2
0
static int
sms_sim_html (struct shttpd_arg_t *arg)
{
    int n = 0, ret = 0;
    
    n += snprintf (arg->buf + n, arg->buflen - n, "%s",
		 "HTTP/1.1 200 OK\r\n"
		 "Content-Type: text/html\r\n\r\n"
		 "<html><head><title>SMS in SIM Card</title>"
		 "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8\"/>"
		 "<meta name=\"viewport\" content=\"width=320, initial-scale=1.0\" />"
		 "</head><body>");
    
    n += snprintf(arg->buf + n, arg->buflen - n, "<div>");
    char *cmgr0 = ReadSMS(gsm_modem,0);
    if(cmgr0 != NULL)
    {
	/*+CMGR: 0,,22
	* 0891683108100005F0040D91683186517521F8000870015030224423026D4B
	*/
	char hexStr[1024];
	int state;
	int ret = sscanf(cmgr0, "\r\n+CMGR: %d,,%*d\r\n%s",&state,hexStr);
	if (ret == 2) {
		printf("Decode cmgr0, state = %d\n",state);
		unsigned char *smsc=NULL,*oa=NULL,*text=NULL,*date=NULL;
		unsigned char *bin = HexToBin(hexStr,strlen(hexStr));
		DecodeSMS(bin,&smsc,&oa,&text,&date);	
		if(oa != NULL && text != NULL)
		{
		    char encoded_url[1024];
		    urlencode(oa, encoded_url);
		    n += snprintf(arg->buf + n, arg->buflen - n, "<p>LastReceived:<br/><a href=\"/?phone_num=%s\">%s</a>&nbsp;&nbsp;%s&nbsp;&nbsp;",encoded_url,oa,date);
		    n += snprintf(arg->buf + n, arg->buflen - n, "<span>%s</span>",text);
		    n += snprintf(arg->buf + n, arg->buflen - n, "&nbsp;&nbsp;<a href=\"/?text=%s\">smsto</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"mailto:?body=%s\">mailto</a><br/>------------------------------</p>",text,text);
		}
		if(smsc != NULL)    
		    free(smsc);
		if(oa != NULL)
		    free(oa);
		//text don't need free;
		if(date != NULL)
		    free(date);
		free(bin);
	    }else{
		n += snprintf(arg->buf + n, arg->buflen - n, "<p>LastReceived:<br/>Read Error!</p>");
	    }
	free(cmgr0);
	
    }else
	n += snprintf(arg->buf + n, arg->buflen - n, "<p>LastReceived:<br/>Read Error!</p>");
	
    char *sms =  ReadSMSList(gsm_modem);
    if(sms)
    {
	int len = strlen(sms);
	char * current = NULL;
	for (current = strstr(sms, "\r\n+CMGL: ");
	    current != NULL && current < sms + len - 1;
	    current = strstr(current + 1, "\r\n+CMGL: ")) {

	    int idx = 0;
	    int s;
	    int l;
	    char hexStr[1024];
	    sscanf(current, "\r\n+CMGL: %d,%d,,%d\r\n%s", &idx, &s,&l,hexStr);
	    if (idx == 0) {
		printf("Could not read SMS number, skipping...\n");
	    } else {
		printf("Decode %d, state = %d\n",idx,s);
		unsigned char *smsc=NULL,*oa=NULL,*text=NULL,*date=NULL;
		unsigned char *bin = HexToBin(hexStr,strlen(hexStr));
		DecodeSMS(bin,&smsc,&oa,&text,&date);	
		if(oa != NULL && text != NULL)
		{
		    char encoded_url[1024];
		    urlencode(oa, encoded_url);
		    n += snprintf(arg->buf + n, arg->buflen - n, "<p><a href=\"/?phone_num=%s\">%s</a>&nbsp;&nbsp;%s&nbsp;&nbsp;",encoded_url,oa,date);
		    n += snprintf(arg->buf + n, arg->buflen - n, "<span>%s</span>",text);
		    n += snprintf(arg->buf + n, arg->buflen - n, "&nbsp;&nbsp;<a href=\"/?text=%s\">smsto</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"mailto:?body=%s\">mailto</a></p>",text,text);
		}
		if(smsc != NULL)    
		    free(smsc);
		if(oa != NULL)
		    free(oa);
		//text don't need free;
		if(date != NULL)
		    free(date);
		free(bin);
	    }
	}
	free(sms);
    }else
	n += snprintf (arg->buf + n, arg->buflen - n, "<h1>empty</h1>");
    n += snprintf (arg->buf + n, arg->buflen - n, "</div></body></html>");
    assert (n < (int) arg->buflen);
    arg->last = 1;

    return (n);
}