From 3e489efdcfc7e87f1f0a5739381fcb24fba28a06 Mon Sep 17 00:00:00 2001 From: lujiang Date: Thu, 27 Feb 2025 17:04:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MobsetWeb.cpp | 91 +++ MobsetWeb.def | 10 + MobsetWeb.idl | 47 ++ MobsetWeb.rc | Bin 0 -> 5862 bytes MobsetWeb.rgs | 3 + MobsetWeb.sln | 26 + MobsetWeb.vcxproj | 444 ++++++++++++ MobsetWeb.vcxproj.filters | 149 ++++ MobsetWeb_i.h | 456 ++++++++++++ ReadMe.txt | 66 ++ Sms.cpp | 1401 +++++++++++++++++++++++++++++++++++++ Sms.h | 76 ++ Sms.rgs | 26 + XYSerup.xml | 11 + dllmain.cpp | 39 ++ dllmain.h | 10 + resource.h | Bin 0 -> 1084 bytes stdafx.cpp | 5 + stdafx.h | 64 ++ targetver.h | 8 + xdlldata.c | 18 + xdlldata.h | 15 + 调试方法.txt | 5 + 23 files changed, 2970 insertions(+) create mode 100644 MobsetWeb.cpp create mode 100644 MobsetWeb.def create mode 100644 MobsetWeb.idl create mode 100644 MobsetWeb.rc create mode 100644 MobsetWeb.rgs create mode 100644 MobsetWeb.sln create mode 100644 MobsetWeb.vcxproj create mode 100644 MobsetWeb.vcxproj.filters create mode 100644 MobsetWeb_i.h create mode 100644 ReadMe.txt create mode 100644 Sms.cpp create mode 100644 Sms.h create mode 100644 Sms.rgs create mode 100644 XYSerup.xml create mode 100644 dllmain.cpp create mode 100644 dllmain.h create mode 100644 resource.h create mode 100644 stdafx.cpp create mode 100644 stdafx.h create mode 100644 targetver.h create mode 100644 xdlldata.c create mode 100644 xdlldata.h create mode 100644 调试方法.txt diff --git a/MobsetWeb.cpp b/MobsetWeb.cpp new file mode 100644 index 0000000..4f244db --- /dev/null +++ b/MobsetWeb.cpp @@ -0,0 +1,91 @@ +// MobsetWeb.cpp : DLL ʵ֡ + + +#include "stdafx.h" +#include "resource.h" +#include "MobsetWeb_i.h" +#include "dllmain.h" +#include "xdlldata.h" + + +// ȷ DLL Ƿ OLE жء +STDAPI DllCanUnloadNow(void) +{ + #ifdef _MERGE_PROXYSTUB + HRESULT hr = PrxDllCanUnloadNow(); + if (hr != S_OK) + return hr; +#endif + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + return (AfxDllCanUnloadNow()==S_OK && _AtlModule.GetLockCount()==0) ? S_OK : S_FALSE; + } + +// һ๤Դ͵Ķ +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) +{ + #ifdef _MERGE_PROXYSTUB + if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK) + return S_OK; +#endif + return _AtlModule.DllGetClassObject(rclsid, riid, ppv); +} + +// DllRegisterServer - ϵͳע +STDAPI DllRegisterServer(void) +{ + // עͿͿенӿ + HRESULT hr = _AtlModule.DllRegisterServer(); + #ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) + return hr; + hr = PrxDllRegisterServer(); +#endif + return hr; +} + +// DllUnregisterServer - ϵͳעƳ +STDAPI DllUnregisterServer(void) +{ + HRESULT hr = _AtlModule.DllUnregisterServer(); + #ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) + return hr; + hr = PrxDllRegisterServer(); + if (FAILED(hr)) + return hr; + hr = PrxDllUnregisterServer(); +#endif + return hr; +} + +// DllInstall - ûͼϵͳעһ/Ƴ +STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) +{ + HRESULT hr = E_FAIL; + static const wchar_t szUserSwitch[] = L"user"; + + if (pszCmdLine != NULL) + { + if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0) + { + ATL::AtlSetPerUserRegistration(true); + } + } + + if (bInstall) + { + hr = DllRegisterServer(); + if (FAILED(hr)) + { + DllUnregisterServer(); + } + } + else + { + hr = DllUnregisterServer(); + } + + return hr; +} + + diff --git a/MobsetWeb.def b/MobsetWeb.def new file mode 100644 index 0000000..0c8d34d --- /dev/null +++ b/MobsetWeb.def @@ -0,0 +1,10 @@ +; MobsetWeb.def : ģ + +LIBRARY + +EXPORTS + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE + DllInstall PRIVATE diff --git a/MobsetWeb.idl b/MobsetWeb.idl new file mode 100644 index 0000000..8e83366 --- /dev/null +++ b/MobsetWeb.idl @@ -0,0 +1,47 @@ +// MobsetWeb.idl : MobsetWeb IDL Դ +// + +// ļ MIDL ߴ +// Ϳ(MobsetWeb.tlb)ͷʹ롣 + +import "oaidl.idl"; +import "ocidl.idl"; + +[ + object, + uuid(5672C687-21CF-4CBE-9E1C-E1460799B581), + dual, + nonextensible, + pointer_default(unique) +] +interface ISms : IDispatch{ + [id(1)] HRESULT CheckPasswd([in] BSTR User, [in] BSTR Passwd, [in] BSTR Encrypt, [in] LONG Purview, [out,retval] LONG* pRet); + [id(11)] HRESULT CheckPasswd2([in] LONG CorpID , [in] BSTR User, [in] BSTR Passwd, [in] BSTR TimeStamp, [in] BSTR Encrypt, [in] LONG Purview, [out, retval] LONG* pRet); + [id(2)] HRESULT GetPasswd([in] BSTR User, [in] BSTR Passwd, [out,retval] BSTR* pRet); + [id(3)] HRESULT EncSPMS([in] BSTR Key, [in] BSTR Src, [out,retval] BSTR* pRet); + [id(4)] HRESULT GetPurview([in] LONG PurviewType, [out,retval] LONG* pRet); + [id(5)] HRESULT HasSWTPre([in] LONG lSDK, [out,retval] LONG* pRet); + [id(6)] HRESULT isHasPurview([in] LONG Purview, [in] LONG AllPurview, [out,retval] LONG* pRet); + [id(7)] HRESULT SendSms([in] IDispatch* pAdoConnect, [in] LONG lCorpID, [in] LONG lUserID, [in] LONG lLongSms,[in] LONG lFD, [in] BSTR Timer, [in] BSTR IP, [in] BSTR AddNum, [in] BSTR Recver,[in] BSTR Mobiles, [in] BSTR Msg, [out,retval] LONG* pSendCount); + [propget, id(8)] HRESULT SendRet([out, retval] BSTR* pVal); + [propput, id(8)] HRESULT SendRet([in] BSTR newVal); + [id(9)] HRESULT SendSms_Excel([in] IDispatch* pAdoConnect, [in] LONG lCorpID, [in] LONG lUserID, [in] LONG lLongSms,[in] LONG lFD, [in] BSTR Timer2, [in] BSTR IP, [in] BSTR ExcelFileName, [out,retval] LONG* lSendCount); + [id(10)] HRESULT CorpSmsHttpReq([in] BSTR pReq, [in] BSTR pIPAddr, [in] BSTR pReqVer, [out,retval] BSTR* pRet); + [id(12)] HRESULT CheckPasswd3([in] LONG CorpID, [in] BSTR User, [in] BSTR Passwd, [in] BSTR TimeStamp, [in] BSTR Encrypt, [in] LONG Purview, [out, retval] BSTR* pRet); +}; +[ + uuid(926542BC-66DD-4977-8850-E29198DDE624), + version(1.0), +] +library MobsetWebLib +{ + importlib("stdole2.tlb"); + [ + uuid(A42502DF-7605-4D99-9F32-FFE224DF5571) + ] + coclass Sms + { + [default] interface ISms; + }; +}; + diff --git a/MobsetWeb.rc b/MobsetWeb.rc new file mode 100644 index 0000000000000000000000000000000000000000..d57032eac6a9d87508dbdd13e1bf42ee08d7d67d GIT binary patch literal 5862 zcmdUz-EJF26vvNx2ckT~;@l*nZS1xe2q8qAIKkl9A^s?lB1K94K_ufuwu6f3MelmS zgYX3!qsR!yEA9boX`K6@teQ5ZQCL{v`c$#W4p2mPv54D zbr_r2jh)+&uU-3?7TLghHsTpGKBez6Hm29Q8{VGt9`Pk^mv#-!BfD?!v&(keZ!kJy zb_jJhrY$V2e`McTA*R;KjhL<g>;SvW+qjRFuIzjCpJE-^p@r7p@>@mgUG$VaDvUqonfJ(|5BlsN z`}d(4p4>6MES;<%5A zD@9mB>ut7vUX?_WZi6_#&C<)n?)qyfZ6kYFf8E=(S3flyAG~>3|EseVh{Q>36=xa6 zMr0pl^1ExB#N$4Z?ee-w6t>CmT_W*}Sgg^+_a!aLUD<-iF?n>xx-UV1t$5cOqjg5x z^apXS_z_2^sINd>u?O&OLRV%tw`QI~7*hpfj-aR_Zj}kiz>+Z6Ls?aJ3cna>ElE`mgcl3mdk`wZ%5@%8wJ_Xt# z)$Rhk?_ten{9b_iQ%(&R@ob)r@}x^wBkw(jSk z(Cduf3MeTY)5+;9&c%J+b@ofo2p2W(@>Ez?V?Ik0k?#-4QumZ*v`6r7kgsiUxV6*@ z&wW2e-UFmN1c95JL?XDquqVWOE#~fW*ki0}Lj_D}gDF`#6Hbmp>FxR+@uUd5oxYf& z_c@wf(Lg@O`zbQ2J)NzI;>sXvwK$O~#vR?`g?U$PvQ&QOFjA^EHL$BJQ$T_#*rNO% zu;(S3_3+aOYh5wxU&8KF`@b%-`E!53cFkh|7oYKCgR!)PMi^ z!~WfN%4VG3p#*LfXHRJ*4Qfa}z%IksR@Ycb{vB|_o(Ao-37t+xiM{R>e`}oFd~xyK zV0W-}e6JYxUf6z$9o_H7^pauTLm_@|LCy}RUnHalBzQ)W)^iSGI7tPu)3 zR8X##xNi#a(g>4Co4jdW&%0DZbvM%qRsS{|gWq0$uS*q-I;L(Of>dRwg!0e$)fpz# z=J|za(qrLMkZ#n4}fM%@?AIYp{I zdJ6S=oS${tIe=;hKdN$TCR{UReVwD+Dd#KJ?cfL1w{Q#j(_wNpPx4Qz%iplq(>Lie zsJHs6cQLJ7Z|%I6>i_G%dAe8K{%>CR1{JE9{{G}Gzus2N&w>$ET>nrndw2T>H|@RS literal 0 HcmV?d00001 diff --git a/MobsetWeb.rgs b/MobsetWeb.rgs new file mode 100644 index 0000000..e7d3740 --- /dev/null +++ b/MobsetWeb.rgs @@ -0,0 +1,3 @@ +HKCR +{ +} diff --git a/MobsetWeb.sln b/MobsetWeb.sln new file mode 100644 index 0000000..e671068 --- /dev/null +++ b/MobsetWeb.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MobsetWeb", "MobsetWeb.vcxproj", "{44F678E3-A3EC-464C-94B1-A2AD95F80CB4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Debug|Win32.ActiveCfg = Debug|Win32 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Debug|Win32.Build.0 = Debug|Win32 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Debug|x64.ActiveCfg = Debug|x64 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Debug|x64.Build.0 = Debug|x64 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Release|Win32.ActiveCfg = Release|Win32 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Release|Win32.Build.0 = Release|Win32 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Release|x64.ActiveCfg = Release|x64 + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/MobsetWeb.vcxproj b/MobsetWeb.vcxproj new file mode 100644 index 0000000..d0f04f4 --- /dev/null +++ b/MobsetWeb.vcxproj @@ -0,0 +1,444 @@ + + + + + Debug x64 + Win32 + + + Debug x64 + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {44F678E3-A3EC-464C-94B1-A2AD95F80CB4} + AtlProj + 10.0 + + + + DynamicLibrary + true + Dynamic + Unicode + Dynamic + v143 + + + DynamicLibrary + true + Dynamic + Unicode + Dynamic + Windows7.1SDK + + + DynamicLibrary + true + Dynamic + Unicode + Dynamic + v143 + + + DynamicLibrary + true + Dynamic + Unicode + Dynamic + Windows7.1SDK + + + DynamicLibrary + false + Static + Unicode + Static + v143 + + + DynamicLibrary + false + Static + Unicode + Static + v143 + + + + + + + + + + + + + + + + + + + + + + + + + true + true + + + true + true + + + true + true + + + true + true + + + true + false + + + true + false + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + Win32 + _DEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + true + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + true + true + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + Win32 + _DEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + true + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + true + true + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + _DEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + true + true + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + _DEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + true + true + + + + + Use + Level3 + MaxSpeed + WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + Win32 + NDEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + true + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + No + true + true + true + false + true + + + + + Use + Level3 + MaxSpeed + WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) + false + + + false + NDEBUG;%(PreprocessorDefinitions) + MobsetWeb_i.h + MobsetWeb_i.c + MobsetWeb_p.c + true + $(IntDir)MobsetWeb.tlb + + + + + 0x0804 + $(IntDir);%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + + + Windows + .\MobsetWeb.def + true + true + true + true + + + + + + + + + + + + + + false + false + false + false + + + + + + + + + false + false + + + + + + + + false + false + false + false + + + + + + + + + false + false + + + + + + + + Create + Create + Create + Create + Create + Create + + + false + false + false + false + + + + + + + + + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MobsetWeb.vcxproj.filters b/MobsetWeb.vcxproj.filters new file mode 100644 index 0000000..02043f5 --- /dev/null +++ b/MobsetWeb.vcxproj.filters @@ -0,0 +1,149 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {b6f6edc5-6eea-4d8b-b627-3ee73adbc9b4} + False + + + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 生成的文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 生成的文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + + + 资源文件 + + + + + + 资源文件 + + + 源文件 + + + 资源文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/MobsetWeb_i.h b/MobsetWeb_i.h new file mode 100644 index 0000000..0faef7b --- /dev/null +++ b/MobsetWeb_i.h @@ -0,0 +1,456 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0622 */ +/* at Tue Jan 19 11:14:07 2038 + */ +/* Compiler settings for MobsetWeb.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622 + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __MobsetWeb_i_h__ +#define __MobsetWeb_i_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __ISms_FWD_DEFINED__ +#define __ISms_FWD_DEFINED__ +typedef interface ISms ISms; + +#endif /* __ISms_FWD_DEFINED__ */ + + +#ifndef __Sms_FWD_DEFINED__ +#define __Sms_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class Sms Sms; +#else +typedef struct Sms Sms; +#endif /* __cplusplus */ + +#endif /* __Sms_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" +#include "ocidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +#ifndef __ISms_INTERFACE_DEFINED__ +#define __ISms_INTERFACE_DEFINED__ + +/* interface ISms */ +/* [unique][nonextensible][dual][uuid][object] */ + + +EXTERN_C const IID IID_ISms; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5672C687-21CF-4CBE-9E1C-E1460799B581") + ISms : public IDispatch + { + public: + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CheckPasswd( + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ LONG *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CheckPasswd2( + /* [in] */ LONG CorpID, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR TimeStamp, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ LONG *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetPasswd( + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [retval][out] */ BSTR *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE EncSPMS( + /* [in] */ BSTR Key, + /* [in] */ BSTR Src, + /* [retval][out] */ BSTR *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE GetPurview( + /* [in] */ LONG PurviewType, + /* [retval][out] */ LONG *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE HasSWTPre( + /* [in] */ LONG lSDK, + /* [retval][out] */ LONG *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE isHasPurview( + /* [in] */ LONG Purview, + /* [in] */ LONG AllPurview, + /* [retval][out] */ LONG *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendSms( + /* [in] */ IDispatch *pAdoConnect, + /* [in] */ LONG lCorpID, + /* [in] */ LONG lUserID, + /* [in] */ LONG lLongSms, + /* [in] */ LONG lFD, + /* [in] */ BSTR Timer, + /* [in] */ BSTR IP, + /* [in] */ BSTR AddNum, + /* [in] */ BSTR Recver, + /* [in] */ BSTR Mobiles, + /* [in] */ BSTR Msg, + /* [retval][out] */ LONG *pSendCount) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_SendRet( + /* [retval][out] */ BSTR *pVal) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_SendRet( + /* [in] */ BSTR newVal) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE SendSms_Excel( + /* [in] */ IDispatch *pAdoConnect, + /* [in] */ LONG lCorpID, + /* [in] */ LONG lUserID, + /* [in] */ LONG lLongSms, + /* [in] */ LONG lFD, + /* [in] */ BSTR Timer2, + /* [in] */ BSTR IP, + /* [in] */ BSTR ExcelFileName, + /* [retval][out] */ LONG *lSendCount) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CorpSmsHttpReq( + /* [in] */ BSTR pReq, + /* [in] */ BSTR pIPAddr, + /* [in] */ BSTR pReqVer, + /* [retval][out] */ BSTR *pRet) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE CheckPasswd3( + /* [in] */ LONG CorpID, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR TimeStamp, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ BSTR *pRet) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ISmsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISms * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISms * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISms * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + ISms * This, + /* [out] */ UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + ISms * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + ISms * This, + /* [in] */ REFIID riid, + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [range][in] */ UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ISms * This, + /* [annotation][in] */ + _In_ DISPID dispIdMember, + /* [annotation][in] */ + _In_ REFIID riid, + /* [annotation][in] */ + _In_ LCID lcid, + /* [annotation][in] */ + _In_ WORD wFlags, + /* [annotation][out][in] */ + _In_ DISPPARAMS *pDispParams, + /* [annotation][out] */ + _Out_opt_ VARIANT *pVarResult, + /* [annotation][out] */ + _Out_opt_ EXCEPINFO *pExcepInfo, + /* [annotation][out] */ + _Out_opt_ UINT *puArgErr); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CheckPasswd )( + ISms * This, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ LONG *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CheckPasswd2 )( + ISms * This, + /* [in] */ LONG CorpID, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR TimeStamp, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ LONG *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetPasswd )( + ISms * This, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [retval][out] */ BSTR *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *EncSPMS )( + ISms * This, + /* [in] */ BSTR Key, + /* [in] */ BSTR Src, + /* [retval][out] */ BSTR *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *GetPurview )( + ISms * This, + /* [in] */ LONG PurviewType, + /* [retval][out] */ LONG *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *HasSWTPre )( + ISms * This, + /* [in] */ LONG lSDK, + /* [retval][out] */ LONG *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *isHasPurview )( + ISms * This, + /* [in] */ LONG Purview, + /* [in] */ LONG AllPurview, + /* [retval][out] */ LONG *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendSms )( + ISms * This, + /* [in] */ IDispatch *pAdoConnect, + /* [in] */ LONG lCorpID, + /* [in] */ LONG lUserID, + /* [in] */ LONG lLongSms, + /* [in] */ LONG lFD, + /* [in] */ BSTR Timer, + /* [in] */ BSTR IP, + /* [in] */ BSTR AddNum, + /* [in] */ BSTR Recver, + /* [in] */ BSTR Mobiles, + /* [in] */ BSTR Msg, + /* [retval][out] */ LONG *pSendCount); + + /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_SendRet )( + ISms * This, + /* [retval][out] */ BSTR *pVal); + + /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_SendRet )( + ISms * This, + /* [in] */ BSTR newVal); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *SendSms_Excel )( + ISms * This, + /* [in] */ IDispatch *pAdoConnect, + /* [in] */ LONG lCorpID, + /* [in] */ LONG lUserID, + /* [in] */ LONG lLongSms, + /* [in] */ LONG lFD, + /* [in] */ BSTR Timer2, + /* [in] */ BSTR IP, + /* [in] */ BSTR ExcelFileName, + /* [retval][out] */ LONG *lSendCount); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CorpSmsHttpReq )( + ISms * This, + /* [in] */ BSTR pReq, + /* [in] */ BSTR pIPAddr, + /* [in] */ BSTR pReqVer, + /* [retval][out] */ BSTR *pRet); + + /* [id] */ HRESULT ( STDMETHODCALLTYPE *CheckPasswd3 )( + ISms * This, + /* [in] */ LONG CorpID, + /* [in] */ BSTR User, + /* [in] */ BSTR Passwd, + /* [in] */ BSTR TimeStamp, + /* [in] */ BSTR Encrypt, + /* [in] */ LONG Purview, + /* [retval][out] */ BSTR *pRet); + + END_INTERFACE + } ISmsVtbl; + + interface ISms + { + CONST_VTBL struct ISmsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISms_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISms_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISms_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISms_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ISms_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ISms_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ISms_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ISms_CheckPasswd(This,User,Passwd,Encrypt,Purview,pRet) \ + ( (This)->lpVtbl -> CheckPasswd(This,User,Passwd,Encrypt,Purview,pRet) ) + +#define ISms_CheckPasswd2(This,CorpID,User,Passwd,TimeStamp,Encrypt,Purview,pRet) \ + ( (This)->lpVtbl -> CheckPasswd2(This,CorpID,User,Passwd,TimeStamp,Encrypt,Purview,pRet) ) + +#define ISms_GetPasswd(This,User,Passwd,pRet) \ + ( (This)->lpVtbl -> GetPasswd(This,User,Passwd,pRet) ) + +#define ISms_EncSPMS(This,Key,Src,pRet) \ + ( (This)->lpVtbl -> EncSPMS(This,Key,Src,pRet) ) + +#define ISms_GetPurview(This,PurviewType,pRet) \ + ( (This)->lpVtbl -> GetPurview(This,PurviewType,pRet) ) + +#define ISms_HasSWTPre(This,lSDK,pRet) \ + ( (This)->lpVtbl -> HasSWTPre(This,lSDK,pRet) ) + +#define ISms_isHasPurview(This,Purview,AllPurview,pRet) \ + ( (This)->lpVtbl -> isHasPurview(This,Purview,AllPurview,pRet) ) + +#define ISms_SendSms(This,pAdoConnect,lCorpID,lUserID,lLongSms,lFD,Timer,IP,AddNum,Recver,Mobiles,Msg,pSendCount) \ + ( (This)->lpVtbl -> SendSms(This,pAdoConnect,lCorpID,lUserID,lLongSms,lFD,Timer,IP,AddNum,Recver,Mobiles,Msg,pSendCount) ) + +#define ISms_get_SendRet(This,pVal) \ + ( (This)->lpVtbl -> get_SendRet(This,pVal) ) + +#define ISms_put_SendRet(This,newVal) \ + ( (This)->lpVtbl -> put_SendRet(This,newVal) ) + +#define ISms_SendSms_Excel(This,pAdoConnect,lCorpID,lUserID,lLongSms,lFD,Timer2,IP,ExcelFileName,lSendCount) \ + ( (This)->lpVtbl -> SendSms_Excel(This,pAdoConnect,lCorpID,lUserID,lLongSms,lFD,Timer2,IP,ExcelFileName,lSendCount) ) + +#define ISms_CorpSmsHttpReq(This,pReq,pIPAddr,pReqVer,pRet) \ + ( (This)->lpVtbl -> CorpSmsHttpReq(This,pReq,pIPAddr,pReqVer,pRet) ) + +#define ISms_CheckPasswd3(This,CorpID,User,Passwd,TimeStamp,Encrypt,Purview,pRet) \ + ( (This)->lpVtbl -> CheckPasswd3(This,CorpID,User,Passwd,TimeStamp,Encrypt,Purview,pRet) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISms_INTERFACE_DEFINED__ */ + + + +#ifndef __MobsetWebLib_LIBRARY_DEFINED__ +#define __MobsetWebLib_LIBRARY_DEFINED__ + +/* library MobsetWebLib */ +/* [version][uuid] */ + + +EXTERN_C const IID LIBID_MobsetWebLib; + +EXTERN_C const CLSID CLSID_Sms; + +#ifdef __cplusplus + +class DECLSPEC_UUID("A42502DF-7605-4D99-9F32-FFE224DF5571") +Sms; +#endif +#endif /* __MobsetWebLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); +void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * ); + +unsigned long __RPC_USER BSTR_UserSize64( unsigned long *, unsigned long , BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal64( unsigned long *, unsigned char *, BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal64(unsigned long *, unsigned char *, BSTR * ); +void __RPC_USER BSTR_UserFree64( unsigned long *, BSTR * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/ReadMe.txt b/ReadMe.txt new file mode 100644 index 0000000..8f04387 --- /dev/null +++ b/ReadMe.txt @@ -0,0 +1,66 @@ +======================================================================== + 活动模板库 : MobsetWeb 项目概述 +======================================================================== + +应用程序向导已为您创建了此 MobsetWeb 项目,作为编写动态链接库 (DLL) +的起点。 + +本文件概要介绍组成项目的每个文件的内容。 + +MobsetWeb.vcxproj + 这是使用应用程序向导生成的 VC++ 项目的主项目文件, + 其中包含生成该文件的 Visual C++ 的版本信息, + 以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 + +MobsetWeb.vcxproj.filters + 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。 + 它包含有关项目文件与筛选器之间的关联信息。 在 IDE 中,通过这种关联, + 在特定节点下以分组形式显示具有相似扩展名的文件。 + 例如,“.cpp”文件与“源文件”筛选器关联。 + +MobsetWeb.idl + 此文件包含项目中定义的类型库、接口和组件类的 IDL 定义。 + 此文件将由 MIDL 编译器处理以生成: + C++ 接口定义和 GUID 声明 (MobsetWeb.h) + GUID 定义 (MobsetWeb_i.c) + 类型库 (MobsetWeb.tlb) + 封送处理代码 (MobsetWeb_p.c 和 + dlldata.c) + +MobsetWeb.h + 此文件包含 MobsetWeb.idl 中定义的项目的 C++ 接口定义 + 和 GUID 声明。 它将在编译过程中由 MIDL 重新生成。 + +MobsetWeb.cpp + 此文件包含对象映射和 DLL 导出的实现。 + +MobsetWeb.rc + 这是程序使用的所有 Microsoft Windows 资源的列表。 + +MobsetWeb.def + 此模块定义文件为链接器提供有关 DLL 所要求的导出的信息, + 它包含用于以下内容的导出: + DllGetClassObject + DllCanUnloadNow + DllRegisterServer + DllUnregisterServer + DllInstall + +///////////////////////////////////////////////////////////////////////////// +其他标准文件: + +StdAfx.h,StdAfx.cpp + 这些文件用于生成名为 MobsetWeb.pch 的预编译头 (PCH) 文件和 + 名为 StdAfx.obj 的预编译类型文件。 + +Resource.h + 这是用于定义资源 ID 的标准头文件。 + + +///////////////////////////////////////////////////////////////////////////// +其他注释: + + + “MFC 支持”选项可用于将 Microsoft 基础类库构建到您的主干应用程序中, + 从而让您能够使用 MFC 类、对象和函数。 +///////////////////////////////////////////////////////////////////////////// diff --git a/Sms.cpp b/Sms.cpp new file mode 100644 index 0000000..efeadbc --- /dev/null +++ b/Sms.cpp @@ -0,0 +1,1401 @@ +// Sms.cpp : CSms ʵ + +#include "stdafx.h" +#include "Sms.h" + +#include "..\public\LuTool.h" +#include "..\public\SendPub.h" +#include "..\public\sendpub.cpp" //ڹм룬ҲCW2A +#include "..\public\StringSort\StringSort.h" +#include "..\public\SAStatusLog\SAStatusLog.cpp" //ڹм룬Ҳ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()); + + //ȡ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) //ûΪգ֤ͨ + { + *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()); + + + //ȡ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) //ûΪգ֤ͨ + { + *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()); + + //ȡ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")); +/* + //ȡ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()); + +/* + //ȡ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 ) //¼Ա + { + lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_GADDRESS_SEE|PURVIEW_GADDRESS_MODIFY|PURVIEW_GADDRESS_ADD; + } + if ( PurviewType == PURVIEWTYPE_USERS ) //һԱ + { + lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_SENDG|PURVIEW_RECVP|PURVIEW_GADDRESS_SEE; + } + if ( PurviewType == PURVIEWTYPE_KF ) //ͻԱ + { + lPurview = lPurview|PURVIEW_LOGIN|PURVIEW_SENDG|PURVIEW_SENDP|PURVIEW_RECVP|PURVIEW_RECVG|PURVIEW_GADDRESS_SEE|PURVIEW_PADDRESS; + } + if ( PurviewType == PURVIEWTYPE_ADMIN ) //Ա + { + 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); //ԶʼCom + + *pSendCount = 0; + m_strSendRet=_T("-10,쳣!"); + + 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,쳣!"); + 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,ϵͳ쳣1!"); + return S_OK; + } + */ + + TCHAR szName[512] = { 0 }; + GetCurrentPath(szName); + SC_Setup setup = { 0 }; + CFile file; + CString strFileName; + //ظļͶݵ + 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,ļ쳣!"); + //m_strSendRet.Format(_T("-21,ļ쳣!%s"),strFileName); + //return S_OK; + //ȡļɹʹԭ + 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; + + //ݿ + 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,ϵͳ쳣2ݿʧ!"); + return S_OK; + } + } + //m_AdoConnection.SetCursorLocation(adUseServer); //Ϊα + + 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,ݳȲҪ!"); + return S_OK; + } + //滻ǩַֹǩ + + /* + strMsg.Replace(_T("["), _T("(")); //Զţȥ + strMsg.Replace(_T("]"), _T(")")); + strMsg.Replace(_T(""), _T("(")); //Զţȥ + strMsg.Replace(_T(""), _T(")")); + */ + + BOOL bEnableXY=false; //Ƿ׷ + + BOOL bAtTime=false; + COleDateTime tTimer; + CString strTimer = Timer; + strTimer.Replace(_T("/") , _T("-")); + try + { + tTimer.ParseDateTime(strTimer); + } + catch(...) + { + } + + CString strSelect; + //ȡͨ + TCHAR szSmsTD[32]={0}; + //ȡǩ + CString strCM; + long lFStep=1; //ĬΪ1 + long lSmsFStep = 99; // + 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")); //ȡöͨ + DWORD dwCorpSDK=0; + AdoRS.GetCollect(_T("SDK") , dwCorpSDK ); //SDK + if ( dwCorpSDK & SDK_XY ) //ǷȨ + { + 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,ҵIDûIDӦֹͣ!"); + return S_OK; + } + CString strCM2; + AdoRS.GetCollect(_T("cm2") , strCM2 ); + if ( strCM2.GetLength()>0 ) + strCM = strCM2; + } + + + if (strCM==CString(_T("+"))) //ǩΪ+ʱǩֻܷѱǩ + { + //ǩ + CString strGetCM; + long lMsgLen = strMsg.GetLength(); + if (lMsgLen > 1 && strMsg.Left(1) == CString(_T(""))) //ݳȴ1ԡͷ + { + for (int i = 1; i < lMsgLen && i < 20; i++) + { + if (strMsg.Mid(i, 1) == CString(_T(""))) + { + 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,ǩδǩδͨ!"); + return S_OK; + } + } + else + { + m_strSendRet = _T("-17,ǩδǩδͨ!"); + return S_OK; + } + strCM=CString( _T("")); //+ǩΪա + } + + + //ǷҪ + 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,쳣ֹͣ!"); + //return S_OK; + } + if (!bFilt) //Ҫ˵ģոжϹؼ + { + long lSrcLen = strMsg.GetLength(); + CString strNoSpace = strMsg; + strNoSpace.Replace(_T(" "), _T("")); + strNoSpace.Replace(_T(""), _T("")); + long lNoSpaceLen = strNoSpace.GetLength(); + if (lFStep<3 && (lSrcLen - lNoSpaceLen >4) ) //2ոҪ + { + bFilt = 1; + } + if (!bFilt && (lSrcLen - lNoSpaceLen >2 )) //Ҫ˵ģոжϹؼ + { + 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; + } + } + } + + //жֻǷ + CString strMobiles = Mobiles; + long lMobiles = strMobiles.GetLength() / 12; + if (!bSDK && (lMobiles >= lSmsFStep || lMobiles>=10) ) + { + bFilt = 1; + } + if ( bSDK && strRecver == CString(_T("WebSDK")) && lMobiles>58) //SDK150ʱҲҪ˵ġ + { + bFilt = 1; + } + if (strRecver == CString(_T("WebF"))) + { + bFilt = 1; + } + if ( lSmsFStep == 5185 || lSmsFStep == 51850 ) //ͼ518˱־ + { + bFilt = 0; + } + +#ifdef SMSCENTER_DGSB //ݸ籣 + bFilt = 0; +#endif + + //жǷΪŶηͣҪ + /* + if ( true ) + { + CString strMobiles = Mobiles; + strMobiles+=CString(_T(",")); //Ӷһռ¼ + long lLen = strMobiles.GetLength(); + TCHAR szMobile[32]={0}; + long lMobileLen=0; + CStringSort sort; + for ( int i=0 ; i=9 && lMobileLen<=18 ) //ĺ볤 + { + TCHAR szBuf[32]={0}; + _tcscpy(szBuf , szMobile); + CSendPub::ExMobileGZM(szBuf); + if ( CSendPub::isNumSup2(szBuf) ) + { + sort.Add(szBuf,true); + lMobileLen = 0; //й¿ʼ + memset(szMobile , 0 , sizeof(szMobile)); + } + } + else + { + lMobileLen = 0; //й¿ʼ + memset(szMobile , 0 , sizeof(szMobile)); + } + } + else + { + if ( c>='0' && c<='9' && lMobileLen<19 ) + { + szMobile[lMobileLen] = c; + lMobileLen ++; + } + } + } + //ع + //Ӻ볬10 + //9λŶγ30 + //8λŶγ300 + 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= lLX1 ) + { + bLX = true; + break; + } + } + //жǰ9λ + if ( (LONGLONG)(_ttol(strMobile)/1000000000) != lLXOldMobile2 ) + { + lLXCount2 = 0; + lLXOldMobile2 = (long)(_ttol(strMobile)/1000000000); + } + else + { + lLXCount2 += 1; + if ( lLXCount2 >= lLX2 ) + { + bLX = true; + break; + } + } + //жǰ8λ + 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,ܰŶνзֹͣͣ!"); + return S_OK; + } + } + */ + //Ƚݷֶ + //ֶ + CStringArray saMsg; + //жǷҪֶη + 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) //ũԴǩ6 + lZDCMLen = 6; +#endif +#if defined(SMSCENTER_NX) && defined(SMSCENTER_DGSB) //籣ֵǩ7 + lZDCMLen = 6; //ǩǡݸ硿 +#endif + ANS_GetTD2Data td={0}; + if ( CSendPub::GetTDPro(&AdoRS,szSmsTD,td,MOBILE_TYPE_CMCC)) //ȡҵõͨԣǷҪ + { + 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; // + long lMsgLen =0; +#ifdef UNICODE + lMsgLen = _tcslen(szSrcMsg); +#else + lMsgLen = MultiByteToWideChar( CP_ACP,NULL,szSrcMsg,_tcslen(szSrcMsg), NULL,0); +#endif + //жǷԳŷʽ + BOOL bLongSms=false; + if ( lLongSms>0 ) + bLongSms = true; + //жǷԷֶηʽ + BOOL bFD=false; + /* + if ( lFD>0 && !bLongSms) //dzŲֶܷ + bFD = true; + */ + //ʱ÷ֶιܡlFDֶǩǰ + + BOOL bSignFront = false; + if (lFD > 0) + bSignFront = true; + + long lRand=0; // + if ( lMsgLen+lSignLen<=lMaxSendLen ) //һʹdzŷʽͨ + { + bLongSms = false; + bFD = false; + } + if ( bLongSms && lSignLen>0) //Գŷʽͣǩ + { + /* + if (bSignFront) //ǩǰ + { + CString strSignTemp; + strSignTemp.Format(_T("[%s]%s"), strCM, szSrcMsg); + _tcscpy(szSrcMsg, strSignTemp); + } + else + { + _tcscat(szSrcMsg, _T("[")); + _tcscat(szSrcMsg, strCM); + _tcscat(szSrcMsg, _T("]")); + } + */ + //ͳһǰǩ + CString strSignTemp; + strSignTemp.Format(_T("%s%s"), strCM, szSrcMsg); + _tcscpy(szSrcMsg, strSignTemp); + } + if ( !bLongSms ) //dz,Ҫǩÿżǩ + { + lMaxSendLen = lMaxSendLen-lSignLen; + if ( bFD ) + lMaxSendLen = lMaxSendLen-4; //ֶαʶ + } + 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 ) //dzţҪǩ + { + /* + if (bSignFront) //ǩǰ + { + CString strSignTemp; + strSignTemp.Format(_T("[%s]%s"), strCM, szSendMsg1); + _tcscpy(szSendMsg1, strSignTemp); + } + else + { + _tcscat(szSendMsg1, _T("[")); + _tcscat(szSendMsg1, strCM); + _tcscat(szSendMsg1, _T("]")); + } + */ + //ͳһǰǩ + CString strSignTemp; + strSignTemp.Format(_T("%s%s"), strCM, szSendMsg1); + _tcscpy(szSendMsg1, strSignTemp); + } + saMsg.Add(szSendMsg1); + } + else + { + break; + } + lMsgIndex ++; + } + + if ( lZDCMLen >0 ) //Դǩ + { + if ( bLongSms && saMsg.GetSize()>0) + { + strSelect = saMsg.GetAt(saMsg.GetSize()-1); //һ + +#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(""))); //Ӷһǩ + } + } + } + + lMsgAll = saMsg.GetSize(); + if ( lMsgAll<=0 || lMsgAll>=15 ) + { + m_strSendRet.Format(_T("-14,ݳȲҪ,%d!"),lMsgAll); + return S_OK; + } +/* + //׷ + CSqlPool XYSqlPool; //жϺǷͨ + 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);//óʱʱ䣬̡ + if (bEnable && XYSqlPool.Init(lSqlCount,strSQLServer,strSQLUser,strSQLPasswd,strSQLDB)) + { + + } + else + { + bEnableXY=false; + } + + } +*/ + + //InitRand(); //ʼֹظ + + long lMaxSendCount=50; //ÿ෢50 + + //long lZDSmsCount=lMsgAll * lMaxSendCount; //Ӧÿ۷ + long lSendCount = lMaxSendCount * lMsgAll; + ANS_SendData2 * pSmsData = new ANS_SendData2[lSendCount]; + memset(pSmsData , 0 , sizeof(ANS_SendData2)*lSendCount); + + //ڼ¼һλ + long * pSmsIDIndex = new long[lMaxSendCount]; + memset(pSmsIDIndex , 0,sizeof(long)*lMaxSendCount); + + //ȡֻ + /*CString*/ strMobiles = Mobiles; + strMobiles+=CString(_T(",")); //Ӷһռ¼ + 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=9 && lMobileLen<=18 ) //ĺ볤 + { + TCHAR szBuf[32]={0}; + _tcscpy(szBuf , szMobile); + CSendPub::ExMobileGZM(szBuf); + if ( CSendPub::isNumSup2(szBuf) ) + { + pSmsData[lMobileIndex].lCorpID = lCorpID; + pSmsData[lMobileIndex].lUserID = lUserID; + if ( bFilt ) //Ҫ˵Ķ + pSmsData[lMobileIndex].lStatus = SEND_STATUS_SUB_FILT; + _tcsncpy( pSmsData[lMobileIndex].szSendNum , strAddNum ,10); //չ + _tcscpy( pSmsData[lMobileIndex].szMobile , szBuf ); + _tcscpy( pSmsData[lMobileIndex].szName , strRecver ); + if ( tTimer.GetStatus() == COleDateTime::valid ) //ʱʱ + { + 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]; //ݵ⸴ǰһ + } + if ( bLongSms ) + { + _stprintf( pSmsData[lMobileIndex].szMsg , _T("%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; //¼ÿλ + + lMobileCount ++; + lMobileAllCount ++; + } + } + lMobileLen = 0; //й¿ʼ + memset(szMobile , 0 , sizeof(szMobile)); + if ( lMobileCount>=lMaxSendCount || i== lLen-1 ) //ÿη50 + { + //ʼͶ + CSendPub::SendPub_Mms Sms={0}; + + Sms.lCorpID = lCorpID; + Sms.lUserID = lUserID; + if ( tTimer.GetStatus() == COleDateTime::valid ) //ʱʱ + { + tTimer.GetAsSystemTime(Sms.tTimer ); + } + _tcscpy(Sms.szIP , strIP); + Sms.lPriority = 0; //SubmitMmsȼ + if ( Sms.lPriority>10 ) + { + if ( bSDK ) + Sms.lSendCount = 2000+Sms.lPriority*500; //ӿڷ͵ģ5000 + else + Sms.lSendCount = 10000+Sms.lPriority*500; //ӿڷ͵ģ5000 + } + + //Sms.lPriority = 0; //SubmitMmsȼ + Sms.lSendCount = lMobileAllCount; //ܶŷڼ㷢 + //Sms.tTimer = pSendData->tTimer; + Sms.bFirstCheckYE = true; //Ԥȼʱ + 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 ) + { + //ΪȡһŵID + for ( int i=0 ; i=0 && pSmsIDIndex[i]0 ) + strMsgID=strMsgID+CString(_T(","))+str; + else + strMsgID = str; + + lMsgIDCount ++; + } + } + } + } + else + { + bSendBreak = true; //ж + 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("Ͷɣύ%d\\n쳣Ϣ:%s") , *pSendCount,strErrMsg); + } + else + { + if ( bSDK ) + m_strSendRet.Format(_T("%d,%s"),lMsgIDCount,strMsgID); + else + m_strSendRet.Format(_T("Ͷɣύ%d") , *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"))) + { + //ÿһҪ40 + 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: ڴʵִ + + 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("Excelļʧܣ%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);//ȡͷ + + TCHAR szReqHead[128]={0}; + CString strRet; + //strcpy( szRet , "ERROR" ); + strRet.Format(_T("ERROR:Len=%d"),lLen-32); + + long lSendCount=0; //ȡҪ͵ֽ + long lReqVer=1; + if ( !_tcsncmp(szReq,REQHEAD1,_tcslen(REQHEAD1)) ) //жǷͷ + { + _tcscpy(szReqHead,REQHEAD1); + lReqVer = 1; //һ + lSendCount = HexToAsciiA(szReq+_tcslen(szReqHead),szReq2); + } + else + if ( !_tcsncmp(szReq,REQHEAD2,_tcslen(REQHEAD2)) ) //жǷͷ + { + _tcscpy(szReqHead,REQHEAD2); + lReqVer = 2; //ڶ + + 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 ) + { + + //ӹܵ + 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); //ɷģʽ + //Ϣͳȥ + tagPipeSend PipeSend={0}; + _tcscpy(PipeSend.szIP , pIPAddr); + PipeSend.lDataLen = lSendCount; + DWORD dwWrite=0; + WriteFile(hPipe, &PipeSend, sizeof(PipeSend), &dwWrite, NULL); + + // + 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ղݣسʱ + { + break; + } + } + //WriteFile(hPipe, szReq2, lSendCount, &dwWrite, NULL); + + //ȡϢ + 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 ) //ܳ + { + if ( ReadFile(hPipe,((char*)&PipeSend)+lRecvLen,sizeof(PipeSend)-lRecvLen,&dwRead,NULL)) //ȡݵij + { + lRecvLen = lRecvLen + dwRead; + if ( lRecvLen == sizeof(PipeSend) ) + { + lRecvAllLen = PipeSend.lDataLen; + if ( lRecvAllLen<=0 ) //յ + { + 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)) //ȡݵij + { + lRecvLen = lRecvLen + dwRead; + if ( lRecvLen == lRecvAllLen ) + { + //ͷ + 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ڽղݣʱ + if ( ::GetTickCount() - dwTime >35000 ) //35ڽղݣʱ + { + 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; + + + //ȡ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; +} diff --git a/Sms.h b/Sms.h new file mode 100644 index 0000000..6dccd34 --- /dev/null +++ b/Sms.h @@ -0,0 +1,76 @@ +// Sms.h : CSms + +#pragma once +#include "resource.h" // + + + +#include "MobsetWeb_i.h" + + + +#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA) +#error "Windows CE ƽ̨(粻ṩȫ DCOM ֵ֧ Windows Mobile ƽ̨)޷ȷֵ֧߳ COM 󡣶 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA ǿ ATL ִ֧߳ COM ʵֲʹ䵥߳ COM ʵ֡rgs ļе߳ģѱΪFreeԭǸģǷ DCOM Windows CE ƽֵ̨֧Ψһ߳ģ͡" +#endif + +using namespace ATL; + + +// CSms + +class ATL_NO_VTABLE CSms : + public CComObjectRootEx, + public CComCoClass, + public IDispatchImpl +{ +public: + CString m_strSendRet; + CAdoConnection m_AdoConnection; +public: + CSms() + { + } + void GetCurrentPath(TCHAR *pPath); + +DECLARE_REGISTRY_RESOURCEID(IDR_SMS) + + +BEGIN_COM_MAP(CSms) + COM_INTERFACE_ENTRY(ISms) + COM_INTERFACE_ENTRY(IDispatch) +END_COM_MAP() + + + + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() + { + return S_OK; + } + + void FinalRelease() + { + } + +public: + + + + STDMETHOD(CheckPasswd)(BSTR User, BSTR Passwd, BSTR Encrypt, LONG Purview, LONG* pRet); + STDMETHOD(CheckPasswd2)(LONG CorpID,BSTR User, BSTR Passwd, BSTR TimeStamp, BSTR Encrypt, LONG Purview, LONG* pRet); + STDMETHOD(GetPasswd)(BSTR User, BSTR Passwd, BSTR* pRet); + STDMETHOD(DePasswd)(BSTR User, BSTR Passwd, BSTR* pRet); + STDMETHOD(EncSPMS)(BSTR Key, BSTR Src, BSTR* pRet); + STDMETHOD(GetPurview)(LONG PurviewType, LONG* pRet); + STDMETHOD(HasSWTPre)(LONG lSDK, LONG* pRet); + STDMETHOD(isHasPurview)(LONG Purview, LONG AllPurview, LONG* pRet); + STDMETHOD(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); + STDMETHOD(get_SendRet)(BSTR* pVal); + STDMETHOD(put_SendRet)(BSTR newVal); + STDMETHOD(SendSms_Excel)(IDispatch* pAdoConnect, LONG lCorpID, LONG lUserID, LONG lLongSms,LONG lFD, BSTR Timer2, BSTR IP, BSTR ExcelFileName, LONG* lSendCount); + STDMETHOD(CorpSmsHttpReq)(BSTR pReq, BSTR pIPAddr, BSTR pReqVer, BSTR* pRet); + STDMETHOD(CheckPasswd3)(LONG CorpID, BSTR User, BSTR Passwd, BSTR TimeStamp, BSTR Encrypt, LONG Purview, BSTR* pRet); +}; + +OBJECT_ENTRY_AUTO(__uuidof(Sms), CSms) diff --git a/Sms.rgs b/Sms.rgs new file mode 100644 index 0000000..2a5ab08 --- /dev/null +++ b/Sms.rgs @@ -0,0 +1,26 @@ +HKCR +{ + MobsetWeb.Sms.1 = s 'Sms Class' + { + CLSID = s '{A42502DF-7605-4D99-9F32-FFE224DF5571}' + } + MobsetWeb.Sms = s 'Sms Class' + { + CurVer = s 'MobsetWeb.Sms.1' + } + NoRemove CLSID + { + ForceRemove {A42502DF-7605-4D99-9F32-FFE224DF5571} = s 'Sms Class' + { + ProgID = s 'MobsetWeb.Sms.1' + VersionIndependentProgID = s 'MobsetWeb.Sms' + ForceRemove Programmable + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + TypeLib = s '{926542BC-66DD-4977-8850-E29198DDE624}' + Version = s '1.0' + } + } +} diff --git a/XYSerup.xml b/XYSerup.xml new file mode 100644 index 0000000..9a08198 --- /dev/null +++ b/XYSerup.xml @@ -0,0 +1,11 @@ + + + 1 + + 61.144.122.66,1444 + WebInfoDB + WebInfo_lu + lu61443 + 5 + + \ No newline at end of file diff --git a/dllmain.cpp b/dllmain.cpp new file mode 100644 index 0000000..589d6d0 --- /dev/null +++ b/dllmain.cpp @@ -0,0 +1,39 @@ +// dllmain.cpp : DllMain ʵ֡ + +#include "stdafx.h" +#include "resource.h" +#include "MobsetWeb_i.h" +#include "dllmain.h" +#include "xdlldata.h" + +CMobsetWebModule _AtlModule; + +class CMobsetWebApp : public CWinApp +{ +public: + +// д + virtual BOOL InitInstance(); + virtual int ExitInstance(); + + DECLARE_MESSAGE_MAP() +}; + +BEGIN_MESSAGE_MAP(CMobsetWebApp, CWinApp) +END_MESSAGE_MAP() + +CMobsetWebApp theApp; + +BOOL CMobsetWebApp::InitInstance() +{ +#ifdef _MERGE_PROXYSTUB + if (!PrxDllMain(m_hInstance, DLL_PROCESS_ATTACH, NULL)) + return FALSE; +#endif + return CWinApp::InitInstance(); +} + +int CMobsetWebApp::ExitInstance() +{ + return CWinApp::ExitInstance(); +} diff --git a/dllmain.h b/dllmain.h new file mode 100644 index 0000000..6a188c0 --- /dev/null +++ b/dllmain.h @@ -0,0 +1,10 @@ +// dllmain.h : ģ + +class CMobsetWebModule : public ATL::CAtlDllModuleT< CMobsetWebModule > +{ +public : + DECLARE_LIBID(LIBID_MobsetWebLib) + DECLARE_REGISTRY_APPID_RESOURCEID(IDR_MOBSETWEB, "{5404DFF5-7C6C-424E-9ADE-1C5B775C22D7}") +}; + +extern class CMobsetWebModule _AtlModule; diff --git a/resource.h b/resource.h new file mode 100644 index 0000000000000000000000000000000000000000..73e2a9058711fd2eecec623eeafaf7c43aa18de1 GIT binary patch literal 1084 zcmb7@TTg>P5QWdPiT{DbM-yvnVtuWJhiZWadeJ9hFPNI9CQ!V@_}A5Mftn^(#7tm! zhS@V`&kUa*4K?(JdGZy>mZJfWm+w4v)x!(*jveZN+=eWHVmPBS`Wq1qxn8=FV$xek4SVi_!ujIJYndY&LCVZKaoq)3C zWY(h`&!Cx#7R+s!N8BgiZdcr?1CGO&de+n__8W2lvJ37dH5?6L<*=`h+^j?n!47Mp z?bbA$&vWFhG8Xq<=q2xw(L1IS8G4(ZJ>}iXh^BZk8Yiqqy=PXV_yhYHx#_pkR>^xw zet~D9>j1VxjZnOo&ry%6V|Lf5V(*+-SDXpR?U3zrwy#_C4SBn$>f?tcN>Ov$Owg=x91orA0AEW`f!!XY=pQ`Jdvw{ue>okfi_s literal 0 HcmV?d00001 diff --git a/stdafx.cpp b/stdafx.cpp new file mode 100644 index 0000000..b4f22d1 --- /dev/null +++ b/stdafx.cpp @@ -0,0 +1,5 @@ +// stdafx.cpp : ֻ׼ļԴļ +// MobsetWeb.pch ΪԤͷ +// stdafx.obj ԤϢ + +#include "stdafx.h" diff --git a/stdafx.h b/stdafx.h new file mode 100644 index 0000000..1b95bdd --- /dev/null +++ b/stdafx.h @@ -0,0 +1,64 @@ +// stdafx.h : ׼ϵͳļİļ +// Ǿʹõĵ +// ضĿİļ + +#pragma once + +#ifndef STRICT +#define STRICT +#endif + +/* +#define WINVER 0x0501 +#define _WIN32_WINNT 0x0501 +#define _WIN32_WINDOWS 0x0501 +*/ + +#include "targetver.h" + +#define _ATL_APARTMENT_THREADED + +#define _ATL_NO_AUTOMATIC_NAMESPACE + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // ijЩ CString 캯ʽ + +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_NON_CONFORMING_SWPRINTFS + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC Զ +#endif // _AFX_NO_OLE_SUPPORT + +#define ATL_NO_ASSERT_ON_DESTROY_NONEXISTENT_WINDOW + +#include "resource.h" +#include +#include +#include + +#include "..\public\des\Des.h" +#include "..\public\CorpSms.h" +#include "..\public\ado\Ado.h" +#include "..\public\LuTool.h" + + +typedef struct _tagPipeSend{ + int lDataLen; + TCHAR szIP[32]; + TCHAR szTemp[256]; +}tagPipeSend; + + +//#define SMSCENTER_DGSB //ݸ籣汾 \ No newline at end of file diff --git a/targetver.h b/targetver.h new file mode 100644 index 0000000..7a7d2c8 --- /dev/null +++ b/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// SDKDDKVer.h õ߰汾 Windows ƽ̨ + +// ҪΪǰ Windows ƽ̨Ӧó WinSDKVer.h +// WIN32_WINNT ΪҪֵ֧ƽ̨Ȼٰ SDKDDKVer.h + +#include diff --git a/xdlldata.c b/xdlldata.c new file mode 100644 index 0000000..3cee71f --- /dev/null +++ b/xdlldata.c @@ -0,0 +1,18 @@ +// dlldata.c İװ + +#ifdef _MERGE_PROXYSTUB // ϲ(stub) DLL + +#define REGISTER_PROXY_DLL //DllRegisterServer + +#define _WIN32_WINNT 0x0500 // WinNT 4.0 װ DCOM Win95 +#define USE_STUBLESS_PROXY //ʹ MIDL /Oicf ʱ + +#pragma comment(lib, "rpcns4.lib") +#pragma comment(lib, "rpcrt4.lib") + +#define ENTRY_PREFIX Prx + +#include "dlldata.c" +#include "MobsetWeb_p.c" + +#endif //_MERGE_PROXYSTUB diff --git a/xdlldata.h b/xdlldata.h new file mode 100644 index 0000000..89313c5 --- /dev/null +++ b/xdlldata.h @@ -0,0 +1,15 @@ +#pragma once + +#ifdef _MERGE_PROXYSTUB + +extern "C" +{ +BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, + LPVOID lpReserved); +STDAPI PrxDllCanUnloadNow(void); +STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv); +STDAPI PrxDllRegisterServer(void); +STDAPI PrxDllUnregisterServer(void); +} + +#endif diff --git a/调试方法.txt b/调试方法.txt new file mode 100644 index 0000000..34d041c --- /dev/null +++ b/调试方法.txt @@ -0,0 +1,5 @@ +ȷǰʹõMobsetWeb/DebugµעDLLļ + +Vs 2017ԡ˵ӵ̡ѡСʾûĽ̡ѡСw3wp.exe + +ص㣺ӵѡ񡱱롰