|
|
// RefDial.h : Declaration of the CRefDial
#ifndef __REFDIAL_H_
#define __REFDIAL_H_
#include "rnaapi.h"
#include "import.h"
#include "inshdlr.h"
#include "obcomglb.h"
#include "ispcsv.h"
#include "ispdata.h"
// Defines used for Dialing
#define MAX_EXIT_RETRIES 10
#define MAX_RETIES 3
#define MAX_RASENTRYNAME 126
#define MAX_STRING 256 //used by ErrorMsg1 in mt.cpp
#define MAX_VERSION_LEN 40
#define szLoginKey L"Software\\Microsoft\\MOS\\Connection"
#define szCurrentComDev L"CurrentCommDev"
#define szTollFree L"OlRegPhone"
#define CCD_BUFFER_SIZE 255
#define szSignupConnectoidName L"MSN Signup Connection"
#define szSignupDeviceKey L"SignupCommDevice"
#define KEYVALUE_SIGNUPID L"iSignUp"
#define RASENTRYVALUENAME L"RasEntryName"
#define GATHERINFOVALUENAME L"UserInfo"
#define INFFILE_USER_SECTION L"User"
#define INFFILE_PASSWORD L"Password"
#define NULLSZ L""
typedef DWORD (WINAPI *PFNRASGETCONNECTSTATUS)(HRASCONN, LPRASCONNSTATUS);
static const WCHAR cszBrandingSection[] = L"Branding"; static const WCHAR cszBrandingFlags[] = L"Flags";
static const WCHAR cszSupportSection[] = L"Support"; static const WCHAR cszSupportNumber[] = L"SupportPhoneNumber";
static const WCHAR cszLoggingSection[] = L"Logging"; static const WCHAR cszStartURL[] = L"StartURL"; static const WCHAR cszEndURL[] = L"EndURL";
typedef struct ISPLIST { void* pElement; int uElem; ISPLIST* pNext; } ISPLIST;
class RNAAPI; class CISPImport; class CObCommunicationManager; /////////////////////////////////////////////////////////////////////////////
// CRefDial
class CRefDial { public:
CRefDial(); CRefDial::~CRefDial(); friend DWORD WINAPI DownloadThreadInit(LPVOID lpv);
public:
virtual HRESULT SetupForDialing(UINT nType, BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, DWORD dwAppMode, DWORD dwMigISPIdx, LPCWSTR szRasDeviceName); virtual HRESULT DoConnect(BOOL *pbRetVal) ; virtual HRESULT DoHangup() ; virtual HRESULT GetDialPhoneNumber(BSTR *pVal); virtual HRESULT PutDialPhoneNumber(BSTR newVal); virtual HRESULT SetDialAlternative(BOOL bVal); virtual HRESULT GetDialErrorMsg(BSTR *pVal); virtual HRESULT GetSupportNumber(BSTR *pVal); virtual HRESULT RemoveConnectoid(BOOL *pbRetVal); virtual HRESULT ReadPhoneBook(LPGATHERINFO lpGatherInfo, PSUGGESTINFO pSuggestInfo); virtual HRESULT get_SignupURL(BSTR * pVal); virtual HRESULT get_ReconnectURL(BSTR * pVal); virtual HRESULT CheckPhoneBook(BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, BOOL *pbRetVal); virtual HRESULT GetConnectionType(DWORD * pdwVal); virtual HRESULT DoOfferDownload(BOOL *pbRetVal); virtual HRESULT FormReferralServerURL(BOOL * pbRetVal); virtual HRESULT OnDownloadEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL* bHandled); virtual HRESULT GetISPList(BSTR* pbstrISPList); virtual HRESULT Set_SelectISP(UINT nVal); virtual HRESULT Set_ConnectionMode(UINT nVal); virtual HRESULT Get_ConnectionMode(UINT *pnVal); virtual HRESULT DownloadISPOffer(BOOL *pbVal, BSTR *pVal); virtual HRESULT ProcessSignedPID(BOOL * pbRetVal); virtual HRESULT get_SignedPID(BSTR * pVal); virtual HRESULT get_ISDNAutoConfigURL(BSTR *pVal); virtual HRESULT get_AutoConfigURL(BSTR *pVal); virtual HRESULT get_ISPName(BSTR *pVal); virtual HRESULT RemoveDownloadDir() ; virtual HRESULT PostRegData(DWORD dwSrvType, LPWSTR szPath); virtual HRESULT CheckStayConnected(BSTR bstrISPFile, BOOL *pbVal); virtual HRESULT Connect(UINT nType, BSTR bstrISPFile, DWORD dwCountry, BSTR bstrAreaCode, DWORD dwFlag, DWORD dwAppMode); virtual HRESULT CheckOnlineStatus(BOOL *pbVal); virtual HRESULT GetPhoneBookNumber(BSTR *pVal); BOOL CrackUrl(const WCHAR* lpszUrlIn, WCHAR* lpszHostOut, WCHAR* lpszActionOut, INTERNET_PORT* lpnHostPort, BOOL* lpfSecure); BOOL ParseISPInfo(HWND hDlg, WCHAR *pszCSVFileName, BOOL bCheckDupe);
// Dialing service functions
HRESULT GetDisplayableNumber(); HRESULT Dial(); BOOL FShouldRetry(HRESULT hrErr);
DWORD ReadConnectionInformation(void); DWORD FillGatherInfoStruct(LPGATHERINFO lpGatherInfo); HRESULT CreateEntryFromDUNFile(LPWSTR pszDunFile); HRESULT SetupForRASDialing(LPGATHERINFO lpGatherInfo, HINSTANCE hPHBKDll, LPDWORD lpdwPhoneBook, PSUGGESTINFO pSuggestInfo, WCHAR *pszConnectoid, BOOL FAR *bConnectiodCreated); HRESULT SetupConnectoid(PSUGGESTINFO pSuggestInfo, int irc, WCHAR *pszConnectoid, DWORD dwSize, BOOL * pbSuccess); HRESULT MyRasGetEntryProperties(LPWSTR lpszPhonebookFile, LPWSTR lpszPhonebookEntry, LPRASENTRY *lplpRasEntryBuff, LPDWORD lpdwRasEntryBuffSize, LPRASDEVINFO *lplpRasDevInfoBuff, LPDWORD lpdwRasDevInfoBuffSize); static void CALLBACK RasDialFunc( HRASCONN hRas, UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError, DWORD dwErrorEx); BOOL get_QueryString(WCHAR* szTemp, DWORD dwSize);
DWORD DialThreadInit(LPVOID pdata); DWORD ConnectionMonitorThread(LPVOID pdata); void TerminateConnMonitorThread(); HRESULT RasGetConnectStatus(BOOL *pVal); void CleanISPList(); void DeleteDirectory(LPCWSTR szDirName); HRESULT SetupForAutoDial(BOOL bEnabled, BSTR bstrUserSection);
// Dialing service members
UINT m_unRasDialMsg; DWORD m_dwTapiDev; HRASCONN m_hrasconn; WCHAR m_szConnectoid[RAS_MaxEntryName+1]; DWORD m_dwThreadID; HINSTANCE m_hRasDll; FARPROC m_fpRasDial; FARPROC m_fpRasGetEntryDialParams; LPGATHERINFO m_pGI; WCHAR m_szUrl[INTERNET_MAX_URL_LENGTH]; // Download thread
HANDLE m_hThread; HANDLE m_hDialThread; HANDLE m_hConnMonThread; HANDLE m_hConnectionTerminate; HANDLE m_hEventError;
DWORD_PTR m_dwDownLoad; // Download thread
HLINEAPP m_hLineApp; DWORD m_dwAPIVersion; LPWSTR m_pszDisplayable; LPWSTR m_pszOriginalDisplayable; RNAAPI *m_pcRNA; WCHAR m_szPhoneNumber[256]; BOOL m_bDialAsIs; BOOL m_bDialCustom; UINT m_uiRetry; WCHAR m_szISPFile[MAX_PATH]; WCHAR m_szCurrentDUNFile[MAX_PATH]; WCHAR m_szLastDUNFile[MAX_PATH]; WCHAR m_szEntryName[RAS_MaxEntryName+1]; WCHAR m_szISPSupportNumber[RAS_MaxAreaCode + RAS_MaxPhoneNumber +1];
BOOL m_bDownloadHasBeenCanceled; BOOL m_bDisconnect; BOOL m_bFromPhoneBook; BOOL m_bDialAlternative;
LPGATHERINFO m_lpGatherInfo; //
// Used for Phone book look-up
//
SUGGESTINFO m_SuggestInfo;
CISPImport m_ISPImport; // Import an ISP file
CINSHandler m_InsHandler;
int m_RasStatusID; int m_DownloadStatusID;
WCHAR m_szRefServerURL[INTERNET_MAX_URL_LENGTH]; WCHAR m_szRegServerName[INTERNET_MAX_URL_LENGTH]; INTERNET_PORT m_nRegServerPort; BOOL m_fSecureRegServer; WCHAR m_szRegFormAction[INTERNET_MAX_URL_LENGTH]; LPRASENTRY m_reflpRasEntryBuff; LPRASDEVINFO m_reflpRasDevInfoBuff; DWORD m_dwRASErr; DWORD m_dwCnType; WCHAR* m_pszISPList; DWORD m_dwNumOfAutoConfigOffers; ISPLIST* m_pCSVList; BOOL m_bUserInitiateHangup; UINT m_unSelectedISP;
protected: CRITICAL_SECTION m_csMyCriticalSection; BOOL m_bTryAgain; BOOL m_bQuitWizard; BOOL m_bUserPickNumber; BOOL m_bRedial; HRESULT m_hrDisplayableNumber;
BSTR m_bstrPromoCode; BSTR m_bstrProductCode; WCHAR m_szOEM[MAX_OEMNAME]; BSTR m_bstrSignedPID; BSTR m_bstrSupportNumber; BSTR m_bstrLoggingStartUrl; BSTR m_bstrLoggingEndUrl;
long m_lAllOffers; DWORD m_dwCountryCode;
long m_lBrandingFlags; long m_lCurrentModem; // Version of the wizard HTML. Sent to RefServer
DWORD m_dwWizardVersion; WCHAR m_szPID[(MAX_DIGITAL_PID * 2) + 1]; long m_PhoneNumberEnumidx;
private: BOOL IsDBCSString( CHAR *sz ); void GetISPFileSettings(LPWSTR lpszFile); void CleanupAutodial(); BOOL m_bModemOverride; DWORD m_dwConnectionType; DWORD m_dwAppMode; DWORD m_bDial; CISPCSV* m_pSelectedISPInfo; CICWISPData* m_pISPData; BOOL m_bAutodialModeSaved; BOOL m_bCleanupAutodial; DWORD m_dwOrigAutodialMode;
};
#endif //__REFDIAL_H_
|