File: freesms.cc

package info (click to toggle)
sms-pl 1.8.9i-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 356 kB
  • ctags: 294
  • sloc: cpp: 1,837; ansic: 625; perl: 272; makefile: 101; sh: 29
file content (80 lines) | stat: -rw-r--r-- 2,222 bytes parent folder | download
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;
}