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; }
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> %s ",encoded_url,oa,date); n += snprintf(arg->buf + n, arg->buflen - n, "<span>%s</span>",text); n += snprintf(arg->buf + n, arg->buflen - n, " <a href=\"/?text=%s\">smsto</a> <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> %s ",encoded_url,oa,date); n += snprintf(arg->buf + n, arg->buflen - n, "<span>%s</span>",text); n += snprintf(arg->buf + n, arg->buflen - n, " <a href=\"/?text=%s\">smsto</a> <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); }