summaryrefslogtreecommitdiff
path: root/protocols/Skype/src/skype_netlib.cpp
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2012-12-28 14:27:17 +0000
committerAlexander Lantsev <aunsane@gmail.com>2012-12-28 14:27:17 +0000
commitf1000598cfdd80dc4dc0eb9bb1a0e3e142137856 (patch)
tree807d47b213577381d36dd0bc608a4ab7b9c9426c /protocols/Skype/src/skype_netlib.cpp
parent564aadb3ff4757c2d5af86dc00f606e96b2c7ae4 (diff)
- code refactoring
- added account registration - temporary disabled chatrooms git-svn-id: http://svn.miranda-ng.org/main/trunk@2869 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Skype/src/skype_netlib.cpp')
-rw-r--r--protocols/Skype/src/skype_netlib.cpp78
1 files changed, 69 insertions, 9 deletions
diff --git a/protocols/Skype/src/skype_netlib.cpp b/protocols/Skype/src/skype_netlib.cpp
index ece518f351..d86845fc45 100644
--- a/protocols/Skype/src/skype_netlib.cpp
+++ b/protocols/Skype/src/skype_netlib.cpp
@@ -1,34 +1,94 @@
#include "skype_proto.h"
+#include "base64/base64.h"
void CSkypeProto::InitNetLib()
{
wchar_t name[128];
- mir_sntprintf(name, SIZEOF(name), TranslateT("%s connection"), this->m_tszUserName);
+ ::mir_sntprintf(name, SIZEOF(name), ::TranslateT("%s connection"), this->m_tszUserName);
NETLIBUSER nlu = {0};
nlu.cbSize = sizeof(nlu);
nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE;
nlu.ptszDescriptiveName = name;
nlu.szSettingsModule = this->m_szModuleName;
- this->hNetlibUser = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu);
+ this->hNetLibUser = (HANDLE)::CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu);
- this->Log("Setting protocol/module name to '%s/%s'", m_szProtoName, m_szModuleName);
+ this->Log(
+ L"Setting protocol/module name to '%s/%s'",
+ ::mir_a2u(this->m_szProtoName),
+ ::mir_a2u(this->m_szModuleName));
}
void CSkypeProto::UninitNetLib()
{
- Netlib_CloseHandle(this->hNetlibUser);
- this->hNetlibUser = NULL;
+ ::Netlib_CloseHandle(this->hNetLibUser);
+ this->hNetLibUser = NULL;
}
-void CSkypeProto::Log(const char* fmt, ...)
+void CSkypeProto::InitProxy()
+{
+ if (this->hNetLibUser)
+ {
+ NETLIBUSERSETTINGS nlus = { sizeof(NETLIBUSERSETTINGS) };
+ ::CallService(MS_NETLIB_GETUSERSETTINGS, (WPARAM)this->hNetLibUser, (LPARAM)&nlus);
+
+ if (nlus.useProxy)
+ {
+ char address[MAX_PATH];
+ ::mir_snprintf(address, MAX_PATH, "%s:%d", nlus.szProxyServer, nlus.wProxyPort);
+
+ switch (nlus.proxyType)
+ {
+ case PROXYTYPE_HTTP:
+ case PROXYTYPE_HTTPS:
+ this->skype->SetInt(SETUPKEY_HTTPS_PROXY_ENABLE, 1);
+ this->skype->SetInt(SETUPKEY_SOCKS_PROXY_ENABLE, 0);
+ this->skype->SetStr(SETUPKEY_HTTPS_PROXY_ADDR, address);
+ if (nlus.useProxyAuth)
+ {
+ char encodedPass[MAX_PATH];
+ Base64::Encode(nlus.szProxyAuthPassword, encodedPass, MAX_PATH);
+
+ this->skype->SetStr(SETUPKEY_HTTPS_PROXY_USER, nlus.szProxyAuthUser);
+ this->skype->SetStr(SETUPKEY_HTTPS_PROXY_PWD, encodedPass);
+ }
+ break;
+
+ case PROXYTYPE_SOCKS4:
+ case PROXYTYPE_SOCKS5:
+ this->skype->SetInt(SETUPKEY_HTTPS_PROXY_ENABLE, 0);
+ this->skype->SetInt(SETUPKEY_SOCKS_PROXY_ENABLE, 1);
+ this->skype->SetStr(SETUPKEY_SOCKS_PROXY_ADDR, address);
+ if (nlus.useProxyAuth)
+ {
+ this->skype->SetStr(SETUPKEY_SOCKS_PROXY_USER, nlus.szProxyAuthUser);
+ this->skype->SetStr(SETUPKEY_SOCKS_PROXY_PWD, nlus.szProxyAuthPassword);
+ }
+ break;
+
+ default:
+ this->skype->Delete(SETUPKEY_HTTPS_PROXY_ENABLE);
+ this->skype->Delete(SETUPKEY_HTTPS_PROXY_ADDR);
+ this->skype->Delete(SETUPKEY_HTTPS_PROXY_USER);
+ this->skype->Delete(SETUPKEY_HTTPS_PROXY_PWD);
+ this->skype->Delete(SETUPKEY_SOCKS_PROXY_ENABLE);
+ this->skype->Delete(SETUPKEY_SOCKS_PROXY_ADDR);
+ this->skype->Delete(SETUPKEY_SOCKS_PROXY_USER);
+ this->skype->Delete(SETUPKEY_SOCKS_PROXY_PWD);
+ break;
+ }
+ }
+ }
+}
+
+void CSkypeProto::Log(const wchar_t* fmt, ...)
{
va_list va;
- char msg[1024];
+ wchar_t msg[1024];
va_start(va, fmt);
- mir_vsnprintf(msg, sizeof(msg), fmt, va);
+ ::mir_vsntprintf(msg, sizeof(msg), fmt, va);
va_end(va);
- CallService(MS_NETLIB_LOG, (WPARAM)this->hNetlibUser, (LPARAM)msg);
+ ::CallService(MS_NETLIB_LOGW, (WPARAM)this->hNetLibUser, (LPARAM)msg);
} \ No newline at end of file