summaryrefslogtreecommitdiff
path: root/plugins/SMS/receive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/SMS/receive.cpp')
-rw-r--r--plugins/SMS/receive.cpp310
1 files changed, 0 insertions, 310 deletions
diff --git a/plugins/SMS/receive.cpp b/plugins/SMS/receive.cpp
deleted file mode 100644
index 24a1df5be5..0000000000
--- a/plugins/SMS/receive.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
-Miranda-IM SMS Plugin
-Copyright (C) 2001-2 Richard Hughes
-Copyright (C) 2007-2009 Rozhuk Ivan
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
----------------------------------------------------------------------------
-
-This was the original words.
-This plugin was modified by Ariel Shulman (NuKe007).
-For any comments, problems, etc. contact me at Miranda-IM forums or E-Mail or ICQ.
-All the information needed you can find at www.nuke007.tk
-Enjoy the code and use it smartly!
-*/
-
-#include "main.h"
-
-
-
-//This function handles the ACK received from that hooked.
-int handleAckSMS(WPARAM wParam,LPARAM lParam)
-{
- if (lParam)
- if (((ACKDATA*)lParam)->type==ICQACKTYPE_SMS)
- {
- char szPhone[MAX_PHONE_LEN]={0};
- WCHAR wszPhone[MAX_PHONE_LEN]={0};
- LPSTR lpszXML=(LPSTR)((ACKDATA*)lParam)->lParam,lpszData,lpszPhone;
- SIZE_T dwXMLSize=lstrlenA(lpszXML),dwDataSize,dwPhoneSize;
- ACKDATA *ack=((ACKDATA*)lParam);
-
- if (GetXMLFieldEx(lpszXML,dwXMLSize,&lpszData,&dwDataSize,"sms_message","text",NULL))
- {
- if (GetXMLFieldEx(lpszXML,dwXMLSize,&lpszPhone,&dwPhoneSize,"sms_message","sender",NULL))
- {
- LPSTR lpszMessageUTF;
- LPWSTR lpwszMessageXMLEncoded,lpwszMessageXMLDecoded;
- SIZE_T dwBuffLen,dwMessageXMLEncodedSize,dwMessageXMLDecodedSize;
- HANDLE hContact;
- DBEVENTINFO dbei={0};
-
- dwBuffLen=(dwDataSize+MAX_PATH);
- dbei.pBlob=(LPBYTE)MEMALLOC((dwBuffLen+dwPhoneSize));
- lpwszMessageXMLEncoded=(LPWSTR)MEMALLOC((dwBuffLen*sizeof(WCHAR)));
- lpwszMessageXMLDecoded=(LPWSTR)MEMALLOC((dwBuffLen*sizeof(WCHAR)));
- if (dbei.pBlob && lpwszMessageXMLEncoded && lpwszMessageXMLDecoded)
- {
- dwMessageXMLEncodedSize=MultiByteToWideChar(CP_UTF8,0,lpszData,dwDataSize,lpwszMessageXMLEncoded,dwBuffLen);
- DecodeXML(lpwszMessageXMLEncoded,dwMessageXMLEncodedSize,lpwszMessageXMLDecoded,dwBuffLen,&dwMessageXMLDecodedSize);
- lpszMessageUTF=(LPSTR)lpwszMessageXMLEncoded;
- WideCharToMultiByte(CP_UTF8,0,lpwszMessageXMLDecoded,dwMessageXMLDecodedSize,lpszMessageUTF,dwBuffLen,NULL,NULL);
-
- dwPhoneSize=CopyNumberA(szPhone,lpszPhone,dwPhoneSize);
- dwPhoneSize=MultiByteToWideChar(CP_UTF8,0,szPhone,dwPhoneSize,wszPhone,MAX_PHONE_LEN);
- hContact=HContactFromPhone(wszPhone,dwPhoneSize);
-
- dbei.cbSize=sizeof(dbei);
- dbei.szModule=GetModuleName(hContact);
- dbei.timestamp=time(NULL);
- dbei.flags=(DBEF_UTF);
- dbei.eventType=ICQEVENTTYPE_SMS;
- dbei.cbBlob=(mir_snprintf((LPSTR)dbei.pBlob,((dwBuffLen+dwPhoneSize)),"SMS From: +%s\r\n%s",szPhone,lpszMessageUTF)+sizeof(DWORD));
- //dbei.pBlob=(LPBYTE)lpszBuff;
- (*((DWORD*)(dbei.pBlob+(dbei.cbBlob-sizeof(DWORD)))))=0;
- CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&dbei);
- if (hContact==NULL)
- {
- if (RecvSMSWindowAdd(NULL,ICQEVENTTYPE_SMS,wszPhone,dwPhoneSize,(LPSTR)dbei.pBlob,dbei.cbBlob))
- {
- CallService(MS_DB_EVENT_MARKREAD,(WPARAM)hContact,(LPARAM)&dbei);
- SkinPlaySound("RecvSMSMsg");
- }
- }
- }
- MEMFREE(lpwszMessageXMLDecoded);
- MEMFREE(lpwszMessageXMLEncoded);
- MEMFREE(dbei.pBlob);
- }
- }else
- if (GetXMLFieldEx(lpszXML,dwXMLSize,&lpszData,&dwDataSize,"sms_delivery_receipt","delivered",NULL))
- {
- if (GetXMLFieldEx(lpszXML,dwXMLSize,&lpszPhone,&dwPhoneSize,"sms_delivery_receipt","destination",NULL))
- {
- HANDLE hContact;
- DBEVENTINFO dbei={0};
-
- dwPhoneSize=CopyNumberA(szPhone,lpszPhone,dwPhoneSize);
- dwPhoneSize=MultiByteToWideChar(CP_UTF8,0,szPhone,dwPhoneSize,wszPhone,MAX_PHONE_LEN);
- hContact=HContactFromPhone(wszPhone,dwPhoneSize);
-
- dbei.cbSize=sizeof(dbei);
- dbei.szModule=GetModuleName(hContact);
- dbei.timestamp=time(NULL);
- dbei.eventType=ICQEVENTTYPE_SMSCONFIRMATION;
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszData,dwDataSize,"yes",3)==CSTR_EQUAL)
- {
- dbei.cbBlob=(MAX_PHONE_LEN+MAX_PATH);
- dbei.pBlob=(PBYTE)MEMALLOC(dbei.cbBlob);
- if (dbei.pBlob) dbei.cbBlob=(mir_snprintf((LPSTR)dbei.pBlob,dbei.cbBlob,"SMS Confirmation From: +%s\r\nSMS was sent succesfully",szPhone)+4);
- }else{
- if (GetXMLFieldEx(lpszXML,dwXMLSize,&lpszData,&dwDataSize,"sms_delivery_receipt","error","params","param",NULL)==FALSE)
- {
- lpszData="";
- dwDataSize=0;
- }
- dbei.cbBlob=(MAX_PHONE_LEN+MAX_PATH+dwDataSize);
- dbei.pBlob=(PBYTE)MEMALLOC(dbei.cbBlob);
- if (dbei.pBlob)
- {
- dbei.cbBlob=mir_snprintf((LPSTR)dbei.pBlob,dbei.cbBlob,"SMS Confirmation From: +%s\r\nSMS was not sent succesfully: ",szPhone);
- CopyMemory((dbei.pBlob+dbei.cbBlob),lpszData,dwDataSize);
- dbei.cbBlob+=(dwDataSize+sizeof(DWORD));
- (*((DWORD*)(dbei.pBlob+(dbei.cbBlob-sizeof(DWORD)))))=0;
- }
- }
-
- if (dbei.pBlob)
- {
- if (hContact)
- {
- CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&dbei);
- }else{
- RecvSMSWindowAdd(NULL,ICQEVENTTYPE_SMSCONFIRMATION,wszPhone,dwPhoneSize,(LPSTR)dbei.pBlob,dbei.cbBlob);
- }
- MEMFREE(dbei.pBlob);
- }
- }
- }else
- if ((ack->result==ACKRESULT_FAILED) || GetXMLFieldEx(lpszXML,dwXMLSize,&lpszData,&dwDataSize,"sms_response","deliverable",NULL))
- {
- HWND hWndDlg=SendSMSWindowHwndByHProcessGet(ack->hProcess);
- if (hWndDlg)
- {
- char szNetwork[MAX_PATH];
-
- KillTimer(hWndDlg,wParam);
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szNetwork,sizeof(szNetwork),NULL,"sms_response","network",NULL);
-
- if (ack->result==ACKRESULT_FAILED || CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszData,dwDataSize,"no",2)==CSTR_EQUAL)
- {
- HWND hwndTimeOut;
- char szBuff[1024];
- WCHAR wszErrorMessage[1028];
- LPSTR lpszErrorDescription;
-
- if (SendSMSWindowMultipleGet(hWndDlg))
- {
- TVITEM tvi;
- tvi.mask=TVIF_TEXT;
- tvi.hItem=SendSMSWindowHItemSendGet(hWndDlg);
- tvi.pszText=wszPhone;
- tvi.cchTextMax=SIZEOF(wszPhone);
- TreeView_GetItem(GetDlgItem(hWndDlg,IDC_NUMBERSLIST),&tvi);
- }else{
- GET_DLG_ITEM_TEXTW(hWndDlg,IDC_ADDRESS,wszPhone,SIZEOF(szPhone));
- }
-
- if (ack->result==ACKRESULT_FAILED)
- {
- lpszErrorDescription=lpszXML;
- }else{
- lpszErrorDescription=szBuff;
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szBuff,sizeof(szBuff),NULL,"sms_response","error","params","param",NULL);
- }
-
- mir_sntprintf(wszErrorMessage,SIZEOF(wszErrorMessage),TranslateW(L"SMS message didn't send by %S to %s because: %S"),szNetwork,wszPhone,lpszErrorDescription);
- ShowWindow(hWndDlg,SW_SHOWNORMAL);
- EnableWindow(hWndDlg,FALSE);
- hwndTimeOut=CreateDialog(ssSMSSettings.hInstance,MAKEINTRESOURCE(IDD_SENDSMSTIMEDOUT),hWndDlg,SMSTimedOutDlgProc);
- SET_DLG_ITEM_TEXTW(hwndTimeOut,IDC_STATUS,wszErrorMessage);
- }else{
- SendSMSWindowDBAdd(hWndDlg);
- if (SendSMSWindowMultipleGet(hWndDlg))
- {
- if (SendSMSWindowNextHItemGet(hWndDlg,SendSMSWindowHItemSendGet(hWndDlg)))
- {
- SendSMSWindowAsSentSet(hWndDlg);
- SendSMSWindowHItemSendSet(hWndDlg,SendSMSWindowNextHItemGet(hWndDlg,SendSMSWindowHItemSendGet(hWndDlg)));
- SendSMSWindowNext(hWndDlg);
- }else{
- SendSMSWindowRemove(hWndDlg);
- }
- }else{
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszData,dwDataSize,"yes",3)==CSTR_EQUAL || CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszData,dwDataSize,"smtp",4)==CSTR_EQUAL)
- {
- char szSource[MAX_PATH],szMessageID[MAX_PATH];
-
- if (DB_SMS_GetByte(NULL,"ShowACK",SMS_DEFAULT_SHOWACK))
- {
- HWND hwndAccepted=CreateDialog(ssSMSSettings.hInstance,MAKEINTRESOURCE(IDD_SENDSMSACCEPT),hWndDlg,SMSAcceptedDlgProc);
- if (CompareStringA(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),NORM_IGNORECASE,lpszData,dwDataSize,"yes",3)==CSTR_EQUAL)
- {
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szSource,sizeof(szSource),NULL,"sms_response","source",NULL);
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szMessageID,sizeof(szMessageID),NULL,"sms_response","message_id",NULL);
- }else{
- SET_DLG_ITEM_TEXTW(hwndAccepted,IDC_ST_SOURCE,TranslateW(L"From:"));
- SET_DLG_ITEM_TEXTW(hwndAccepted,IDC_ST_MESSAGEID,TranslateW(L"To:"));
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szSource,sizeof(szSource),NULL,"sms_response","from",NULL);
- GetXMLFieldExBuff(lpszXML,dwXMLSize,szMessageID,sizeof(szMessageID),NULL,"sms_response","to",NULL);
- }
- SET_DLG_ITEM_TEXTA(hwndAccepted,IDC_NETWORK,szNetwork);
- SET_DLG_ITEM_TEXTA(hwndAccepted,IDC_SOURCE,szSource);
- SET_DLG_ITEM_TEXTA(hwndAccepted,IDC_MESSAGEID,szMessageID);
- }else{
- SendSMSWindowRemove(hWndDlg);
- }
- }else{
- SendSMSWindowRemove(hWndDlg);
- }
- }
- }
- }
- }
- }
-return(0);
-}
-
-//Handles new SMS messages added to the database
-int handleNewMessage(WPARAM wParam,LPARAM lParam)
-{
- CHAR szServiceFunction[MAX_PATH],*pszServiceFunctionName;
- WCHAR szToolTip[MAX_PATH];
- HANDLE hContact=(HANDLE)wParam,hDbEvent=(HANDLE)lParam;
- CLISTEVENT cle={0};
- DBEVENTINFO dbei={0};
-
- dbei.cbSize=sizeof(dbei);
- if ((dbei.cbBlob=CallService(MS_DB_EVENT_GETBLOBSIZE,lParam,0))!=-1)
- {
- dbei.pBlob=(PBYTE)MEMALLOC(dbei.cbBlob);
- if (dbei.pBlob)
- {
- CopyMemory(szServiceFunction,PROTOCOL_NAMEA,PROTOCOL_NAME_SIZE);
- pszServiceFunctionName=szServiceFunction+PROTOCOL_NAME_LEN;
-
- if (CallService(MS_DB_EVENT_GET,lParam,(LPARAM)&dbei)==0)
- if ((dbei.flags&DBEF_SENT)==0)
- if (dbei.eventType==ICQEVENTTYPE_SMS)
- {
- if (dbei.cbBlob>MIN_SMS_DBEVENT_LEN)
- {
- SkinPlaySound("RecvSMSMsg");
- if (DB_SMS_GetByte(NULL,"AutoPopup",0))
- {
- if (RecvSMSWindowAdd(hContact,ICQEVENTTYPE_SMS,NULL,0,(LPSTR)dbei.pBlob,dbei.cbBlob))
- {
- CallService(MS_DB_EVENT_MARKREAD,(WPARAM)hContact,(LPARAM)&dbei);
- }
- }else{
- CopyMemory(pszServiceFunctionName,SMS_READ,sizeof(SMS_READ));
-
- cle.cbSize=sizeof(cle);
- cle.flags=CLEF_UNICODE;
- cle.hContact=hContact;
- cle.hDbEvent=hDbEvent;
- cle.hIcon=LoadSkinnedIcon(SKINICON_OTHER_SMS);
- cle.pszService=szServiceFunction;
- mir_sntprintf(szToolTip,SIZEOF(szToolTip),TranslateW(L"SMS Message from %s"),GetContactNameW(hContact));
- cle.ptszTooltip=szToolTip;
- CallService(MS_CLIST_ADDEVENT,0,(LPARAM)&cle);
- }
- }
- }else
- if (dbei.eventType==ICQEVENTTYPE_SMSCONFIRMATION)
- {
- SkinPlaySound("RecvSMSConfirmation");
- if (DB_SMS_GetByte(NULL,"AutoPopup",0))
- {
- if (RecvSMSWindowAdd(hContact,ICQEVENTTYPE_SMSCONFIRMATION,NULL,0,(LPSTR)dbei.pBlob,dbei.cbBlob))
- {
- CallService(MS_DB_EVENT_DELETE,(WPARAM)hContact,(LPARAM)&dbei);
- }
- }else{
- UINT iIcon;
-
- if (GetDataFromMessage((LPSTR)dbei.pBlob,dbei.cbBlob,NULL,NULL,0,NULL,&iIcon))
- {
- CopyMemory(pszServiceFunctionName,SMS_READ_ACK,sizeof(SMS_READ_ACK));
-
- cle.cbSize=sizeof(cle);
- cle.flags=(CLEF_UNICODE);
- cle.hContact=hContact;
- cle.hDbEvent=hDbEvent;
- cle.hIcon=(HICON)LoadImage(ssSMSSettings.hInstance,MAKEINTRESOURCE(iIcon),IMAGE_ICON,0,0,LR_SHARED);
- cle.pszService=szServiceFunction;
- mir_sntprintf(szToolTip,SIZEOF(szToolTip),TranslateW(L"SMS Confirmation from %s"),GetContactNameW(hContact));
- cle.ptszTooltip=szToolTip;
- CallService(MS_CLIST_ADDEVENT,0,(LPARAM)&cle);
- }
- }
- }
- MEMFREE(dbei.pBlob);
- }
- }
-return(0);
-}
-
-