1402 lines
33 KiB
C++
1402 lines
33 KiB
C++
|
// Sms.cpp : CSms <20><>ʵ<EFBFBD><CAB5>
|
|||
|
|
|||
|
#include "stdafx.h"
|
|||
|
#include "Sms.h"
|
|||
|
|
|||
|
#include "..\public\LuTool.h"
|
|||
|
#include "..\public\SendPub.h"
|
|||
|
#include "..\public\sendpub.cpp" //<2F><><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>м<EFBFBD><D0BC>룬<EFBFBD><EBA3AC><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>CW2A
|
|||
|
#include "..\public\StringSort\StringSort.h"
|
|||
|
#include "..\public\SAStatusLog\SAStatusLog.cpp" //<2F><><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD>м<EFBFBD><D0BC>룬<EFBFBD><EBA3AC><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>CW2A
|
|||
|
#include "..\public\CMarkup\Markup.h"
|
|||
|
#include "..\public\AutoCoInitializeEx\AutoCoInitializeEx.h"
|
|||
|
// CSms
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::CheckPasswd(BSTR User, BSTR Passwd, BSTR Encrypt, LONG Purview, LONG* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szUser[64]={0};
|
|||
|
char szPasswd[128]={0};
|
|||
|
char szPasswd2[128]={0};
|
|||
|
char szEncrypt[128]={0};
|
|||
|
strcpy( szUser , CW2A(User) );
|
|||
|
strcpy( szPasswd , CW2A(Passwd) );
|
|||
|
strcpy( szEncrypt , CW2A(Encrypt) );
|
|||
|
|
|||
|
if (strlen(szUser) <= 0 || strlen(szPasswd)<=0) //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>֤<EFBFBD><D6A4>ͨ<EFBFBD><CDA8>
|
|||
|
{
|
|||
|
*pRet = 0;
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
CDes des;
|
|||
|
long lLen=sizeof(Passwd);
|
|||
|
des.Encrypt( szPasswd , strlen(szPasswd) , szPasswd2 , lLen , szUser , 8 );
|
|||
|
if ( !strcmp( szPasswd2 , szEncrypt ) )
|
|||
|
{
|
|||
|
*pRet = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*pRet = 0;
|
|||
|
}
|
|||
|
if ( !(Purview&PURVIEW_LOGIN) )
|
|||
|
{
|
|||
|
*pRet = -1;
|
|||
|
}
|
|||
|
/*
|
|||
|
if ( !(Purview&PURVIEW_SENDP) )
|
|||
|
{
|
|||
|
*pRet = -2;
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::CheckPasswd2(LONG CorpID, BSTR User, BSTR Passwd, BSTR TimeStamp, BSTR Encrypt, LONG Purview, LONG* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szUser[64] = { 0 };
|
|||
|
char szPasswd[128] = { 0 };
|
|||
|
char szPasswd2[128] = { 0 };
|
|||
|
char szEncrypt[128] = { 0 };
|
|||
|
TCHAR szPasswdU2[128] = { 0 };
|
|||
|
strcpy(szUser, CW2A(User));
|
|||
|
strcpy(szPasswd, CW2A(Passwd));
|
|||
|
strcpy(szEncrypt, CW2A(Encrypt));
|
|||
|
|
|||
|
if (strlen(szUser) <= 0 || strlen(szPasswd) <= 0) //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>֤<EFBFBD><D6A4>ͨ<EFBFBD><CDA8>
|
|||
|
{
|
|||
|
*pRet = 0;
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
CDes des;
|
|||
|
|
|||
|
long lOut = sizeof(szPasswd2);
|
|||
|
des.Decrypt(szEncrypt, (long)strlen(szEncrypt), szPasswd2, lOut, szUser, 8);
|
|||
|
_tcscpy(szPasswdU2, CA2W(szPasswd2));
|
|||
|
|
|||
|
CString strCorpID;
|
|||
|
strCorpID.Format(_T("%d"), CorpID);
|
|||
|
CString strPasswd2 = szPasswdU2;
|
|||
|
CString strTimeStamp = TimeStamp;
|
|||
|
|
|||
|
CString strMd5 = Passwd;
|
|||
|
strMd5.MakeUpper();
|
|||
|
|
|||
|
CString strMd52 = CSendPub::GetMD5(strCorpID + strPasswd2 + strTimeStamp, false);
|
|||
|
strMd52.MakeUpper();
|
|||
|
|
|||
|
if (strMd5 == strMd52)
|
|||
|
{
|
|||
|
*pRet = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
*pRet = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (!(Purview&PURVIEW_LOGIN))
|
|||
|
{
|
|||
|
*pRet = -1;
|
|||
|
}
|
|||
|
/*
|
|||
|
if (!(Purview&PURVIEW_SENDP))
|
|||
|
{
|
|||
|
*pRet = -2;
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::GetPasswd(BSTR User, BSTR Passwd, BSTR* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szUser[64]={0};
|
|||
|
char szPasswd[128]={0};
|
|||
|
char szPasswd2[128]={0};
|
|||
|
char szEncrypt[128]={0};
|
|||
|
strcpy( szUser , CW2A(User) );
|
|||
|
strcpy( szPasswd , CW2A(Passwd) );
|
|||
|
|
|||
|
CDes des;
|
|||
|
long lLen=sizeof(szPasswd2);
|
|||
|
des.Encrypt(szPasswd , strlen(szPasswd) , szPasswd2 , lLen , szUser , 8 );
|
|||
|
|
|||
|
*pRet = ::SysAllocString(CA2W(szPasswd2));
|
|||
|
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::DePasswd(BSTR User, BSTR Passwd, BSTR* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
*pRet = ::SysAllocString(CA2W("ERROR"));
|
|||
|
/*
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szUser[64]={0};
|
|||
|
char szPasswd[128]={0};
|
|||
|
char szPasswd2[128]={0};
|
|||
|
char szEncrypt[128]={0};
|
|||
|
strcpy( szUser , CW2A(User) );
|
|||
|
strcpy( szPasswd , CW2A(Passwd) );
|
|||
|
|
|||
|
CDes des;
|
|||
|
long lLen=sizeof(szPasswd2);
|
|||
|
des.Decrypt(szPasswd , strlen(szPasswd) , szPasswd2 , lLen , szUser , 8 );
|
|||
|
|
|||
|
*pRet = ::SysAllocString(CA2W(szPasswd2));
|
|||
|
*/
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
void CSms::GetCurrentPath(TCHAR *pPath)
|
|||
|
{
|
|||
|
::GetModuleFileName(AfxGetInstanceHandle(), pPath, 512);
|
|||
|
int j = lstrlen(pPath);
|
|||
|
for (; j>0; j--)
|
|||
|
{
|
|||
|
if (pPath[j] == '\\')
|
|||
|
break;
|
|||
|
}
|
|||
|
pPath[j + 1] = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::EncSPMS(BSTR Key, BSTR Src, BSTR* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
/*
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szKey[512]={0};
|
|||
|
char szSrc[512]={0};
|
|||
|
char szRet[512]={0};
|
|||
|
strcpy( szKey , CW2A(Key) );
|
|||
|
strcpy( szSrc , CW2A(Src) );
|
|||
|
|
|||
|
CDES des;
|
|||
|
if ( !des.EncSPMS(szKey,szSrc,szRet) )
|
|||
|
{
|
|||
|
strcpy( szRet , "ERROR" );
|
|||
|
}
|
|||
|
|
|||
|
*pRet = ::SysAllocString(CA2W(szRet));
|
|||
|
*/
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::GetPurview(LONG PurviewType, LONG* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
long lPurview=0;
|
|||
|
|
|||
|
if ( PurviewType == PURVIEWTYPE_INPUT ) //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ա
|
|||
|
{
|
|||
|
lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_GADDRESS_SEE|PURVIEW_GADDRESS_MODIFY|PURVIEW_GADDRESS_ADD;
|
|||
|
}
|
|||
|
if ( PurviewType == PURVIEWTYPE_USERS ) //һ<><D2BB>Ա<EFBFBD><D4B1>
|
|||
|
{
|
|||
|
lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_SENDG|PURVIEW_RECVP|PURVIEW_GADDRESS_SEE;
|
|||
|
}
|
|||
|
if ( PurviewType == PURVIEWTYPE_KF ) //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ա
|
|||
|
{
|
|||
|
lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_SENDG|PURVIEW_SENDP|PURVIEW_RECVP|PURVIEW_RECVG|PURVIEW_GADDRESS_SEE|PURVIEW_PADDRESS;
|
|||
|
}
|
|||
|
if ( PurviewType == PURVIEWTYPE_ADMIN ) //<2F><><EFBFBD><EFBFBD>Ա
|
|||
|
{
|
|||
|
lPurview = -1;
|
|||
|
}
|
|||
|
*pRet = lPurview;
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::HasSWTPre(LONG lSDK, LONG* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
if ( lSDK & SDK_SWT )
|
|||
|
*pRet = 1;
|
|||
|
else
|
|||
|
*pRet = 0;
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::isHasPurview(LONG Purview, LONG AllPurview, LONG* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
if ( AllPurview & Purview )
|
|||
|
*pRet = 1;
|
|||
|
else
|
|||
|
*pRet = 0;
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::SendSms(IDispatch* pAdoConnect, LONG lCorpID, LONG lUserID, LONG lLongSms, LONG lFD, BSTR Timer, BSTR IP, BSTR AddNum, BSTR Recver, BSTR Mobiles, BSTR Msg, LONG* pSendCount)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
//AutoCoInitializeEx AutoCoInit(true); //<2F>Զ<EFBFBD><D4B6><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Com<6F><6D><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
*pSendCount = 0;
|
|||
|
m_strSendRet=_T("-10,<2C><><EFBFBD><EFBFBD><EFBFBD>쳣!");
|
|||
|
|
|||
|
DWORD lSendAllTime = GetTickCount();
|
|||
|
|
|||
|
//m_strSendRet.Format(_T("AdoConnect:%x,CorpID:%d,UserID,%d,longSms,%d,Timer,%s\\nIP=%s\\nMobiles=%s\\nMsg=%s"),pAdoConnect,lCorpID,lUserID,lLongSms,Timer,IP,Mobiles,Msg);
|
|||
|
//return S_OK;
|
|||
|
try
|
|||
|
{
|
|||
|
if (!pAdoConnect)
|
|||
|
{
|
|||
|
m_strSendRet=_T("-11,<2C><><EFBFBD><EFBFBD><EFBFBD>쳣!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
//CComQIPtr<_ConnectionPtr> pAdo = pAdoConnect;
|
|||
|
_ConnectionPtr pAdo = pAdoConnect;
|
|||
|
//pAdoConnect->QueryInterface(
|
|||
|
//CAdoConnection adoConnection((_ConnectionPtr)pAdo);
|
|||
|
//CAdoConnection adoc2;
|
|||
|
/*
|
|||
|
if ( !m_AdoConnection.IsOpen() )
|
|||
|
{
|
|||
|
m_AdoConnection.SetConnection(pAdoConnect);
|
|||
|
}
|
|||
|
CString strConnectionString = m_AdoConnection.GetConnectionString();
|
|||
|
if (strConnectionString.GetLength() <= 6)
|
|||
|
{
|
|||
|
m_strSendRet = _T("-15,ϵͳ<CFB5>쳣1!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
TCHAR szName[512] = { 0 };
|
|||
|
GetCurrentPath(szName);
|
|||
|
SC_Setup setup = { 0 };
|
|||
|
CFile file;
|
|||
|
CString strFileName;
|
|||
|
//<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>ݵ<EFBFBD>
|
|||
|
for (int j = 0; j<3; j++)
|
|||
|
{
|
|||
|
strFileName.Format(_T("%s..\\%s"), szName, _T("SmsCenterW.dat"));
|
|||
|
switch (j)
|
|||
|
{
|
|||
|
case 1:
|
|||
|
strFileName.Format(_T("%s..\\%s"), szName, _T("SmsCenterW_b1.dat"));
|
|||
|
break;
|
|||
|
case 2:
|
|||
|
strFileName.Format(_T("%s%s"), szName, _T("SmsCenterW.dat"));
|
|||
|
break;
|
|||
|
}
|
|||
|
if (file.Open(strFileName, CFile::modeRead|CFile::shareDenyNone) )
|
|||
|
{
|
|||
|
if (file.GetLength() > 50)
|
|||
|
break;
|
|||
|
else
|
|||
|
file.Close();
|
|||
|
}
|
|||
|
}
|
|||
|
if (j >= 3)
|
|||
|
{
|
|||
|
//m_strSendRet = _T("-21,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>쳣!");
|
|||
|
//m_strSendRet.Format(_T("-21,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>쳣!%s"),strFileName);
|
|||
|
//return S_OK;
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>ʹ<EFBFBD><CAB9>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (!m_AdoConnection.IsOpen())
|
|||
|
{
|
|||
|
m_AdoConnection.SetConnection(pAdoConnect);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
file.Read(&setup, sizeof(setup));
|
|||
|
file.Close();
|
|||
|
|
|||
|
CString DBServer = setup.szDBName;
|
|||
|
CString DBName = _T("corpsms");
|
|||
|
CString DBUser = setup.szDBUser;
|
|||
|
CString DBProvider = setup.szProvider;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char szSrc[64] = { 0 };
|
|||
|
char szUser[64] = { 0 };
|
|||
|
char szTag[64] = { 0 };
|
|||
|
TCHAR szNewPasswd[64] = { 0 };
|
|||
|
long lOut = sizeof(szTag);
|
|||
|
strcpy(szSrc, CW2A(setup.szDBPasswd));
|
|||
|
strcpy(szUser, CW2A(setup.szDBUser));
|
|||
|
CDes des;
|
|||
|
des.Decrypt(szSrc, strlen(szSrc), szTag, lOut, szUser, 8);
|
|||
|
_tcscpy(szNewPasswd, CA2W(szTag));
|
|||
|
CString DBPasswd = szNewPasswd;
|
|||
|
if (!m_AdoConnection.ConnectSQLServer2(DBServer, DBName, DBUser, DBPasswd, DBProvider))
|
|||
|
{
|
|||
|
m_strSendRet = _T("-16,ϵͳ<CFB5>쳣2<ECB3A3><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʧ<EFBFBD><CAA7>!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
}
|
|||
|
//m_AdoConnection.SetCursorLocation(adUseServer); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
CAdoRecordSet AdoRS;
|
|||
|
CAdoRecordSet AdoRS2;
|
|||
|
AdoRS.SetCursorLocation(adUseClient);//adUseNone adUseServer
|
|||
|
AdoRS.SetCursorLocation(adUseClient);
|
|||
|
AdoRS.SetAdoConnection(&m_AdoConnection);
|
|||
|
AdoRS2.SetAdoConnection(&m_AdoConnection);
|
|||
|
|
|||
|
AdoRS.SetCursorLocation(adUseClient);
|
|||
|
AdoRS2.SetCursorLocation(adUseClient);
|
|||
|
CString str;
|
|||
|
CString strErrMsg;
|
|||
|
CString strMsgID;
|
|||
|
|
|||
|
CString strMsg = Msg;
|
|||
|
CString strIP = IP;
|
|||
|
CString strRecver = Recver;
|
|||
|
CString strAddNum = AddNum;
|
|||
|
BOOL bSDK=false;
|
|||
|
if ( strRecver==CString(_T("WebSDK")) || strRecver == CString(_T("WebSDK2")))
|
|||
|
bSDK = true;
|
|||
|
|
|||
|
if (strMsg.GetLength()<=0 || strMsg.GetLength()>900)
|
|||
|
{
|
|||
|
m_strSendRet=_T("-12,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
//<2F>滻ǩ<E6BBBB><C7A9><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ǩ<EFBFBD><C7A9>
|
|||
|
|
|||
|
/*
|
|||
|
strMsg.Replace(_T("["), _T("(")); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>
|
|||
|
strMsg.Replace(_T("]"), _T(")"));
|
|||
|
strMsg.Replace(_T("<EFBFBD><EFBFBD>"), _T("(")); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>
|
|||
|
strMsg.Replace(_T("<EFBFBD><EFBFBD>"), _T(")"));
|
|||
|
*/
|
|||
|
|
|||
|
BOOL bEnableXY=false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7B7><EFBFBD>
|
|||
|
|
|||
|
BOOL bAtTime=false;
|
|||
|
COleDateTime tTimer;
|
|||
|
CString strTimer = Timer;
|
|||
|
strTimer.Replace(_T("/") , _T("-"));
|
|||
|
try
|
|||
|
{
|
|||
|
tTimer.ParseDateTime(strTimer);
|
|||
|
}
|
|||
|
catch(...)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
CString strSelect;
|
|||
|
//ȡͨ<C8A1><CDA8>
|
|||
|
TCHAR szSmsTD[32]={0};
|
|||
|
//ȡǩ<C8A1><C7A9>
|
|||
|
CString strCM;
|
|||
|
long lFStep=1; //Ĭ<><C4AC>Ϊ1<CEAA><31>
|
|||
|
long lSmsFStep = 99; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
strSelect.Format(_T("select * from corp with(nolock) where corpid=%d") , lCorpID );
|
|||
|
if ( AdoRS.Open(strSelect) && !AdoRS.IsEOF() )
|
|||
|
{
|
|||
|
AdoRS.GetCollect(_T("cm") , strCM );
|
|||
|
AdoRS.GetCollect(_T("FStep"),lFStep);
|
|||
|
AdoRS.GetCollect(_T("FiltStep"), lSmsFStep);
|
|||
|
AdoRS.GetCollect( _T("SMSTD") , szSmsTD ); _tcscat(szSmsTD,_T("000000")); //ȡ<>ö<EFBFBD><C3B6><EFBFBD>ͨ<EFBFBD><CDA8>
|
|||
|
DWORD dwCorpSDK=0;
|
|||
|
AdoRS.GetCollect(_T("SDK") , dwCorpSDK ); //SDK
|
|||
|
if ( dwCorpSDK & SDK_XY ) //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
|
|||
|
{
|
|||
|
bEnableXY = true;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
long lCorpID2 = 0;
|
|||
|
strSelect.Format(_T("select * from users with(nolock) where userid=%d") , lUserID );
|
|||
|
if ( AdoRS.Open(strSelect) && !AdoRS.IsEOF() )
|
|||
|
{
|
|||
|
AdoRS.GetCollect(_T("CorpID") , lCorpID2 );
|
|||
|
if ( lCorpID2 != lCorpID )
|
|||
|
{
|
|||
|
m_strSendRet=_T("-13,<2C><>ҵID<49><44><EFBFBD>û<EFBFBD>ID<49><44><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
CString strCM2;
|
|||
|
AdoRS.GetCollect(_T("cm2") , strCM2 );
|
|||
|
if ( strCM2.GetLength()>0 )
|
|||
|
strCM = strCM2;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (strCM==CString(_T("+"))) //ǩ<><C7A9>Ϊ+<2B><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
CString strGetCM;
|
|||
|
long lMsgLen = strMsg.GetLength();
|
|||
|
if (lMsgLen > 1 && strMsg.Left(1) == CString(_T("<EFBFBD><EFBFBD>"))) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȴ<EFBFBD><C8B4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><D4A1><EFBFBD>ͷ<EFBFBD><CDB7>
|
|||
|
{
|
|||
|
for (int i = 1; i < lMsgLen && i < 20; i++)
|
|||
|
{
|
|||
|
if (strMsg.Mid(i, 1) == CString(_T("<EFBFBD><EFBFBD>")))
|
|||
|
{
|
|||
|
strGetCM = strMsg.Mid(1, i - 1);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
if (strGetCM.GetLength() >= 2)
|
|||
|
{
|
|||
|
strSelect.Format(_T("select * from SignName with(nolock) where corpid=%d and SignName='%s' and status=1"), lCorpID, SqlStr(strGetCM));
|
|||
|
if (AdoRS.Open(strSelect) && AdoRS.IsEOF())
|
|||
|
{
|
|||
|
m_strSendRet = _T("-17,ǩ<><C7A9>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_strSendRet = _T("-17,ǩ<><C7A9>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
strCM=CString( _T("")); //+<2B><>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD>Ϊ<EFBFBD>ա<EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
BOOL bFilt=false;
|
|||
|
strSelect.Format(_T("select * from filt where FStep>=%d and CHARINDEX(word,'%s')>0") , lFStep,SqlStr(strMsg) );
|
|||
|
if ( AdoRS.Open(strSelect) && !AdoRS.IsEOF() )
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
|
|||
|
//m_strSendRet=_T("-101,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ!");
|
|||
|
//return S_OK;
|
|||
|
}
|
|||
|
if (!bFilt) //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>˵ģ<CBB5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϹؼ<CFB9><D8BC><EFBFBD>
|
|||
|
{
|
|||
|
long lSrcLen = strMsg.GetLength();
|
|||
|
CString strNoSpace = strMsg;
|
|||
|
strNoSpace.Replace(_T(" "), _T(""));
|
|||
|
strNoSpace.Replace(_T("<EFBFBD><EFBFBD>"), _T(""));
|
|||
|
long lNoSpaceLen = strNoSpace.GetLength();
|
|||
|
if (lFStep<3 && (lSrcLen - lNoSpaceLen >4) ) //<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
}
|
|||
|
if (!bFilt && (lSrcLen - lNoSpaceLen >2 )) //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>˵ģ<CBB5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϹؼ<CFB9><D8BC><EFBFBD>
|
|||
|
{
|
|||
|
strSelect.Format(_T("select * from filt where FStep>=%d and CHARINDEX(word,'%s')>0"), lFStep, SqlStr(strNoSpace));
|
|||
|
if (AdoRS.Open(strSelect) && !AdoRS.IsEOF())
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CString strMobiles = Mobiles;
|
|||
|
long lMobiles = strMobiles.GetLength() / 12;
|
|||
|
if (!bSDK && (lMobiles >= lSmsFStep || lMobiles>=10) )
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
}
|
|||
|
if ( bSDK && strRecver == CString(_T("WebSDK")) && lMobiles>58) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDK1<4B><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>50<35><30>ʱ<EFBFBD><CAB1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>˵ġ<CBB5>
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
}
|
|||
|
if (strRecver == CString(_T("WebF")))
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
}
|
|||
|
if ( lSmsFStep == 5185 || lSmsFStep == 51850 ) //<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>518<31><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD>־
|
|||
|
{
|
|||
|
bFilt = 0;
|
|||
|
}
|
|||
|
|
|||
|
#ifdef SMSCENTER_DGSB //<2F><>ݸ<EFBFBD>籣
|
|||
|
bFilt = 0;
|
|||
|
#endif
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD>Ŷη<C5B6><CEB7>ͣ<EFBFBD><CDA3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
/*
|
|||
|
if ( true )
|
|||
|
{
|
|||
|
CString strMobiles = Mobiles;
|
|||
|
strMobiles+=CString(_T(",")); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ռ<EFBFBD>¼
|
|||
|
long lLen = strMobiles.GetLength();
|
|||
|
TCHAR szMobile[32]={0};
|
|||
|
long lMobileLen=0;
|
|||
|
CStringSort sort;
|
|||
|
for ( int i=0 ; i<lLen ; i++ )
|
|||
|
{
|
|||
|
TCHAR c = strMobiles.GetAt(i);
|
|||
|
if ( c=='\r' || c=='\n' || c=='\t'
|
|||
|
|| c==';' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==',' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c=='.' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==':' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==' ' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| i == lLen-1)
|
|||
|
{
|
|||
|
if ( lMobileLen>=9 && lMobileLen<=18 ) //<2F><><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>볤<EFBFBD><EBB3A4>
|
|||
|
{
|
|||
|
TCHAR szBuf[32]={0};
|
|||
|
_tcscpy(szBuf , szMobile);
|
|||
|
CSendPub::ExMobileGZM(szBuf);
|
|||
|
if ( CSendPub::isNumSup2(szBuf) )
|
|||
|
{
|
|||
|
sort.Add(szBuf,true);
|
|||
|
lMobileLen = 0; //<2F><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD>ʼ
|
|||
|
memset(szMobile , 0 , sizeof(szMobile));
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lMobileLen = 0; //<2F><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD>ʼ
|
|||
|
memset(szMobile , 0 , sizeof(szMobile));
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( c>='0' && c<='9' && lMobileLen<19 )
|
|||
|
{
|
|||
|
szMobile[lMobileLen] = c;
|
|||
|
lMobileLen ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA>볬10<31><30>
|
|||
|
//9λ<39>Ŷγ<C5B6>30<33><30>
|
|||
|
//8λ<38>Ŷγ<C5B6>300<30><30>
|
|||
|
long lLX1=10;
|
|||
|
long lLX2=30;
|
|||
|
long lLX3=300;
|
|||
|
|
|||
|
BOOL bLX = false;
|
|||
|
long lMobileCount2=sort.GetCount();
|
|||
|
LONGLONG lLXOldMobile1=0;
|
|||
|
LONGLONG lLXOldMobile2=0;
|
|||
|
LONGLONG lLXOldMobile3=0;
|
|||
|
long lLXCount1=0;
|
|||
|
long lLXCount2=0;
|
|||
|
long lLXCount3=0;
|
|||
|
for ( int i=0 ; i<lMobileCount2 ; i++ )
|
|||
|
{
|
|||
|
CString strMobile = sort.GetAt(i);
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
|
|||
|
if ( (LONGLONG)(_ttof(strMobile)) != lLXOldMobile1+1 )
|
|||
|
{
|
|||
|
lLXCount1 = 0;
|
|||
|
lLXOldMobile1 = (LONGLONG)(_ttof(strMobile));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lLXOldMobile1 = lLXOldMobile1+1;
|
|||
|
lLXCount1 += 1;
|
|||
|
if ( lLXCount1 >= lLX1 )
|
|||
|
{
|
|||
|
bLX = true;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F>ж<EFBFBD>ǰ9λ<39><CEBB><EFBFBD><EFBFBD>
|
|||
|
if ( (LONGLONG)(_ttol(strMobile)/1000000000) != lLXOldMobile2 )
|
|||
|
{
|
|||
|
lLXCount2 = 0;
|
|||
|
lLXOldMobile2 = (long)(_ttol(strMobile)/1000000000);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lLXCount2 += 1;
|
|||
|
if ( lLXCount2 >= lLX2 )
|
|||
|
{
|
|||
|
bLX = true;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F>ж<EFBFBD>ǰ8λ<38><CEBB><EFBFBD><EFBFBD>
|
|||
|
if ( (LONGLONG)(_ttol(strMobile)/100000000) != lLXOldMobile3 )
|
|||
|
{
|
|||
|
lLXCount3 = 0;
|
|||
|
lLXOldMobile3 = (long)(_ttol(strMobile)/100000000);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lLXCount3 += 1;
|
|||
|
if ( lLXCount3 >= lLX3 )
|
|||
|
{
|
|||
|
bLX = true;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ( bLX )
|
|||
|
{
|
|||
|
bFilt = 1;
|
|||
|
|
|||
|
m_strSendRet=_T("-101,<2C><><EFBFBD>ܰ<EFBFBD><DCB0>Ŷν<C5B6><CEBD>з<EFBFBD><D0B7>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ֹͣ!");
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
}
|
|||
|
*/
|
|||
|
//<2F>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD>ݷֶ<DDB7>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
|||
|
CStringArray saMsg;
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD>ֶη<D6B6><CEB7><EFBFBD>
|
|||
|
TCHAR szSrcMsg[2048]={0};
|
|||
|
_tcscpy(szSrcMsg , strMsg);
|
|||
|
|
|||
|
long lMsgAll=0;
|
|||
|
long lMsgIndex = 1;
|
|||
|
BOOL bGetMsg2;
|
|||
|
TCHAR szSendMsg1[512]={0};
|
|||
|
TCHAR szSendMsg2[512]={0};
|
|||
|
long lMaxSendLen = MSG_MAXSENDLEN;
|
|||
|
|
|||
|
long lZDCMLen = 0;
|
|||
|
#if defined(SMSCENTER_NX) && !defined(SMSCENTER_GDDX) //ũ<><C5A9><EFBFBD>Դ<EFBFBD>ǩ<EFBFBD><C7A9>6<EFBFBD><36><EFBFBD><EFBFBD>
|
|||
|
lZDCMLen = 6;
|
|||
|
#endif
|
|||
|
#if defined(SMSCENTER_NX) && defined(SMSCENTER_DGSB) //<2F>籣<EFBFBD>ֵ<EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><37><EFBFBD><EFBFBD>
|
|||
|
lZDCMLen = 6; //ǩ<><C7A9><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>硿
|
|||
|
#endif
|
|||
|
ANS_GetTD2Data td={0};
|
|||
|
if ( CSendPub::GetTDPro(&AdoRS,szSmsTD,td,MOBILE_TYPE_CMCC)) //ȡ<><C8A1><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if ( td.lContentLen>10 && td.lContentLen<70 )
|
|||
|
lZDCMLen = MSG_MAXSENDLEN-td.lContentLen;
|
|||
|
}
|
|||
|
lMaxSendLen = lMaxSendLen-lZDCMLen;
|
|||
|
|
|||
|
long lSignLen = 0;
|
|||
|
#ifdef UNICODE
|
|||
|
lSignLen = _tcslen(strCM);
|
|||
|
#else
|
|||
|
lSignLen = MultiByteToWideChar( CP_ACP,NULL,userPro.szCM,_tcslen(userPro.szCM), NULL,0);
|
|||
|
#endif
|
|||
|
if ( lSignLen>0 )
|
|||
|
lSignLen = lSignLen+2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
long lMsgLen =0;
|
|||
|
#ifdef UNICODE
|
|||
|
lMsgLen = _tcslen(szSrcMsg);
|
|||
|
#else
|
|||
|
lMsgLen = MultiByteToWideChar( CP_ACP,NULL,szSrcMsg,_tcslen(szSrcMsg), NULL,0);
|
|||
|
#endif
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
BOOL bLongSms=false;
|
|||
|
if ( lLongSms>0 )
|
|||
|
bLongSms = true;
|
|||
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Էֶη<D6B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|||
|
BOOL bFD=false;
|
|||
|
/*
|
|||
|
if ( lFD>0 && !bLongSms) //<2F><><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>ֶܷ<DCB7>
|
|||
|
bFD = true;
|
|||
|
*/
|
|||
|
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>÷ֶι<D6B6><CEB9>ܡ<EFBFBD>lFD<46><44><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>ǰ<EFBFBD><C7B0>
|
|||
|
|
|||
|
BOOL bSignFront = false;
|
|||
|
if (lFD > 0)
|
|||
|
bSignFront = true;
|
|||
|
|
|||
|
long lRand=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( lMsgLen+lSignLen<=lMaxSendLen ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
bLongSms = false;
|
|||
|
bFD = false;
|
|||
|
}
|
|||
|
if ( bLongSms && lSignLen>0) //<2F>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
{
|
|||
|
/*
|
|||
|
if (bSignFront) //ǩ<><C7A9>ǰ<EFBFBD><C7B0>
|
|||
|
{
|
|||
|
CString strSignTemp;
|
|||
|
strSignTemp.Format(_T("[%s]%s"), strCM, szSrcMsg);
|
|||
|
_tcscpy(szSrcMsg, strSignTemp);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_tcscat(szSrcMsg, _T("["));
|
|||
|
_tcscat(szSrcMsg, strCM);
|
|||
|
_tcscat(szSrcMsg, _T("]"));
|
|||
|
}
|
|||
|
*/
|
|||
|
//ͳһǰ<D2BB><C7B0>ǩ<EFBFBD><C7A9>
|
|||
|
CString strSignTemp;
|
|||
|
strSignTemp.Format(_T("<EFBFBD><EFBFBD>%s<><73>%s"), strCM, szSrcMsg);
|
|||
|
_tcscpy(szSrcMsg, strSignTemp);
|
|||
|
}
|
|||
|
if ( !bLongSms ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫǩ<D2AA><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
lMaxSendLen = lMaxSendLen-lSignLen;
|
|||
|
if ( bFD )
|
|||
|
lMaxSendLen = lMaxSendLen-4; //<2F>ֶα<D6B6>ʶ
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lMaxSendLen = MSG_MAXSENDLEN-3;
|
|||
|
}
|
|||
|
while ( true )
|
|||
|
{
|
|||
|
memset( szSendMsg2 , 0 , sizeof(szSendMsg2) );
|
|||
|
//if ( isChinese( szSrcMsg,_tcslen(szSrcMsg) ) )
|
|||
|
//{
|
|||
|
bGetMsg2 = GetSpiltUnicodeMsg( szSrcMsg , szSendMsg1 , lMsgIndex , lMaxSendLen ,lMsgAll);
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// bGetMsg2 = GetSpiltAsciiMsg( szSrcMsg , szSendMsg2 , lMsgIndex , MSG_MAXSENDLEN*2+MSG_MAXSENDLEN*2/7 ,lMsgAll);
|
|||
|
//}
|
|||
|
if ( bGetMsg2 )
|
|||
|
{
|
|||
|
if ( !bLongSms && lSignLen>0 ) //<2F><><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>Ҫ<EFBFBD><D2AA>ǩ<EFBFBD><C7A9>
|
|||
|
{
|
|||
|
/*
|
|||
|
if (bSignFront) //ǩ<><C7A9>ǰ<EFBFBD><C7B0>
|
|||
|
{
|
|||
|
CString strSignTemp;
|
|||
|
strSignTemp.Format(_T("[%s]%s"), strCM, szSendMsg1);
|
|||
|
_tcscpy(szSendMsg1, strSignTemp);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_tcscat(szSendMsg1, _T("["));
|
|||
|
_tcscat(szSendMsg1, strCM);
|
|||
|
_tcscat(szSendMsg1, _T("]"));
|
|||
|
}
|
|||
|
*/
|
|||
|
//ͳһǰ<D2BB><C7B0>ǩ<EFBFBD><C7A9>
|
|||
|
CString strSignTemp;
|
|||
|
strSignTemp.Format(_T("<EFBFBD><EFBFBD>%s<><73>%s"), strCM, szSendMsg1);
|
|||
|
_tcscpy(szSendMsg1, strSignTemp);
|
|||
|
}
|
|||
|
saMsg.Add(szSendMsg1);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
lMsgIndex ++;
|
|||
|
}
|
|||
|
|
|||
|
if ( lZDCMLen >0 ) //<2F><><EFBFBD>Դ<EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
{
|
|||
|
if ( bLongSms && saMsg.GetSize()>0)
|
|||
|
{
|
|||
|
strSelect = saMsg.GetAt(saMsg.GetSize()-1); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#ifdef UNICODE
|
|||
|
lMsgLen = _tcslen(strSelect);
|
|||
|
#else
|
|||
|
lMsgLen = MultiByteToWideChar( CP_ACP,NULL,strSelect,_tcslen(strSelect), NULL,0);
|
|||
|
#endif
|
|||
|
|
|||
|
if ( lMsgLen>lMaxSendLen-lZDCMLen )
|
|||
|
{
|
|||
|
saMsg.Add(CString(_T("<EFBFBD><EFBFBD>"))); //<2F>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
lMsgAll = saMsg.GetSize();
|
|||
|
if ( lMsgAll<=0 || lMsgAll>=15 )
|
|||
|
{
|
|||
|
m_strSendRet.Format(_T("-14,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>,%d<><64>!"),lMsgAll);
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
/*
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7B7><EFBFBD>
|
|||
|
CSqlPool XYSqlPool; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͨ
|
|||
|
TCHAR buf[MAX_PATH+1];
|
|||
|
DWORD res = GetModuleFileName(AfxGetInstanceHandle(), buf, MAX_PATH);
|
|||
|
int j=lstrlen(buf);
|
|||
|
int iXCount=0;
|
|||
|
for ( ; j>0 ; j-- )
|
|||
|
{
|
|||
|
if (buf[j]=='\\' )
|
|||
|
{
|
|||
|
iXCount ++;
|
|||
|
if ( iXCount>=2)
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
if ( j>0 )
|
|||
|
buf[j+1]=0;
|
|||
|
_tcscat( buf , _T("XYSerup.xml") );
|
|||
|
|
|||
|
CMarkup xml;
|
|||
|
if ( xml.Load(buf) )
|
|||
|
{
|
|||
|
CString strEnable,strSQLServer,strSQLDB,strSQLUser,strSQLPasswd,strSQLMaxConnection;
|
|||
|
if ( xml.FindElem(_T("/Setup/Enable")) )
|
|||
|
strEnable = xml.GetData();
|
|||
|
if ( xml.FindElem(_T("/Setup/XYServer/DBServer")) )
|
|||
|
strSQLServer = xml.GetData();
|
|||
|
if ( xml.FindElem(_T("/Setup/XYServer/DBName")) )
|
|||
|
strSQLDB=xml.GetData();
|
|||
|
if ( xml.FindElem(_T("/Setup/XYServer/DBUser")) )
|
|||
|
strSQLUser=xml.GetData();
|
|||
|
if ( xml.FindElem(_T("/Setup/XYServer/DBPasswd")) )
|
|||
|
strSQLPasswd=xml.GetData();
|
|||
|
if ( xml.FindElem(_T("/Setup/XYServer/MaxConnection")) )
|
|||
|
strSQLMaxConnection=xml.GetData();
|
|||
|
BOOL bEnable = _ttol(strEnable);
|
|||
|
long lSqlCount=_ttol(strSQLMaxConnection);
|
|||
|
if ( lSqlCount<1 || lSqlCount>20 )
|
|||
|
lSqlCount=5;
|
|||
|
XYSqlPool.SetTimeOut(5,5);//<2F><><EFBFBD>ó<EFBFBD>ʱʱ<CAB1>䣬<EFBFBD><E4A3AC><EFBFBD>̡<EFBFBD>
|
|||
|
if (bEnable && XYSqlPool.Init(lSqlCount,strSQLServer,strSQLUser,strSQLPasswd,strSQLDB))
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bEnableXY=false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
//InitRand(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>ظ<EFBFBD>
|
|||
|
|
|||
|
long lMaxSendCount=50; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B7A2>50<35><30>
|
|||
|
|
|||
|
//long lZDSmsCount=lMsgAll * lMaxSendCount; //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ÿ۷<C3BF><DBB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
long lSendCount = lMaxSendCount * lMsgAll;
|
|||
|
ANS_SendData2 * pSmsData = new ANS_SendData2[lSendCount];
|
|||
|
memset(pSmsData , 0 , sizeof(ANS_SendData2)*lSendCount);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ڼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
long * pSmsIDIndex = new long[lMaxSendCount];
|
|||
|
memset(pSmsIDIndex , 0,sizeof(long)*lMaxSendCount);
|
|||
|
|
|||
|
//ȡ<>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/*CString*/ strMobiles = Mobiles;
|
|||
|
strMobiles+=CString(_T(",")); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ռ<EFBFBD>¼
|
|||
|
long lLen = strMobiles.GetLength();
|
|||
|
TCHAR szMobile[32]={0};
|
|||
|
long lMobileLen=0;
|
|||
|
long lMobileAllCount=0;
|
|||
|
long lMobileCount=0;
|
|||
|
long lMobileIndex=0;
|
|||
|
long lMsgIDCount=0;
|
|||
|
BOOL bSendBreak=false;
|
|||
|
for ( int i=0 ; i<lLen ; i++ )
|
|||
|
{
|
|||
|
TCHAR c = strMobiles.GetAt(i);
|
|||
|
if ( c=='\r' || c=='\n' || c=='\t'
|
|||
|
|| c==';' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==',' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c=='.' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==':' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| c==' ' || c=='<EFBFBD><EFBFBD>'
|
|||
|
|| i == lLen-1)
|
|||
|
{
|
|||
|
if ( lMobileLen>=9 && lMobileLen<=18 ) //<2F><><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA>볤<EFBFBD><EBB3A4>
|
|||
|
{
|
|||
|
TCHAR szBuf[32]={0};
|
|||
|
_tcscpy(szBuf , szMobile);
|
|||
|
CSendPub::ExMobileGZM(szBuf);
|
|||
|
if ( CSendPub::isNumSup2(szBuf) )
|
|||
|
{
|
|||
|
pSmsData[lMobileIndex].lCorpID = lCorpID;
|
|||
|
pSmsData[lMobileIndex].lUserID = lUserID;
|
|||
|
if ( bFilt ) //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>˵Ķ<CBB5><C4B6><EFBFBD>
|
|||
|
pSmsData[lMobileIndex].lStatus = SEND_STATUS_SUB_FILT;
|
|||
|
_tcsncpy( pSmsData[lMobileIndex].szSendNum , strAddNum ,10); //<2F><>չ<EFBFBD><D5B9>
|
|||
|
_tcscpy( pSmsData[lMobileIndex].szMobile , szBuf );
|
|||
|
_tcscpy( pSmsData[lMobileIndex].szName , strRecver );
|
|||
|
if ( tTimer.GetStatus() == COleDateTime::valid ) //<2F><>ʱʱ<CAB1><CAB1>
|
|||
|
{
|
|||
|
tTimer.GetAsSystemTime(pSmsData[lMobileIndex].tTimer );
|
|||
|
}
|
|||
|
|
|||
|
lRand = rand()%254;
|
|||
|
if ( lRand<0 )
|
|||
|
lRand=-lRand;
|
|||
|
for ( int h=1 ; h<=lMsgAll ; h++ )
|
|||
|
{
|
|||
|
if ( h>1 )
|
|||
|
{
|
|||
|
pSmsData[lMobileIndex] = pSmsData[lMobileIndex-1]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⸴<EFBFBD><E2B8B4>ǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
if ( bLongSms )
|
|||
|
{
|
|||
|
_stprintf( pSmsData[lMobileIndex].szMsg , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%02X%X%X:%s") , lRand,lMsgAll,h,saMsg.GetAt(h-1));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( bFD )
|
|||
|
_stprintf( pSmsData[lMobileIndex].szMsg , _T("%X/%X:%s") , h,lMsgAll,saMsg.GetAt(h-1));
|
|||
|
else
|
|||
|
_tcscpy(pSmsData[lMobileIndex].szMsg , saMsg.GetAt(h-1) );
|
|||
|
|
|||
|
}
|
|||
|
pSmsData[lMobileIndex].tOvrTime.wSecond = lRand;
|
|||
|
pSmsData[lMobileIndex].tOvrTime.wDayOfWeek =(WORD)(h*100+lMsgAll);
|
|||
|
|
|||
|
lMobileIndex ++;
|
|||
|
if ( lMobileIndex >= lSendCount )
|
|||
|
break;
|
|||
|
}
|
|||
|
pSmsIDIndex[lMobileCount] = lMobileIndex-1; //<2F><>¼ÿ<C2BC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
|||
|
lMobileCount ++;
|
|||
|
lMobileAllCount ++;
|
|||
|
}
|
|||
|
}
|
|||
|
lMobileLen = 0; //<2F><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD>ʼ
|
|||
|
memset(szMobile , 0 , sizeof(szMobile));
|
|||
|
if ( lMobileCount>=lMaxSendCount || i== lLen-1 ) //ÿ<>η<EFBFBD>50<35><30>
|
|||
|
{
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
CSendPub::SendPub_Mms Sms={0};
|
|||
|
|
|||
|
Sms.lCorpID = lCorpID;
|
|||
|
Sms.lUserID = lUserID;
|
|||
|
if ( tTimer.GetStatus() == COleDateTime::valid ) //<2F><>ʱʱ<CAB1><CAB1>
|
|||
|
{
|
|||
|
tTimer.GetAsSystemTime(Sms.tTimer );
|
|||
|
}
|
|||
|
_tcscpy(Sms.szIP , strIP);
|
|||
|
Sms.lPriority = 0; //<2F><>SubmitMms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
if ( Sms.lPriority>10 )
|
|||
|
{
|
|||
|
if ( bSDK )
|
|||
|
Sms.lSendCount = 2000+Sms.lPriority*500; //<2F>ӿڷ<D3BF><DAB7>͵ģ<CDB5>5000<30><30><EFBFBD><EFBFBD>
|
|||
|
else
|
|||
|
Sms.lSendCount = 10000+Sms.lPriority*500; //<2F>ӿڷ<D3BF><DAB7>͵ģ<CDB5>5000<30><30><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
//Sms.lPriority = 0; //<2F><>SubmitMms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|||
|
Sms.lSendCount = lMobileAllCount; //<2F>ܶ<EFBFBD><DCB6>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC>㷢<EFBFBD><E3B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//Sms.tTimer = pSendData->tTimer;
|
|||
|
Sms.bFirstCheckYE = true; //Ԥ<>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EEB2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if ( bSDK )
|
|||
|
Sms.bWebReq = true;
|
|||
|
|
|||
|
/*
|
|||
|
Sms.XY.bEnableXY = false;
|
|||
|
if ( bEnableXY)
|
|||
|
{
|
|||
|
Sms.XY.bEnableXY = true;
|
|||
|
Sms.XY.pSQLPool = &XYSqlPool;
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
long lRet = CSendPub::SubmitSms(Sms, pSmsData,lMobileIndex,strErrMsg,&AdoRS,&AdoRS2);
|
|||
|
|
|||
|
if ( lRet>0 )
|
|||
|
{
|
|||
|
*pSendCount = *pSendCount + lRet;
|
|||
|
if ( bSDK )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϊȡ<CEAA><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ID
|
|||
|
for ( int i=0 ; i<lMobileCount ; i++ )
|
|||
|
{
|
|||
|
if ( pSmsIDIndex[i]>=0 && pSmsIDIndex[i]<lMobileIndex )
|
|||
|
{
|
|||
|
long lSmsID = pSmsData[pSmsIDIndex[i]].lSendID;
|
|||
|
str.Format(_T("%d") , lSmsID);
|
|||
|
if ( strMsgID.GetLength()>0 )
|
|||
|
strMsgID=strMsgID+CString(_T(","))+str;
|
|||
|
else
|
|||
|
strMsgID = str;
|
|||
|
|
|||
|
lMsgIDCount ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
bSendBreak = true; //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
lMobileCount = 0;
|
|||
|
lMobileIndex = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( c>='0' && c<='9' && lMobileLen<19 )
|
|||
|
{
|
|||
|
szMobile[lMobileLen] = c;
|
|||
|
lMobileLen ++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if ( bSendBreak )
|
|||
|
{
|
|||
|
if ( bSDK )
|
|||
|
m_strSendRet.Format(_T("%d,%s:%s"),lMsgIDCount,strMsgID,strErrMsg);
|
|||
|
else
|
|||
|
m_strSendRet.Format(_T("<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ%d<><64><EFBFBD><EFBFBD>\\n<EFBFBD>쳣<EFBFBD><EFBFBD>Ϣ:%s") , *pSendCount,strErrMsg);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( bSDK )
|
|||
|
m_strSendRet.Format(_T("%d,%s"),lMsgIDCount,strMsgID);
|
|||
|
else
|
|||
|
m_strSendRet.Format(_T("<EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ%d<><64><EFBFBD><EFBFBD>") , *pSendCount);
|
|||
|
}
|
|||
|
|
|||
|
AdoRS.Close();
|
|||
|
AdoRS2.Close();
|
|||
|
|
|||
|
#ifndef SMSCENTER_DGSB
|
|||
|
if (strRecver != CString(_T("WebSDK")) && strRecver != CString(_T("WebSDK2")) && strRecver != CString(_T("WebF")) && strRecver != CString(_T("Web3")))
|
|||
|
{
|
|||
|
//ÿ<><C3BF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>40<34><30>
|
|||
|
while (GetTickCount() - lSendAllTime < 1 * 1000)
|
|||
|
{
|
|||
|
Sleep(100);
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
delete pSmsData;
|
|||
|
delete pSmsIDIndex;
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
catch(...)
|
|||
|
{
|
|||
|
*pSendCount = -2;
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::get_SendRet(BSTR* pVal)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
*pVal = ::SysAllocString(m_strSendRet);
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::put_SendRet(BSTR newVal)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::SendSms_Excel(IDispatch* pAdoConnect, LONG lCorpID, LONG lUserID, LONG lLongSms,LONG lFD, BSTR Timer2, BSTR IP, BSTR ExcelFileName, LONG* lSendCount)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
*lSendCount = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
CAdoConnection adoConnection;
|
|||
|
CAdoRecordSet AdoRS;
|
|||
|
|
|||
|
if ( !adoConnection.ConnectExcel(ExcelFileName) )
|
|||
|
{
|
|||
|
m_strSendRet.Format(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Excel<EFBFBD>ļ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>%s"),ExcelFileName);
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
AdoRS.SetAdoConnection(&adoConnection);
|
|||
|
CString str;
|
|||
|
str = _T("select * from [Sheet1$]");
|
|||
|
AdoRS.Open(str);
|
|||
|
while(!AdoRS.IsEOF() )
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
AdoRS.MoveNext();
|
|||
|
}
|
|||
|
}
|
|||
|
catch(...)
|
|||
|
{
|
|||
|
*lSendCount = -2;
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::CorpSmsHttpReq(BSTR pReq, BSTR pIPAddr, BSTR pReqVer, BSTR* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
CString REQHEAD1=_T("MOBSETGATEWAY001");
|
|||
|
CString REQHEAD2=_T("MOBSETGATEWAY002");
|
|||
|
CString SMS_PIPE=_T("\\\\.\\PIPE\\SMSPIPE");
|
|||
|
if ( CString(pReqVer) == CString(_T("W")) )
|
|||
|
SMS_PIPE=_T("\\\\.\\PIPE\\SMSPIPEW");
|
|||
|
|
|||
|
|
|||
|
long lLen = SysStringLen(pReq)*2+2048;
|
|||
|
TCHAR * szReq = new TCHAR[lLen];
|
|||
|
char * szReq2= new char[lLen];
|
|||
|
memset(szReq,0,lLen);
|
|||
|
memset(szReq2,0,lLen);
|
|||
|
_tcscpy(szReq , pReq);//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
|||
|
TCHAR szReqHead[128]={0};
|
|||
|
CString strRet;
|
|||
|
//strcpy( szRet , "ERROR" );
|
|||
|
strRet.Format(_T("ERROR:Len=%d"),lLen-32);
|
|||
|
|
|||
|
long lSendCount=0; //ȡ<><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
long lReqVer=1;
|
|||
|
if ( !_tcsncmp(szReq,REQHEAD1,_tcslen(REQHEAD1)) ) //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
{
|
|||
|
_tcscpy(szReqHead,REQHEAD1);
|
|||
|
lReqVer = 1; //<2F><>һ<EFBFBD><D2BB>
|
|||
|
lSendCount = HexToAsciiA(szReq+_tcslen(szReqHead),szReq2);
|
|||
|
}
|
|||
|
else
|
|||
|
if ( !_tcsncmp(szReq,REQHEAD2,_tcslen(REQHEAD2)) ) //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
{
|
|||
|
_tcscpy(szReqHead,REQHEAD2);
|
|||
|
lReqVer = 2; //<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
|||
|
|
|||
|
TCHAR szTemp[64]={0};
|
|||
|
_tcsncpy(szTemp,szReq+_tcslen(szReqHead),10);
|
|||
|
long lSendCount2 = _ttol(szTemp)/2;
|
|||
|
lSendCount = HexToAsciiA(szReq+_tcslen(szReqHead)+10,szReq2);
|
|||
|
if ( lSendCount2 != lSendCount )
|
|||
|
memset(szReqHead,0,sizeof(szReqHead));
|
|||
|
}
|
|||
|
if ( _tcslen(szReqHead)>2 )
|
|||
|
{
|
|||
|
|
|||
|
//<2F><><EFBFBD>ӹܵ<D3B9>
|
|||
|
if (WaitNamedPipe(SMS_PIPE, 2000))
|
|||
|
//if ( true )
|
|||
|
{
|
|||
|
HANDLE hPipe=CreateFile(SMS_PIPE,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
|||
|
if(hPipe!=INVALID_HANDLE_VALUE)
|
|||
|
{
|
|||
|
//DWORD dwMode=PIPE_TYPE_BYTE|PIPE_NOWAIT;
|
|||
|
//SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL); //<2F><><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ͳ<EFBFBD>ȥ
|
|||
|
tagPipeSend PipeSend={0};
|
|||
|
_tcscpy(PipeSend.szIP , pIPAddr);
|
|||
|
PipeSend.lDataLen = lSendCount;
|
|||
|
DWORD dwWrite=0;
|
|||
|
WriteFile(hPipe, &PipeSend, sizeof(PipeSend), &dwWrite, NULL);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
long lWrite=0;
|
|||
|
DWORD dwTime2 = ::GetTickCount();
|
|||
|
while ( true )
|
|||
|
{
|
|||
|
WriteFile(hPipe,szReq2+lWrite,lSendCount-lWrite,&dwWrite,NULL);
|
|||
|
lWrite=lWrite+dwWrite;
|
|||
|
if ( lWrite>=lSendCount )
|
|||
|
break;
|
|||
|
Sleep(20);
|
|||
|
if ( ::GetTickCount() - dwTime2 > 50000 ) //30<33><30><EFBFBD><EFBFBD><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>س<EFBFBD>ʱ
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
//WriteFile(hPipe, szReq2, lSendCount, &dwWrite, NULL);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
memset(&PipeSend,0,sizeof(PipeSend));
|
|||
|
long lRecvAllLen=0;
|
|||
|
long lRecvLen=0;
|
|||
|
BYTE * pData=NULL;
|
|||
|
DWORD dwTime = ::GetTickCount();
|
|||
|
DWORD dwRead=0;
|
|||
|
while ( true )
|
|||
|
{
|
|||
|
dwRead=0;
|
|||
|
if ( lRecvAllLen==0 ) //<2F><><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>
|
|||
|
{
|
|||
|
if ( ReadFile(hPipe,((char*)&PipeSend)+lRecvLen,sizeof(PipeSend)-lRecvLen,&dwRead,NULL)) //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
|||
|
{
|
|||
|
lRecvLen = lRecvLen + dwRead;
|
|||
|
if ( lRecvLen == sizeof(PipeSend) )
|
|||
|
{
|
|||
|
lRecvAllLen = PipeSend.lDataLen;
|
|||
|
if ( lRecvAllLen<=0 ) //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
strRet += CString(_T("ERR:RecvRetError"));
|
|||
|
break;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( pData )
|
|||
|
delete pData;
|
|||
|
pData = new BYTE[lRecvAllLen+2048];
|
|||
|
memset(pData,0,lRecvAllLen+2048);
|
|||
|
}
|
|||
|
lRecvLen = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ( ReadFile(hPipe,pData+lRecvLen,lRecvAllLen-lRecvLen,&dwRead,NULL)) //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
|||
|
{
|
|||
|
lRecvLen = lRecvLen + dwRead;
|
|||
|
if ( lRecvLen == lRecvAllLen )
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
long lRetSize=_tcslen(szReqHead)+lRecvAllLen+32;
|
|||
|
TCHAR * pRetH=new TCHAR[lRetSize*2];memset(pRetH,0,sizeof(TCHAR)*lRetSize*2);
|
|||
|
TCHAR * pRetH2=pRetH;
|
|||
|
_tcscpy(pRetH2,szReqHead);pRetH2=pRetH2+_tcslen(szReqHead);
|
|||
|
|
|||
|
AsciiToHexW((char*)pData,pRetH2,lRecvAllLen);
|
|||
|
#ifdef _DEBUG
|
|||
|
CString strFileName;
|
|||
|
strFileName.Format(_T("d:\\Http_Ret_%d.txt"),GetTickCount());
|
|||
|
CFile file(strFileName , CFile::modeCreate|CFile::modeReadWrite);
|
|||
|
file.Write(CW2A(pRetH) , strlen(CW2A(pRetH)));
|
|||
|
file.Close();
|
|||
|
#endif
|
|||
|
*pRet = ::SysAllocString(pRetH);
|
|||
|
|
|||
|
if ( pData )
|
|||
|
delete pData;
|
|||
|
delete pRetH;
|
|||
|
delete szReq;
|
|||
|
delete szReq2;
|
|||
|
return S_OK;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
Sleep(50);
|
|||
|
//if ( ::GetTickCount() - dwTime >35000 ) //35<33><35><EFBFBD>ڽ<EFBFBD><DABD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʱ
|
|||
|
if ( ::GetTickCount() - dwTime >35000 ) //35<33><35><EFBFBD>ڽ<EFBFBD><DABD>ղ<EFBFBD><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʱ
|
|||
|
{
|
|||
|
strRet = strRet + _T("ERR:TimeOut");
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if ( pData )
|
|||
|
delete pData;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
DWORD dw=::GetLastError();
|
|||
|
strRet.Format(_T("ERR:Pipe02,%d"),dw);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
strRet = _T("ERR:Pipe01");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
*pRet = ::SysAllocString(strRet);
|
|||
|
delete szReq;
|
|||
|
delete szReq2;
|
|||
|
|
|||
|
return S_OK;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
STDMETHODIMP CSms::CheckPasswd3(LONG CorpID, BSTR User, BSTR Passwd, BSTR TimeStamp, BSTR Encrypt, LONG Purview, BSTR* pRet)
|
|||
|
{
|
|||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
|||
|
|
|||
|
CString strRet;
|
|||
|
|
|||
|
|
|||
|
//ȡ<><C8A1>User ,Passwd
|
|||
|
char szUser[64] = { 0 };
|
|||
|
char szPasswd[128] = { 0 };
|
|||
|
char szPasswd2[128] = { 0 };
|
|||
|
char szEncrypt[128] = { 0 };
|
|||
|
TCHAR szPasswdU2[128] = { 0 };
|
|||
|
strcpy(szUser, CW2A(User));
|
|||
|
strcpy(szPasswd, CW2A(Passwd));
|
|||
|
strcpy(szEncrypt, CW2A(Encrypt));
|
|||
|
|
|||
|
CDes des;
|
|||
|
long lOut = sizeof(szPasswd2);
|
|||
|
des.Decrypt(szEncrypt, (long)strlen(szEncrypt), szPasswd2, lOut, szUser, 8);
|
|||
|
_tcscpy(szPasswdU2, CA2W(szPasswd2));
|
|||
|
|
|||
|
CString strCorpID;
|
|||
|
strCorpID.Format(_T("%d"), CorpID);
|
|||
|
CString strPasswd2 = szPasswdU2;
|
|||
|
CString strTimeStamp = TimeStamp;
|
|||
|
|
|||
|
CString strMd5 = Passwd;
|
|||
|
strMd5.MakeUpper();
|
|||
|
|
|||
|
CString strMd52 = CSendPub::GetMD5(strCorpID + strPasswd2 + strTimeStamp, false);
|
|||
|
strMd52.MakeUpper();
|
|||
|
|
|||
|
strRet = strMd52;
|
|||
|
|
|||
|
if (strMd5 == strMd52)
|
|||
|
{
|
|||
|
strRet = CString(_T("1"));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
strRet = CString(_T("0"));
|
|||
|
}
|
|||
|
|
|||
|
if (!(Purview&PURVIEW_LOGIN))
|
|||
|
{
|
|||
|
strRet = CString(_T("-1"));
|
|||
|
|
|||
|
}
|
|||
|
if (!(Purview&PURVIEW_SENDP))
|
|||
|
{
|
|||
|
strRet = CString(_T("-1"));
|
|||
|
}
|
|||
|
|
|||
|
*pRet = ::SysAllocString(strRet);
|
|||
|
return S_OK;
|
|||
|
}
|