00001
00002
00003
00004
00005
00006 #include "fsInternetSession.h"
00007
00008 fsInternetSession::fsInternetSession()
00009 {
00010 m_hSession = NULL;
00011 m_strProxyUser = "";
00012 m_strProxyPassword = "";
00013 }
00014
00015 fsInternetSession::~fsInternetSession()
00016 {
00017 CloseHandle ();
00018 }
00019
00020 fsInternetResult fsInternetSession::Create(LPCSTR pszAgent, fsInternetAccessType accType, LPCSTR pszProxy)
00021 {
00022 CloseHandle ();
00023
00024 DWORD dwAccessType;
00025
00026 switch (accType)
00027 {
00028 case IAT_NOPROXY:
00029 m_strProxy = "";
00030 dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
00031 break;
00032
00033 case IAT_PRECONFIGPROXY:
00034 m_strProxy = "Internet Explorer";
00035 dwAccessType = INTERNET_OPEN_TYPE_PRECONFIG;
00036 break;
00037
00038 case IAT_MANUALPROXY:
00039 dwAccessType = INTERNET_OPEN_TYPE_PROXY;
00040 if (pszProxy == NULL || *pszProxy == 0)
00041 return IR_INVALIDPARAM;
00042 m_strProxy = pszProxy;
00043 break;
00044
00045 default:
00046 return IR_INVALIDPARAM;
00047 }
00048
00049 m_strUserAgent = pszAgent;
00050
00051 m_hSession = InternetOpen (pszAgent, dwAccessType, pszProxy,
00052 dwAccessType == INTERNET_OPEN_TYPE_PROXY ? "<local>" : NULL, 0);
00053
00054 if (m_hSession == NULL)
00055 return fsWinInetErrorToIR ();
00056
00057
00058 BOOL bDisable = TRUE;
00059 InternetSetOption (m_hSession, INTERNET_OPTION_DISABLE_AUTODIAL, &bDisable, sizeof (bDisable));
00060
00061 return IR_SUCCESS;
00062 }
00063
00064 HINTERNET fsInternetSession::GetHandle()
00065 {
00066 return m_hSession;
00067 }
00068
00069 void fsInternetSession::SetTimeout(UINT uTimeout)
00070 {
00071 if (m_hSession == NULL)
00072 return;
00073
00074 InternetSetOption (m_hSession, INTERNET_OPTION_RECEIVE_TIMEOUT, &uTimeout, sizeof (uTimeout));
00075 InternetSetOption (m_hSession, INTERNET_OPTION_SEND_TIMEOUT, &uTimeout, sizeof (uTimeout));
00076 InternetSetOption (m_hSession, INTERNET_OPTION_CONNECT_TIMEOUT, &uTimeout, sizeof (uTimeout));
00077 }
00078
00079 void fsInternetSession::SetProxyAuth(LPCSTR pszUser, LPCSTR pszPassword)
00080 {
00081 m_strProxyUser = pszUser;
00082 m_strProxyPassword = pszPassword;
00083 }
00084
00085 fsInternetResult fsInternetSession::ApplyProxyAuth(HINTERNET hInetHandle)
00086 {
00087 if (m_strProxyUser.Length () == 0)
00088 return IR_SUCCESS;
00089
00090 if (!InternetSetOption (hInetHandle, INTERNET_OPTION_PROXY_USERNAME,
00091 (LPVOID) m_strProxyUser, m_strProxyUser.Length ()+1))
00092 return fsWinInetErrorToIR ();
00093
00094 if (!InternetSetOption (hInetHandle, INTERNET_OPTION_PROXY_PASSWORD,
00095 (LPVOID) m_strProxyPassword, m_strProxyPassword.Length ()+1))
00096 return fsWinInetErrorToIR ();
00097
00098 return IR_SUCCESS;
00099 }
00100
00101 void fsInternetSession::CloseHandle()
00102 {
00103 if (m_hSession)
00104 {
00105 InternetCloseHandle (m_hSession);
00106 m_hSession = NULL;
00107 }
00108 }
00109
00110 void fsInternetSession::InitializeWinInet()
00111 {
00112 ULONG ul = 500;
00113 InternetSetOption (NULL, INTERNET_OPTION_MAX_CONNS_PER_SERVER, &ul, sizeof (ul));
00114 InternetSetOption (NULL, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, &ul, sizeof (ul));
00115
00116
00117 }
00118
00119 LPCSTR fsInternetSession::get_UserAgent()
00120 {
00121 return m_strUserAgent;
00122 }
00123
00124 void fsInternetSession::get_Proxy(LPCSTR &pszProxyName, LPCSTR &pszProxyUser, LPCSTR &pszProxyPwd)
00125 {
00126 pszProxyName = m_strProxy;
00127 pszProxyUser = m_strProxyUser;
00128 pszProxyPwd = m_strProxyPassword;
00129 }