1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/*****************************************************************
Modul do wysylania smsow przez bramke www.freesms.net
Autor: Piotr Milcarz <piotrek@smsnews.org>
Historia:
20.03.2001 - pierwsza wersja finalna
*****************************************************************/
#include <string.h>
#include <iostream.h>
#include "request.h"
#include "headers.h"
#include "sms.h"
int WyslijSMS_FreeSMS(SMS_packet *sms)
{
char *telefon = sms->telefon;
char *wiadomosc = sms->wiadomosc;
char *msg_ok = sms->potwierdzenie;
char *value, *anc, code[5];
const char *cookie;
char cookie_out[100], tel[15], len[21];
while (1) {
Headers *form = new Headers();
HTTP_Request *s_pre = new HTTP_Request("www.freesms.net", 80,
konfig.w3cache_host, konfig.w3cache_port);
s_pre->AddHeader("Host","www.freesms.net");
Headers *h2 = s_pre->GetData("/sms_center.asp",1);
delete form;
anc = strstr(s_pre->GetBody(), "frameborder=\"NO\" name=\"");
if (anc)
{
strncpy(code, anc+23, 6);
char *pTemp=strchr(code,'"');
*pTemp=0;
}else break;
HTTP_Request *s = new HTTP_Request("www.freesms.net");
s->AddHeader("Host","www.freesms.net");
cookie = h2->Header("Set-Cookie");
if (value = strchr(cookie, ';')) *value = 0;
else break;
sprintf(cookie_out,"Freesms=SMS=%s&CODE=%%2B48; %s",code+1,cookie);
s->AddHeader("Cookie", cookie_out);
delete h2;
strncat(strcpy(tel, "%2B48"), telefon, 9);
sprintf(len,"%%28%d+chars+left%%29",436-strlen(wiadomosc));
form = new Headers();
form->Add("CODE",code);
form->Add("smsEMAIL","");
form->Add("CODE","");
form->Add("smsTESTO",wiadomosc);
form->Add("smsLEFT",len);
form->Add("smsNUMBER",tel);
form->Add("smsCOUNTRY","%2B48");
s->PostData("/sms_center.asp", *form);
anc = strstr(s->GetBody(), "frameborder=\"NO\" name=\"");
if (!anc) break;
if (*(anc+23)=='C')
{
delete form;
delete s;
return 1;
}
delete form;
delete s;
return 0;
}
// jesli znajdujemy sie tutaj, to znaczy, ze gdzies wystapil blad
throw new Exception("Blad podczas obslugi strony www.freesms.net");
return 0;
}
|