mirror of https://github.com/BOINC/boinc.git
240 lines
9.0 KiB
C++
240 lines
9.0 KiB
C++
// Berkeley Open Infrastructure for Network Computing
|
|
// http://boinc.berkeley.edu
|
|
// Copyright (C) 2005 University of California
|
|
//
|
|
// This is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
// License as published by the Free Software Foundation;
|
|
// either version 2.1 of the License, or (at your option) any later version.
|
|
//
|
|
// This software is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
// See the GNU Lesser General Public License for more details.
|
|
//
|
|
// To view the GNU Lesser General Public License visit
|
|
// http://www.gnu.org/copyleft/lesser.html
|
|
// or write to the Free Software Foundation, Inc.,
|
|
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "boinc_gui.h"
|
|
#include "wingui_proxydlg.h"
|
|
#include "wingui.h"
|
|
#include "client_state.h"
|
|
#include "proxy.h"
|
|
#include "wingui_proxydlg.h"
|
|
|
|
|
|
// CProxyServerDlg dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CProxyServerDlg, CDialog)
|
|
CProxyServerDlg::CProxyServerDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CProxyServerDlg::IDD, pParent)
|
|
, m_strHTTPProxyServerAddress(_T(""))
|
|
, m_uiHTTPProxyServerPort(80)
|
|
, m_strHTTPProxyServerUsername(_T(""))
|
|
, m_strHTTPProxyServerPassword(_T(""))
|
|
, m_strSOCKSProxyServerAddress(_T(""))
|
|
, m_uiSOCKSProxyServerPort(1080)
|
|
, m_strSOCKSProxyServerUsername(_T(""))
|
|
, m_strSOCKSProxyServerPassword(_T(""))
|
|
{
|
|
}
|
|
|
|
CProxyServerDlg::~CProxyServerDlg()
|
|
{
|
|
}
|
|
|
|
void CProxyServerDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
DDX_Control(pDX, IDC_CHECK_HTTP, m_UseHTTPProxyServerCtrl);
|
|
DDX_Control(pDX, IDC_CHECK_SOCKS, m_UseSOCKSProxyServerCtrl);
|
|
DDX_Control(pDX, IDC_CHECK_HTTP_AUTH, m_UseHTTPProxyAuthenticationCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_HTTP_ADDR, m_HTTPProxyServerAddressCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_HTTP_PORT, m_HTTPProxyServerPortCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_HTTP_NAME, m_HTTPProxyServerUsernameCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_HTTP_PASS, m_HTTPProxyServerPasswordCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_SOCKS_ADDR, m_SOCKSProxyServerAddressCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_SOCKS_PORT, m_SOCKSProxyServerPortCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_SOCKS_NAME, m_SOCKSProxyServerUsernameCtrl);
|
|
DDX_Control(pDX, IDC_EDIT_SOCKS_PASS, m_SOCKSProxyServerPasswordCtrl);
|
|
|
|
DDX_Text(pDX, IDC_EDIT_HTTP_ADDR, m_strHTTPProxyServerAddress);
|
|
DDV_MaxChars(pDX, m_strHTTPProxyServerAddress, 256);
|
|
DDX_Text(pDX, IDC_EDIT_HTTP_PORT, m_uiHTTPProxyServerPort);
|
|
DDV_MinMaxUInt(pDX, m_uiHTTPProxyServerPort, 0, 65536);
|
|
DDX_Text(pDX, IDC_EDIT_HTTP_NAME, m_strHTTPProxyServerUsername);
|
|
DDV_MaxChars(pDX, m_strHTTPProxyServerUsername, 256);
|
|
DDX_Text(pDX, IDC_EDIT_HTTP_PASS, m_strHTTPProxyServerPassword);
|
|
DDV_MaxChars(pDX, m_strHTTPProxyServerPassword, 256);
|
|
DDX_Text(pDX, IDC_EDIT_SOCKS_ADDR, m_strSOCKSProxyServerAddress);
|
|
DDV_MaxChars(pDX, m_strSOCKSProxyServerAddress, 256);
|
|
DDX_Text(pDX, IDC_EDIT_SOCKS_PORT, m_uiSOCKSProxyServerPort);
|
|
DDV_MinMaxUInt(pDX, m_uiSOCKSProxyServerPort, 0, 65536);
|
|
DDX_Text(pDX, IDC_EDIT_SOCKS_NAME, m_strSOCKSProxyServerUsername);
|
|
DDV_MaxChars(pDX, m_strSOCKSProxyServerUsername, 256);
|
|
DDX_Text(pDX, IDC_EDIT_SOCKS_PASS, m_strSOCKSProxyServerPassword);
|
|
DDV_MaxChars(pDX, m_strSOCKSProxyServerPassword, 256);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CProxyServerDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_CHECK_HTTP, OnBnClickedUseHTTPProxyServer)
|
|
ON_BN_CLICKED(IDC_CHECK_SOCKS, OnBnClickedUseSOCKSProxyServer)
|
|
ON_BN_CLICKED(IDC_CHECK_HTTP_AUTH, OnBnClickedUseHttpAuth)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// Utility Functions
|
|
|
|
|
|
//////////
|
|
// CProxyServerDlg::LoadLanguage
|
|
// arguments: void
|
|
// returns: void
|
|
// function: loads new captions from language file
|
|
void CProxyServerDlg::LoadLanguage()
|
|
{
|
|
int const static nIDs[] = { IDC_STATIC_PROXY, IDC_STATIC_HTTP, IDC_CHECK_HTTP,
|
|
IDC_STATIC_HTTP_ADDR, IDC_STATIC_HTTP_PORT, IDC_STATIC_SOCKS,
|
|
IDC_CHECK_SOCKS, IDC_STATIC_SOCKS_ADDR, IDC_STATIC_SOCKS_PORT,
|
|
IDC_STATIC_SOCKS_BLANK, IDC_STATIC_SOCKS_NAME, IDC_STATIC_SOCKS_PASS,
|
|
IDOK, IDCANCEL, 0 };
|
|
|
|
UpdateLanguageStrings(this, "DIALOG-PROXY", nIDs);
|
|
}
|
|
|
|
|
|
// CProxyServerDlg message handlers
|
|
|
|
BOOL CProxyServerDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
LoadLanguage();
|
|
|
|
m_strHTTPProxyServerAddress = gstate.proxy_info.http_server_name;
|
|
m_uiHTTPProxyServerPort = gstate.proxy_info.http_server_port;
|
|
m_strHTTPProxyServerUsername = gstate.proxy_info.http_user_name;
|
|
m_strHTTPProxyServerPassword = gstate.proxy_info.http_user_passwd;
|
|
m_strSOCKSProxyServerAddress = gstate.proxy_info.socks_server_name;
|
|
m_uiSOCKSProxyServerPort = gstate.proxy_info.socks_server_port;
|
|
m_strSOCKSProxyServerUsername = gstate.proxy_info.socks5_user_name;
|
|
m_strSOCKSProxyServerPassword = gstate.proxy_info.socks5_user_passwd;
|
|
|
|
if (gstate.proxy_info.use_http_proxy) {
|
|
m_UseHTTPProxyServerCtrl.SetCheck(BST_CHECKED);
|
|
} else {
|
|
m_UseHTTPProxyServerCtrl.SetCheck(BST_UNCHECKED);
|
|
}
|
|
|
|
if (gstate.proxy_info.use_socks_proxy) {
|
|
m_UseSOCKSProxyServerCtrl.SetCheck(BST_CHECKED);
|
|
} else {
|
|
m_UseSOCKSProxyServerCtrl.SetCheck(BST_UNCHECKED);
|
|
}
|
|
|
|
if (gstate.proxy_info.use_http_auth) {
|
|
m_UseHTTPProxyAuthenticationCtrl.SetCheck(BST_CHECKED);
|
|
} else {
|
|
m_UseHTTPProxyAuthenticationCtrl.SetCheck(BST_UNCHECKED);
|
|
}
|
|
|
|
OnBnClickedUseHTTPProxyServer();
|
|
OnBnClickedUseSOCKSProxyServer();
|
|
OnBnClickedUseHttpAuth();
|
|
|
|
UpdateData(FALSE);
|
|
CenterWindow();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
}
|
|
|
|
|
|
void CProxyServerDlg::OnBnClickedUseHTTPProxyServer()
|
|
{
|
|
if ( BST_CHECKED == m_UseHTTPProxyServerCtrl.GetCheck() ) {
|
|
m_HTTPProxyServerAddressCtrl.EnableWindow();
|
|
m_HTTPProxyServerPortCtrl.EnableWindow();
|
|
m_UseHTTPProxyAuthenticationCtrl.EnableWindow();
|
|
CProxyServerDlg::OnBnClickedUseHttpAuth();
|
|
} else {
|
|
m_HTTPProxyServerAddressCtrl.EnableWindow(FALSE);
|
|
m_HTTPProxyServerPortCtrl.EnableWindow(FALSE);
|
|
m_UseHTTPProxyAuthenticationCtrl.EnableWindow(FALSE);
|
|
m_HTTPProxyServerUsernameCtrl.EnableWindow(FALSE);
|
|
m_HTTPProxyServerPasswordCtrl.EnableWindow(FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
void CProxyServerDlg::OnBnClickedUseSOCKSProxyServer()
|
|
{
|
|
if ( BST_CHECKED == m_UseSOCKSProxyServerCtrl.GetCheck() ) {
|
|
m_SOCKSProxyServerAddressCtrl.EnableWindow();
|
|
m_SOCKSProxyServerPortCtrl.EnableWindow();
|
|
m_SOCKSProxyServerUsernameCtrl.EnableWindow();
|
|
m_SOCKSProxyServerPasswordCtrl.EnableWindow();
|
|
} else {
|
|
m_SOCKSProxyServerAddressCtrl.EnableWindow(FALSE);
|
|
m_SOCKSProxyServerPortCtrl.EnableWindow(FALSE);
|
|
m_SOCKSProxyServerUsernameCtrl.EnableWindow(FALSE);
|
|
m_SOCKSProxyServerPasswordCtrl.EnableWindow(FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
void CProxyServerDlg::OnBnClickedUseHttpAuth()
|
|
{
|
|
if ( BST_CHECKED == m_UseHTTPProxyAuthenticationCtrl.GetCheck() ) {
|
|
m_HTTPProxyServerUsernameCtrl.EnableWindow();
|
|
m_HTTPProxyServerPasswordCtrl.EnableWindow();
|
|
} else {
|
|
m_HTTPProxyServerUsernameCtrl.EnableWindow(FALSE);
|
|
m_HTTPProxyServerPasswordCtrl.EnableWindow(FALSE);
|
|
}
|
|
}
|
|
|
|
void CProxyServerDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
gstate.proxy_info.use_http_proxy = (m_UseHTTPProxyServerCtrl.GetCheck() != BST_UNCHECKED);
|
|
safe_strncpy(gstate.proxy_info.http_server_name, m_strHTTPProxyServerAddress.GetBuffer(), sizeof(gstate.proxy_info.http_server_name));
|
|
gstate.proxy_info.http_server_port = m_uiHTTPProxyServerPort;
|
|
|
|
gstate.proxy_info.use_http_auth = (m_UseHTTPProxyAuthenticationCtrl.GetCheck() != BST_UNCHECKED);
|
|
safe_strncpy(gstate.proxy_info.http_user_name, m_strHTTPProxyServerUsername.GetBuffer(), sizeof(gstate.proxy_info.http_user_name));
|
|
safe_strncpy(gstate.proxy_info.http_user_passwd, m_strHTTPProxyServerPassword.GetBuffer(), sizeof(gstate.proxy_info.http_user_passwd));
|
|
|
|
gstate.proxy_info.use_socks_proxy = (m_UseSOCKSProxyServerCtrl.GetCheck() != BST_UNCHECKED);
|
|
safe_strncpy(gstate.proxy_info.socks_server_name, m_strSOCKSProxyServerAddress.GetBuffer(), sizeof(gstate.proxy_info.socks_server_name));
|
|
gstate.proxy_info.socks_server_port = m_uiSOCKSProxyServerPort;
|
|
safe_strncpy(gstate.proxy_info.socks5_user_name, m_strSOCKSProxyServerUsername.GetBuffer(), sizeof(gstate.proxy_info.socks5_user_name));
|
|
safe_strncpy(gstate.proxy_info.socks5_user_passwd, m_strSOCKSProxyServerPassword.GetBuffer(), sizeof(gstate.proxy_info.socks5_user_passwd));
|
|
|
|
m_strHTTPProxyServerAddress.ReleaseBuffer();
|
|
m_strHTTPProxyServerUsername.ReleaseBuffer();
|
|
m_strHTTPProxyServerPassword.ReleaseBuffer();
|
|
m_strSOCKSProxyServerAddress.ReleaseBuffer();
|
|
m_strSOCKSProxyServerUsername.ReleaseBuffer();
|
|
m_strSOCKSProxyServerPassword.ReleaseBuffer();
|
|
|
|
if (m_strSOCKSProxyServerUsername.IsEmpty()) {
|
|
gstate.proxy_info.socks_version = SOCKS_VERSION_4;
|
|
} else {
|
|
gstate.proxy_info.socks_version = SOCKS_VERSION_5;
|
|
}
|
|
|
|
gstate.set_client_state_dirty(_T("CProxyServerDlg::OnOK"));
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
|
|
const char *BOINC_RCSID_0b4dba9b5d = "$Id$";
|