Ticket #1795: filezilla-3.3.0.1-proxy-password.patch

File filezilla-3.3.0.1-proxy-password.patch, 46.1 KB (added by Stefan G., 11 years ago)
  • docs/fzdefaults.xml.example

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/docs/fzdefaults.xml.example ./docs/fzdefaults.xml.example
    old new  
    5858      If the "Disable update check" setting is set to 1, the capability to
    5959      check for new FileZilla versions will be completely disabled.
    6060
     61    Always ask for proxy password
     62
     63      If the "Always ask for proxy password" setting is set to 1, the user will
     64      always be asked for a proxy password. It will never be saved in any file.
     65
    6166-->
    6267
    6368<FileZilla3>
     
    6570      <Setting name="Config Location">$SOMEDIR/filezilla/</Setting>
    6671      <Setting name="Kiosk mode">0</Setting>
    6772      <Setting name="Disable update check">0</Setting>
     73      <Setting name="Always ask for proxy password">0</Setting>
    6874    </Settings>
    6975    <Servers>
    7076        <Server>
  • locales/de.po

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/locales/de.po ./locales/de.po
    old new  
    1414"Content-Transfer-Encoding: 8bit\n"
    1515"Plural-Forms: nplurals=2; plural=n != 1;\n"
    1616
     17#: resources.h:130
     18msgid "\"Cancel\" will keep the current password(s)."
     19msgstr "\"Abbrechen\" wird das jeweilige momentane Proxy-Passwort beibehalten."
     20
     21
    1722#: ../../locales/../src/interface/statuslinectrl.cpp:56
    1823#: ../../locales/../src/interface/statuslinectrl.cpp:153
    1924msgid "%H:%M:%S elapsed"
     
    14591464msgid "As tab in the transfer queue pane"
    14601465msgstr "Als Tab in der Warteschlangenansicht"
    14611466
     1467#: resources.h:762
     1468msgid "Ask for \"FTP proxy\" password"
     1469msgstr "Nach dem FTP-Proxy-Passwort fragen"
     1470
     1471#: resources.h:780
     1472msgid "Ask for \"Generic proxy\" password"
     1473msgstr "Nach dem allgemeinen Proxy-Passwort fragen"
     1474
    14621475#: resources.h:253 resources.h:263 resources.h:806 resources.h:815
    14631476msgid "Ask for action"
    14641477msgstr "Aktion erfragen"
     
    68256838msgid "Themes"
    68266839msgstr "Designs"
    68276840
     6841#: resources.h:129
     6842msgid ""
     6843"There was an error during the login process.\n"
     6844"Please retype the password(s) for the next try."
     6845msgstr ""
     6846"Ein Fehler ist während dem Loginvorgang aufgetreten.\n"
     6847"Bitte geben Sie das jeweilige Proxy-Passwort erneut ein."
     6848
     6849
    68286850#: ../../locales/../src/interface/filter.cpp:447
    68296851msgid "This filter set cannot be removed."
    68306852msgstr "Dieser Filtersatz kann nicht entfernt werden."
     
    74727494msgstr ""
    74737495"Verwenden Sie ein 'x', um die ursprünglichen Berechtigungen beizubehalten."
    74747496
     7497#: ../../locales/../src/interface/loginmanager.cpp:248
     7498msgid ""
     7499"You can't change the proxy settings while there are active connections!\n"
     7500"\n"
     7501"Should all connections be closed? (\"No\" discards the new settings!)"
     7502msgstr "Sie können die Proxy-Einstellungen nicht ändern, während Verbindungen aktiv sind!\n"
     7503"\n"
     7504"Sollen alle Verbindungen getrennt werden? (\"Nein\" verwirft die Änderungen!)"
     7505
    74757506#: ../../locales/../src/interface/import.cpp:29
    74767507msgid "You cannot import settings from FileZilla's own settings directory."
    74777508msgstr ""
  • src/engine/ControlSocket.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/engine/ControlSocket.cpp ./src/engine/ControlSocket.cpp
    old new  
    11171117        int res = m_pProxyBackend->Handshake((enum CProxySocket::ProxyType)proxy_type,
    11181118                                             m_pCurrentServer->GetHost(), m_pCurrentServer->GetPort(),
    11191119                                              m_pEngine->GetOptions()->GetOption(OPTION_PROXY_USER),
    1120                                               m_pEngine->GetOptions()->GetOption(OPTION_PROXY_PASS));
     1120                                              m_pEngine->GetOptions()->GetOption(OPTION_PROXY_ASKED_PASS));
    11211121
    11221122        if (res != EINPROGRESS)
    11231123        {
  • src/engine/ftpcontrolsocket.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/engine/ftpcontrolsocket.cpp ./src/engine/ftpcontrolsocket.cpp
    old new  
    521521            pData->loginSequence.push_back(cmd);
    522522            cmd.optional = true;
    523523            cmd.hide_arguments = true;
    524             cmd.command = _T("PASS ") + m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_PASS);
     524            cmd.command = _T("PASS ") + m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_ASKED_PASS);
    525525            pData->loginSequence.push_back(cmd);
    526526        }
    527527        // User@host
     
    553553            pData->loginSequence.push_back(cmd);
    554554            cmd.optional = true;
    555555            cmd.hide_arguments = true;
    556             cmd.command = _T("PASS ") + m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_PASS);
     556            cmd.command = _T("PASS ") + m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_ASKED_PASS);
    557557            pData->loginSequence.push_back(cmd);
    558558        }
    559559
     
    587587    else if (pData->ftp_proxy_type == 4)
    588588    {
    589589        wxString proxyUser = m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_USER);
    590         wxString proxyPass = m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_PASS);
     590        wxString proxyPass = m_pEngine->GetOptions()->GetOption(OPTION_FTP_PROXY_ASKED_PASS);
    591591        wxString host = server.FormatHost();
    592592        wxString user = server.GetUser();
    593593        wxString account = server.GetAccount();
  • src/engine/sftpcontrolsocket.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/engine/sftpcontrolsocket.cpp ./src/engine/sftpcontrolsocket.cpp
    old new  
    561561
    562562            wxString show = cmd;
    563563
    564             wxString pass = m_pEngine->GetOptions()->GetOption(OPTION_PROXY_PASS);
     564            wxString pass = m_pEngine->GetOptions()->GetOption(OPTION_PROXY_ASKED_PASS);
    565565            if (pass != _T(""))
    566566            {
    567567                cmd += _T(" \"") + pass + _T("\"");
  • src/include/optionsbase.h

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/include/optionsbase.h ./src/include/optionsbase.h
    old new  
    5252    OPTION_FTP_PROXY_TYPE,
    5353    OPTION_FTP_PROXY_HOST,
    5454    OPTION_FTP_PROXY_USER,
     55    OPTION_FTP_PROXY_ASK_PASS,
     56    OPTION_FTP_PROXY_ASKED_PASS,
    5557    OPTION_FTP_PROXY_PASS,
    5658    OPTION_FTP_PROXY_CUSTOMLOGINSEQUENCE,
    5759
     
    6163    OPTION_PROXY_HOST,
    6264    OPTION_PROXY_PORT,
    6365    OPTION_PROXY_USER,
     66    OPTION_PROXY_ASK_PASS,
     67    OPTION_PROXY_ASKED_PASS,
    6468    OPTION_PROXY_PASS,
    6569
    6670    OPTION_LOGGING_FILE,
  • src/interface/Mainfrm.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/Mainfrm.cpp ./src/interface/Mainfrm.cpp
    old new  
    36773677    if (!pState)
    36783678        return false;
    36793679
     3680    if(!server.GetBypassProxy())
     3681        CLoginManager::Get().GetProxyPassword();
     3682
    36803683    if (pState->IsRemoteConnected() || !pState->IsRemoteIdle())
    36813684    {
    36823685        wxDialogEx dlg;
  • src/interface/Options.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/Options.cpp ./src/interface/Options.cpp
    old new  
    5959    { "FTP Proxy type", number, _T("0"), false },
    6060    { "FTP Proxy host", string, _T(""), false },
    6161    { "FTP Proxy user", string, _T(""), false },
     62    { "FTP Proxy ask password", number, _T("1"), false },
     63    { "FTP Proxy asked password", string, _T(""), true },
    6264    { "FTP Proxy password", string, _T(""), false },
    6365    { "FTP Proxy login sequence", string, _T(""), false },
    6466    { "SFTP keyfiles", string, _T(""), false },
     
    6668    { "Proxy host", string, _T(""), false },
    6769    { "Proxy port", number, _T("0"), false },
    6870    { "Proxy user", string, _T(""), false },
     71    { "Proxy ask password", number, _T("1"), false },
     72    { "Proxy asked password", string, _T(""), true },
    6973    { "Proxy password", string, _T(""), false },
    7074    { "Logging file", string, _T(""), false },
    7175    { "Logging filesize limit", number, _T("10"), false },
     
    162166{
    163167    { _T("Config Location"), string, _T(""), 0 },
    164168    { _T("Kiosk mode"), number, _T(""), 0 },
    165     { _T("Disable update check"), number, _T(""), 0 }
     169    { _T("Disable update check"), number, _T(""), 0 },
     170    { _T("Always ask for proxy password"), number, _T(""), 0 }
    166171};
    167172
    168173BEGIN_EVENT_TABLE(COptions, wxEvtHandler)
  • src/interface/Options.h

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/Options.h ./src/interface/Options.h
    old new  
    8989    DEFAULT_SETTINGSDIR,
    9090    DEFAULT_KIOSKMODE,
    9191    DEFAULT_DISABLEUPDATECHECK,
     92    DEFAULT_ASKPROXYPASS,
    9293
    9394    // Has to be last element
    9495    DEFAULTS_NUM
  • src/interface/loginmanager.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/loginmanager.cpp ./src/interface/loginmanager.cpp
    old new  
    11#include "FileZilla.h"
    22#include "loginmanager.h"
    33#include "filezillaapp.h"
     4#include "Options.h"
     5#include "state.h"
     6#include "wx/statline.h"
    47
    58CLoginManager CLoginManager::m_theLoginManager;
    6 
    79bool CLoginManager::GetPassword(CServer &server, bool silent, wxString name /*=_T("")*/, wxString challenge /*=_T("")*/)
    810{
    911    wxASSERT(!silent || server.GetLogonType() == ASK || server.GetLogonType() == INTERACTIVE);
     
    124126
    125127void CLoginManager::CachedPasswordFailed(const CServer& server)
    126128{
     129    readProxyPass = !ActiveProxyConnections(&server);
     130    readFtpProxyPass = readProxyPass;
     131    GetProxyPassword(true);
     132
    127133    if (server.GetLogonType() != ASK)
    128134        return;
    129135   
     
    140146        return;
    141147    }
    142148}
     149
     150
     151bool CLoginManager::ActiveProxyConnections(const CServer *server)
     152{
     153    const std::vector<CState*> *allStates = CContextManager::Get()->GetAllStates();
     154    bool active = false;
     155    for (std::vector<CState*>::const_iterator iter = allStates->begin(); iter != allStates->end(); iter++)
     156    {
     157        if((*iter)->GetServer() && !((*iter)->GetServer()->GetBypassProxy()))
     158        {
     159            if(server == NULL || (*iter)->GetServer() != server)
     160            {
     161                active = true;
     162                break;
     163            }
     164        }
     165    }
     166
     167    return active;
     168}
     169
     170
     171void CLoginManager::GetProxyPassword(bool onError)
     172{
     173    if(readProxyPass || readFtpProxyPass)
     174    {
     175        bool askGenericProxyPass    = ( readProxyPass    && ( COptions::Get()->GetDefaultVal(DEFAULT_ASKPROXYPASS) != 0  || COptions::Get()->GetOptionVal(OPTION_PROXY_ASK_PASS    ) != 0 ) && COptions::Get()->GetOptionVal(OPTION_PROXY_TYPE    ) != 0);
     176        bool askFtpProxyPass        = ( readFtpProxyPass && ( COptions::Get()->GetDefaultVal(DEFAULT_ASKPROXYPASS) != 0  || COptions::Get()->GetOptionVal(OPTION_FTP_PROXY_ASK_PASS) != 0 ) && COptions::Get()->GetOptionVal(OPTION_FTP_PROXY_TYPE) != 0);
     177
     178        if(!askGenericProxyPass )
     179        {
     180            COptions::Get()->SetOption(OPTION_PROXY_ASKED_PASS, COptions::Get()->GetOptionVal(OPTION_PROXY_PASS));
     181        }
     182        if(!askFtpProxyPass)
     183        {
     184            COptions::Get()->SetOption(OPTION_FTP_PROXY_ASKED_PASS, COptions::Get()->GetOptionVal(OPTION_FTP_PROXY_PASS));
     185        }
     186
     187        if(!askGenericProxyPass && !askFtpProxyPass)
     188        {
     189            // nothing to do for us - leave
     190            return;
     191        }
     192
     193        wxDialog pwdDlg;
     194        wxXmlResource::Get()->LoadDialog(&pwdDlg, wxGetApp().GetTopWindow(), _T("ID_ENTER_PROXY_PASSWORD"));
     195
     196        if(!askGenericProxyPass)
     197        {
     198            XRCCTRL(pwdDlg, "ID_GENERIC_LABEL", wxStaticText)->Hide();
     199            XRCCTRL(pwdDlg, "ID_GENERIC_PASSWORD_LABEL", wxStaticText)->Hide();
     200            XRCCTRL(pwdDlg, "ID_GENERIC_PASSWORD", wxTextCtrl)->Hide();
     201        }
     202
     203        if(!askFtpProxyPass)
     204        {
     205            XRCCTRL(pwdDlg, "ID_FTP_LABEL", wxStaticText)->Hide();
     206            XRCCTRL(pwdDlg, "ID_FTP_PASSWORD_LABEL", wxStaticText)->Hide();
     207            XRCCTRL(pwdDlg, "ID_FTP_PASSWORD", wxTextCtrl)->Hide();
     208        }
     209
     210        if(!onError)
     211        {
     212            XRCCTRL(pwdDlg, "ID_ERROR_MSG_LABEL", wxStaticText)->Hide();
     213            XRCCTRL(pwdDlg, "ID_ERROR_MSG_LINE", wxStaticLine)->Hide();
     214        }
     215
     216        XRCCTRL(pwdDlg, "wxID_OK", wxButton)->SetId(wxID_OK);
     217        XRCCTRL(pwdDlg, "wxID_CANCEL", wxButton)->SetId(wxID_CANCEL);
     218        pwdDlg.GetSizer()->Fit(&pwdDlg);
     219        pwdDlg.GetSizer()->SetSizeHints(&pwdDlg);
     220
     221        if (pwdDlg.ShowModal() == wxID_OK)
     222        {
     223            if(askGenericProxyPass)
     224            {
     225                wxString genericPass;
     226                genericPass = XRCCTRL(pwdDlg, "ID_GENERIC_PASSWORD", wxTextCtrl)->GetValue();
     227                COptions::Get()->SetOption(OPTION_PROXY_ASKED_PASS, genericPass);
     228            }
     229
     230            if(askFtpProxyPass)
     231            {
     232                wxString ftpPass;
     233                ftpPass = XRCCTRL(pwdDlg, "ID_FTP_PASSWORD", wxTextCtrl)->GetValue();
     234                COptions::Get()->SetOption(OPTION_FTP_PROXY_ASKED_PASS, ftpPass);
     235            }
     236        }
     237
     238        readProxyPass = false;
     239        readFtpProxyPass = false;
     240
     241    }
     242}
     243
     244bool CLoginManager::ResetProxyPassword(int type)
     245{
     246    if(ActiveProxyConnections())
     247    {
     248        int answer = wxMessageBox(_("You can't change the proxy settings while there are active connections!\n\nShould all connections be closed? (\"No\" discards the new settings!)"), _("Confirm"), wxYES_NO | wxICON_QUESTION, wxGetApp().GetTopWindow());
     249        if (answer == wxYES)
     250        {
     251            const std::vector<CState*> *allStates = CContextManager::Get()->GetAllStates();
     252            for (std::vector<CState*>::const_iterator iter = allStates->begin(); iter != allStates->end(); iter++)
     253            {
     254                if (*iter)
     255                    (*iter)->Disconnect();
     256            }
     257
     258            if(type == 0) readProxyPass = true;
     259            else if(type == 1) readFtpProxyPass = true;
     260            else return false;
     261
     262            GetProxyPassword();
     263            return true;
     264        }
     265    }
     266    else
     267    {
     268        if(type == 0) readProxyPass = true;
     269        else if(type == 1) readFtpProxyPass = true;
     270        else return false;
     271
     272        return true;
     273    }
     274
     275    return false;
     276}
  • src/interface/loginmanager.h

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/loginmanager.h ./src/interface/loginmanager.h
    old new  
    55// behaviour. These are:
    66// - Password dialog for servers with ASK or INTERACTIVE logontype
    77// - Storage of passwords for ASK servers for duration of current session
     8// - Password dialog for proxies with ASK logontype
    89
    910class CLoginManager
    1011{
     
    1213    static CLoginManager& Get() { return m_theLoginManager; }
    1314
    1415    bool GetPassword(CServer& server, bool silent, wxString name = _T(""), wxString challenge = _T(""));
    15    
     16    void GetProxyPassword(bool onError = false);
     17    bool ResetProxyPassword(int type);
    1618    void CachedPasswordFailed(const CServer& server);
    1719
    1820protected:
     21    CLoginManager() { readProxyPass = true; readFtpProxyPass = true; }
     22    bool readProxyPass;
     23    bool readFtpProxyPass;
     24    bool ActiveProxyConnections(const CServer *server = NULL);
     25
    1926    bool DisplayDialog(CServer& server, wxString name, wxString challenge);
    2027
    2128    static CLoginManager m_theLoginManager;
  • src/interface/resources/dialogs.xrc

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/resources/dialogs.xrc ./src/interface/resources/dialogs.xrc
    old new  
    14131413      </object>
    14141414    </object>
    14151415  </object>
     1416    <object class="wxDialog" name="ID_ENTER_PROXY_PASSWORD">
     1417        <title>Enter password</title>
     1418        <object class="wxBoxSizer">
     1419            <orient>wxVERTICAL</orient>
     1420            <object class="sizeritem">
     1421                <object class="wxStaticText" name="ID_ERROR_MSG_LABEL">
     1422                    <label>There was an error during the login process.&#x0A;Please retype the password(s) for the next try.</label>
     1423                </object>
     1424                <flag>wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL</flag>
     1425                <border>5</border>
     1426            </object>
     1427            <object class="sizeritem">
     1428                <object class="wxStaticLine" name="ID_ERROR_MSG_LINE">
     1429                    <size>220,-1</size>
     1430                </object>
     1431                <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
     1432                <border>2</border>
     1433            </object>
     1434            <object class="sizeritem">
     1435                <object class="wxStaticText" name="ID_INFO_CANCEL_LABEL">
     1436                    <label>&quot;Cancel&quot; will keep the current password(s).</label>
     1437                </object>
     1438                <flag>wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL</flag>
     1439                <border>5</border>
     1440            </object>
     1441            <object class="sizeritem">
     1442                <object class="wxStaticText" name="ID_GENERIC_LABEL">
     1443                    <label>Generic proxy</label>
     1444                </object>
     1445                <flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1446                <border>5</border>
     1447            </object>
     1448            <object class="sizeritem">
     1449                <object class="wxFlexGridSizer">
     1450                    <cols>2</cols>
     1451                    <vgap>5</vgap>
     1452                    <hgap>5</hgap>
     1453                    <object class="sizeritem">
     1454                        <object class="wxStaticText" name="ID_GENERIC_PASSWORD_LABEL">
     1455                            <label>Password:</label>
     1456                        </object>
     1457                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
     1458                    </object>
     1459                    <object class="sizeritem">
     1460                        <object class="wxTextCtrl" name="ID_GENERIC_PASSWORD">
     1461                            <size>170,-1</size>
     1462                            <style>wxTE_PASSWORD</style>
     1463                        </object>
     1464                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
     1465                    </object>
     1466                </object>
     1467                <flag>wxALL|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1468                <border>5</border>
     1469            </object>
     1470            <object class="sizeritem">
     1471                <object class="wxStaticText" name="ID_FTP_LABEL">
     1472                    <label>FTP Proxy</label>
     1473                </object>
     1474                <flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1475                <border>5</border>
     1476            </object>
     1477            <object class="sizeritem">
     1478                <object class="wxFlexGridSizer">
     1479                    <cols>2</cols>
     1480                    <vgap>5</vgap>
     1481                    <hgap>5</hgap>
     1482                    <object class="sizeritem">
     1483                        <object class="wxStaticText" name="ID_FTP_PASSWORD_LABEL">
     1484                            <label>Password:</label>
     1485                        </object>
     1486                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
     1487                    </object>
     1488                    <object class="sizeritem">
     1489                        <object class="wxTextCtrl" name="ID_FTP_PASSWORD">
     1490                            <size>170,-1</size>
     1491                            <style>wxTE_PASSWORD</style>
     1492                        </object>
     1493                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
     1494                    </object>
     1495                </object>
     1496                <flag>wxALL|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1497                <border>5</border>
     1498            </object>
     1499            <object class="sizeritem">
     1500                <object class="wxBoxSizer">
     1501                    <object class="sizeritem">
     1502                        <object class="wxButton" name="wxID_OK">
     1503                            <label>&amp;OK</label>
     1504                            <default>1</default>
     1505                        </object>
     1506                        <flag>wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1507                        <border>5</border>
     1508                    </object>
     1509                    <object class="sizeritem">
     1510                        <object class="wxButton" name="wxID_CANCEL">
     1511                            <label>&amp;Cancel</label>
     1512                        </object>
     1513                        <flag>wxALL|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
     1514                        <border>5</border>
     1515                    </object>
     1516                </object>
     1517                <flag>wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL</flag>
     1518            </object>
     1519        </object>
     1520    </object>
    14161521  <object class="wxDialog" name="ID_INPUTDIALOG">
    14171522    <object class="wxBoxSizer">
    14181523      <orient>wxVERTICAL</orient>
  • src/interface/resources/settings.xrc

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/resources/settings.xrc ./src/interface/resources/settings.xrc
    old new  
    444444      <object class="sizeritem">
    445445        <object class="wxStaticBoxSizer">
    446446          <label>FTP Proxy</label>
    447           <orient>wxHORIZONTAL</orient>
    448447          <object class="sizeritem">
    449448            <object class="wxFlexGridSizer">
    450449              <cols>1</cols>
    451450              <vgap>5</vgap>
     451                            <growablecols>0</growablecols>
     452                            <growablerows>6</growablerows>
    452453              <object class="sizeritem">
    453                 <object class="wxStaticText">
     454                                <object class="wxStaticText" name="ID_STATICTEXT1">
    454455                  <label>Type of FTP Proxy:</label>
    455456                </object>
     457                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    456458              </object>
    457459              <object class="sizeritem">
    458460                <object class="wxRadioButton" name="ID_PROXYTYPE_NONE">
    459461                  <label>&amp;None</label>
    460462                </object>
     463                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    461464              </object>
    462465              <object class="sizeritem">
    463466                <object class="wxRadioButton" name="ID_PROXYTYPE_USER">
    464467                  <label>USER@&amp;HOST</label>
    465468                </object>
     469                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    466470              </object>
    467471              <object class="sizeritem">
    468472                <object class="wxRadioButton" name="ID_PROXYTYPE_SITE">
    469473                  <label>&amp;SITE</label>
    470474                </object>
     475                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    471476              </object>
    472477              <object class="sizeritem">
    473478                <object class="wxRadioButton" name="ID_PROXYTYPE_OPEN">
    474479                  <label>&amp;OPEN</label>
    475480                </object>
     481                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    476482              </object>
    477483              <object class="sizeritem">
    478484                <object class="wxRadioButton" name="ID_PROXYTYPE_CUSTOM">
    479485                  <label>Cus&amp;tom</label>
    480486                </object>
     487                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    481488              </object>
    482489              <object class="sizeritem">
    483490                <object class="wxBoxSizer">
     
    486493                    <object class="wxTextCtrl" name="ID_LOGINSEQUENCE">
    487494                      <style>wxTE_MULTILINE</style>
    488495                    </object>
     496                                        <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    489497                    <option>1</option>
    490                     <flag>wxGROW</flag>
    491498                  </object>
    492499                  <object class="sizeritem">
    493                     <object class="wxStaticText">
     500                                        <object class="wxStaticText" name="ID_STATICTEXT2">
    494501                      <label>Format specifications:</label>
    495502                    </object>
     503                                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    496504                  </object>
    497505                  <object class="sizeritem">
    498506                    <object class="wxBoxSizer">
    499                       <orient>wxHORIZONTAL</orient>
    500507                      <object class="sizeritem">
    501                         <object class="wxStaticText">
     508                                                <object class="wxStaticText" name="ID_STATICTEXT3">
    502509                          <label>%h - Host</label>
    503510                        </object>
     511                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    504512                      </object>
    505513                      <object class="spacer">
     514                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    506515                        <size>20,0</size>
    507516                      </object>
    508517                      <object class="sizeritem">
    509                         <object class="wxStaticText">
     518                                                <object class="wxStaticText" name="ID_STATICTEXT4">
    510519                          <label>%u - Username</label>
    511520                        </object>
     521                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    512522                      </object>
    513523                      <object class="spacer">
     524                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    514525                        <size>20,0</size>
    515526                      </object>
    516527                      <object class="sizeritem">
    517                         <object class="wxStaticText">
     528                                                <object class="wxStaticText" name="ID_STATICTEXT5">
    518529                          <label>%p - Password</label>
    519530                        </object>
     531                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    520532                      </object>
    521533                    </object>
     534                                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    522535                  </object>
    523536                  <object class="sizeritem">
    524                     <object class="wxStaticText">
     537                                        <object class="wxStaticText" name="ID_STATICTEXT6">
    525538                      <label>%a - Account (Lines containing this will be omitted if not using Account logontype)</label>
    526539                    </object>
     540                                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    527541                  </object>
    528542                  <object class="sizeritem">
    529543                    <object class="wxBoxSizer">
    530                       <orient>wxHORIZONTAL</orient>
    531544                      <object class="sizeritem">
    532                         <object class="wxStaticText">
     545                                                <object class="wxStaticText" name="ID_STATICTEXT7">
    533546                          <label>%s - Proxy user</label>
    534547                        </object>
     548                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    535549                      </object>
    536550                      <object class="spacer">
     551                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    537552                        <size>20,0</size>
    538553                      </object>
    539554                      <object class="sizeritem">
    540                         <object class="wxStaticText">
     555                                                <object class="wxStaticText" name="ID_STATICTEXT8">
    541556                          <label>%w - Proxy password</label>
    542557                        </object>
     558                                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    543559                      </object>
    544560                    </object>
     561                                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    545562                  </object>
    546563                </object>
    547                 <option>1</option>
    548                 <flag>wxLEFT|wxGROW</flag>
     564                                <flag>wxLEFT|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    549565                <border>17</border>
     566                                <option>1</option>
    550567              </object>
    551568              <object class="sizeritem">
    552                 <object class="wxFlexGridSizer">
    553                   <cols>5</cols>
     569                                <object class="wxBoxSizer">
    554570                  <object class="sizeritem">
    555                     <object class="wxStaticText">
     571                                        <object class="wxStaticText" name="ID_STATICTEXT9">
    556572                      <label>P&amp;roxy host:</label>
     573                                            <size>85,-1</size>
    557574                    </object>
    558                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     575                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    559576                  </object>
    560577                  <object class="sizeritem">
    561                     <object class="wxTextCtrl" name="ID_PROXY_HOST"/>
    562                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     578                                        <object class="wxTextCtrl" name="ID_PROXY_HOST" />
     579                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    563580                  </object>
    564581                  <object class="spacer">
     582                                        <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    565583                    <size>10,0</size>
    566584                  </object>
    567585                  <object class="sizeritem">
    568                     <object class="wxStaticText">
     586                                        <object class="wxStaticText" name="ID_STATICTEXT10">
    569587                      <label>Proxy &amp;user:</label>
     588                                            <size>85,-1</size>
    570589                    </object>
    571                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     590                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    572591                  </object>
    573592                  <object class="sizeritem">
    574                     <object class="wxTextCtrl" name="ID_PROXY_USER"/>
    575                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     593                                        <object class="wxTextCtrl" name="ID_PROXY_USER" />
     594                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
     595                                    </object>
     596                                </object>
     597                                <flag>wxALL|wxALIGN_LEFT|wxALIGN_TOP</flag>
    576598                  </object>
    577599                  <object class="sizeritem">
    578                     <object class="wxStaticText">
     600                                <object class="wxBoxSizer">
     601                                    <object class="sizeritem">
     602                                        <object class="wxStaticText" name="ID_STATICTEXT11">
    579603                      <label>Pro&amp;xy password:</label>
     604                                            <size>85,-1</size>
    580605                    </object>
    581                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     606                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    582607                  </object>
    583608                  <object class="sizeritem">
    584609                    <object class="wxTextCtrl" name="ID_PROXY_PASS">
    585610                      <style>wxTE_PASSWORD</style>
    586611                    </object>
    587                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     612                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    588613                  </object>
    589                   <vgap>5</vgap>
    590                   <hgap>5</hgap>
     614                                    <object class="spacer">
     615                                        <flag>wxALIGN_LEFT|wxALIGN_BOTTOM</flag>
     616                                        <size>10,0</size>
     617                                    </object>
     618                                    <object class="sizeritem">
     619                                        <object class="wxCheckBox" name="ID_PROXY_ASK_PASS">
     620                                            <label>Ask for &quot;FTP proxy&quot; password</label>
    591621                </object>
     622                                        <flag>wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
     623                                    </object>
     624                                </object>
     625                                <flag>wxALL|wxALIGN_LEFT|wxALIGN_TOP</flag>
    592626              </object>
    593               <growablecols>0</growablecols>
    594627              <object class="sizeritem">
    595                 <object class="wxStaticText">
     628                                <object class="wxStaticText" name="ID_STATICTEXT12">
    596629                  <label>Note: This only works with plain, unencrypted FTP connections.</label>
    597630                </object>
     631                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    598632              </object>
    599               <growablerows>6</growablerows>
    600633            </object>
    601             <option>1</option>
    602             <flag>wxBOTTOM|wxLEFT|wxRIGHT|wxGROW</flag>
     634                        <flag>wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    603635            <border>5</border>
     636                        <option>1</option>
    604637          </object>
    605638        </object>
     639                <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    606640        <option>1</option>
    607         <flag>wxGROW</flag>
    608641      </object>
    609642    </object>
    610643  </object>
     
    686719      <object class="sizeritem">
    687720        <object class="wxStaticBoxSizer">
    688721          <label>Generic proxy</label>
    689           <orient>wxHORIZONTAL</orient>
    690722          <object class="sizeritem">
    691723            <object class="wxFlexGridSizer">
    692724              <cols>1</cols>
    693725              <vgap>5</vgap>
     726                            <growablecols>0</growablecols>
    694727              <object class="sizeritem">
    695                 <object class="wxStaticText">
     728                                <object class="wxStaticText" name="ID_STATICTEXT1">
    696729                  <label>Type of generic proxy:</label>
    697730                </object>
     731                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    698732              </object>
    699733              <object class="sizeritem">
    700734                <object class="wxRadioButton" name="ID_PROXYTYPE_NONE">
    701735                  <label>&amp;None</label>
    702736                </object>
     737                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    703738              </object>
    704739              <object class="sizeritem">
    705740                <object class="wxRadioButton" name="ID_PROXYTYPE_HTTP">
    706741                  <label>&amp;HTTP/1.1 using CONNECT method</label>
    707742                </object>
     743                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    708744              </object>
    709745              <object class="sizeritem">
    710746                <object class="wxRadioButton" name="ID_PROXYTYPE_SOCKS5">
    711747                  <label>&amp;SOCKS 5</label>
    712748                </object>
     749                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    713750              </object>
    714751              <object class="sizeritem">
    715752                <object class="wxFlexGridSizer">
    716753                  <cols>2</cols>
     754                                    <vgap>5</vgap>
     755                                    <hgap>5</hgap>
     756                                    <growablecols>1</growablecols>
    717757                  <object class="sizeritem">
    718                     <object class="wxStaticText">
     758                                        <object class="wxStaticText" name="ID_STATICTEXT2">
    719759                      <label>P&amp;roxy host:</label>
    720760                    </object>
    721                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     761                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    722762                  </object>
    723763                  <object class="sizeritem">
    724                     <object class="wxTextCtrl" name="ID_PROXY_HOST"/>
    725                     <flag>wxALIGN_CENTRE_VERTICAL|wxGROW</flag>
     764                                        <object class="wxTextCtrl" name="ID_PROXY_HOST" />
     765                                        <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    726766                  </object>
    727767                  <object class="sizeritem">
    728                     <object class="wxStaticText">
     768                                        <object class="wxStaticText" name="ID_STATICTEXT3">
    729769                      <label>Proxy &amp;port:</label>
    730770                    </object>
    731                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     771                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    732772                  </object>
    733773                  <object class="sizeritem">
    734774                    <object class="wxTextCtrl" name="ID_PROXY_PORT">
    735775                      <size>50,-1</size>
    736776                    </object>
    737                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     777                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    738778                  </object>
    739779                  <object class="sizeritem">
    740                     <object class="wxStaticText">
     780                                        <object class="wxStaticText" name="ID_STATICTEXT4">
    741781                      <label>Proxy &amp;user:</label>
    742782                    </object>
    743                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     783                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    744784                  </object>
    745785                  <object class="sizeritem">
    746                     <object class="wxTextCtrl" name="ID_PROXY_USER"/>
    747                     <flag>wxALIGN_CENTRE_VERTICAL|wxGROW</flag>
     786                                        <object class="wxTextCtrl" name="ID_PROXY_USER" />
     787                                        <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    748788                  </object>
    749789                  <object class="sizeritem">
    750                     <object class="wxStaticText">
     790                                        <object class="wxStaticText" name="ID_STATICTEXT5">
    751791                      <label>Pro&amp;xy password:</label>
    752792                    </object>
    753                     <flag>wxALIGN_CENTRE_VERTICAL</flag>
     793                                        <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    754794                  </object>
    755795                  <object class="sizeritem">
    756796                    <object class="wxTextCtrl" name="ID_PROXY_PASS">
    757797                      <style>wxTE_PASSWORD</style>
    758798                    </object>
    759                     <flag>wxALIGN_CENTRE_VERTICAL|wxGROW</flag>
     799                                        <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
    760800                  </object>
    761                   <vgap>5</vgap>
    762                   <hgap>5</hgap>
    763                   <growablecols>1</growablecols>
     801                                    <object class="sizeritem">
     802                                        <object class="wxCheckBox" name="ID_PROXY_ASK_PASS">
     803                                            <label>Ask for &quot;Generic proxy&quot; password</label>
    764804                </object>
    765                 <flag>wxGROW</flag>
     805                                        <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
     806                                    </object>
     807                                </object>
     808                                <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    766809              </object>
    767               <growablecols>0</growablecols>
    768810              <object class="sizeritem">
    769                 <object class="wxStaticText">
     811                                <object class="wxStaticText" name="ID_STATICTEXT6">
    770812                  <label>Note: Using a generic proxy forces passive mode on FTP connections.</label>
    771813                </object>
     814                                <flag>wxALIGN_LEFT|wxALIGN_TOP</flag>
    772815              </object>
    773816            </object>
    774             <option>1</option>
    775             <flag>wxBOTTOM|wxLEFT|wxRIGHT|wxGROW</flag>
     817                        <flag>wxBOTTOM|wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    776818            <border>5</border>
     819                        <option>1</option>
    777820          </object>
    778821        </object>
     822                <flag>wxEXPAND|wxALIGN_LEFT|wxALIGN_TOP</flag>
    779823        <option>1</option>
    780         <flag>wxGROW</flag>
    781824      </object>
    782825    </object>
    783826  </object>
  • src/interface/settings/optionspage_ftpproxy.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/settings/optionspage_ftpproxy.cpp ./src/interface/settings/optionspage_ftpproxy.cpp
    old new  
    44#include "settingsdialog.h"
    55#include "optionspage.h"
    66#include "optionspage_ftpproxy.h"
     7#include "../loginmanager.h"
    78
    89BEGIN_EVENT_TABLE(COptionsPageFtpProxy, COptionsPageFtpProxy::COptionsPage)
    910EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_NONE"), COptionsPageFtpProxy::OnProxyTypeChanged)
     
    1112EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_SITE"), COptionsPageFtpProxy::OnProxyTypeChanged)
    1213EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_OPEN"), COptionsPageFtpProxy::OnProxyTypeChanged)
    1314EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_CUSTOM"), COptionsPageFtpProxy::OnProxyTypeChanged)
     15EVT_CHECKBOX(XRCID("ID_PROXY_ASK_PASS"), COptionsPageFtpProxy::OnProxyAskPassChanged)
    1416EVT_TEXT(XRCID("ID_LOGINSEQUENCE"), COptionsPageFtpProxy::OnLoginSequenceChanged)
    1517END_EVENT_TABLE()
    1618
    1719bool COptionsPageFtpProxy::LoadPage()
    1820{
    1921    bool failure = false;
     22    bool askPass = (m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS) || m_pOptions->GetOptionVal(OPTION_FTP_PROXY_ASK_PASS) != 0);
    2023
    2124    SetTextFromOption(XRCID("ID_PROXY_HOST"), OPTION_FTP_PROXY_HOST, failure);
    2225    SetTextFromOption(XRCID("ID_PROXY_USER"), OPTION_FTP_PROXY_USER, failure);
     26    SetCheck(XRCID("ID_PROXY_ASK_PASS"), askPass, failure);
     27    if(!askPass)
     28    {
    2329    SetTextFromOption(XRCID("ID_PROXY_PASS"), OPTION_FTP_PROXY_PASS, failure);
     30    }
    2431
    2532    int type = m_pOptions->GetOptionVal(OPTION_FTP_PROXY_TYPE);
    2633    switch (type)
     
    4451        break;
    4552    }
    4653
    47     if (!failure)
     54    if (!failure)
     55    {
    4856        SetCtrlState();
     57        SetAskPass();
     58    }
    4959
    5060    return !failure;
    5161}
    5262
    5363bool COptionsPageFtpProxy::SavePage()
    5464{
    55     SetOptionFromText(XRCID("ID_PROXY_HOST"), OPTION_FTP_PROXY_HOST);
    56     SetOptionFromText(XRCID("ID_PROXY_USER"), OPTION_FTP_PROXY_USER);
    57     SetOptionFromText(XRCID("ID_PROXY_PASS"), OPTION_FTP_PROXY_PASS);
     65    int askPass = (m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS) || GetCheck(XRCID("ID_PROXY_ASK_PASS")) ? 1 : 0);
    5866
    5967    int type = 0;
    6068    if (GetRCheck(XRCID("ID_PROXYTYPE_USER")))
     
    6472    else if (GetRCheck(XRCID("ID_PROXYTYPE_OPEN")))
    6573        type = 3;
    6674    else if (GetRCheck(XRCID("ID_PROXYTYPE_CUSTOM")))
    67     {
    68         SetOptionFromText(XRCID("ID_LOGINSEQUENCE"), OPTION_FTP_PROXY_CUSTOMLOGINSEQUENCE);
    6975        type = 4;
     76
     77    if(type != 0 && (
     78       GetText(XRCID("ID_PROXY_HOST")) != m_pOptions->GetOption(OPTION_FTP_PROXY_HOST) ||
     79       GetText(XRCID("ID_PROXY_USER")) != m_pOptions->GetOption(OPTION_FTP_PROXY_USER) ||
     80       ( type == 4 && GetText(XRCID("ID_LOGINSEQUENCE")) != m_pOptions->GetOption(OPTION_FTP_PROXY_CUSTOMLOGINSEQUENCE) ) ||
     81       askPass != m_pOptions->GetOptionVal(OPTION_FTP_PROXY_ASK_PASS) ||
     82       ( askPass == 0 && GetText(XRCID("ID_PROXY_PASS")) != m_pOptions->GetOption(OPTION_FTP_PROXY_PASS)))
     83      )
     84    {
     85        if(!CLoginManager::Get().ResetProxyPassword(1))
     86            return true;
     87
     88    }
     89
     90
     91
     92    SetOptionFromText(XRCID("ID_PROXY_HOST"), OPTION_FTP_PROXY_HOST);
     93    SetOptionFromText(XRCID("ID_PROXY_USER"), OPTION_FTP_PROXY_USER);
     94    m_pOptions->SetOption(OPTION_FTP_PROXY_ASK_PASS, askPass);
     95    if(!askPass)
     96    {
     97        SetOptionFromText(XRCID("ID_PROXY_PASS"), OPTION_FTP_PROXY_PASS);
     98    }
     99    else
     100    {
     101        m_pOptions->SetOption(OPTION_FTP_PROXY_PASS, _T(""));
    70102    }
     103
     104
     105    if(type == 4)
     106        SetOptionFromText(XRCID("ID_LOGINSEQUENCE"), OPTION_FTP_PROXY_CUSTOMLOGINSEQUENCE);
     107   
     108
    71109    m_pOptions->SetOption(OPTION_FTP_PROXY_TYPE, type);
    72110
    73111    return true;
     
    110148        XRCCTRL(*this, "ID_PROXY_HOST", wxTextCtrl)->Enable(false);
    111149        XRCCTRL(*this, "ID_PROXY_USER", wxTextCtrl)->Enable(false);
    112150        XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(false);
     151        XRCCTRL(*this, "ID_PROXY_ASK_PASS", wxCheckBox)->Enable(false);
    113152        return;
    114153    }
    115154
     
    121160
    122161    XRCCTRL(*this, "ID_PROXY_HOST", wxTextCtrl)->Enable(true);
    123162    XRCCTRL(*this, "ID_PROXY_USER", wxTextCtrl)->Enable(true);
    124     XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(true);
     163    //XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(true);
     164    XRCCTRL(*this, "ID_PROXY_ASK_PASS", wxCheckBox)->Enable(true);
     165    SetAskPass();
    125166
    126167    if (XRCCTRL(*this, "ID_PROXYTYPE_CUSTOM", wxRadioButton)->GetValue())
    127168        return;
     
    143184
    144185    pTextCtrl->ChangeValue(loginSequence);
    145186}
     187void COptionsPageFtpProxy::SetAskPass()
     188{
     189    bool defaultAskPass = m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS);
     190    bool askPass = (defaultAskPass || GetCheck(XRCID("ID_PROXY_ASK_PASS")) ? true : false);
     191    XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(!askPass);
     192    if(defaultAskPass)
     193        XRCCTRL(*this, "ID_PROXY_ASK_PASS", wxCheckBox)->Enable(false);
     194}
    146195
    147196void COptionsPageFtpProxy::OnProxyTypeChanged(wxCommandEvent& event)
    148197{
    149198    SetCtrlState();
    150199}
    151200
     201void COptionsPageFtpProxy::OnProxyAskPassChanged(wxCommandEvent& event)
     202{
     203    SetAskPass();
     204}
     205
    152206void COptionsPageFtpProxy::OnLoginSequenceChanged(wxCommandEvent& event)
    153207{
    154208    XRCCTRL(*this, "ID_PROXYTYPE_CUSTOM", wxRadioButton)->SetValue(true);
  • src/interface/settings/optionspage_ftpproxy.h

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/settings/optionspage_ftpproxy.h ./src/interface/settings/optionspage_ftpproxy.h
    old new  
    1212protected:
    1313
    1414    void SetCtrlState();
     15    void SetAskPass();
    1516
    1617    DECLARE_EVENT_TABLE();
    1718    void OnProxyTypeChanged(wxCommandEvent& event);
     19    void OnProxyAskPassChanged(wxCommandEvent& event);
    1820    void OnLoginSequenceChanged(wxCommandEvent& event);
    1921};
    2022
  • src/interface/settings/optionspage_proxy.cpp

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/settings/optionspage_proxy.cpp ./src/interface/settings/optionspage_proxy.cpp
    old new  
    44#include "settingsdialog.h"
    55#include "optionspage.h"
    66#include "optionspage_proxy.h"
     7#include "../loginmanager.h"
    78
    89BEGIN_EVENT_TABLE(COptionsPageProxy, COptionsPageProxy::COptionsPage)
    910EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_NONE"), COptionsPageProxy::OnProxyTypeChanged)
    1011EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_HTTP"), COptionsPageProxy::OnProxyTypeChanged)
    1112EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_SOCKS5"), COptionsPageProxy::OnProxyTypeChanged)
     13EVT_CHECKBOX(XRCID("ID_PROXY_ASK_PASS"), COptionsPageProxy::OnProxyAskPassChanged)
    1214END_EVENT_TABLE()
    1315
    1416bool COptionsPageProxy::LoadPage()
    1517{
    1618    bool failure = false;
     19    bool askPass = (m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS) || m_pOptions->GetOptionVal(OPTION_PROXY_ASK_PASS) != 0);
    1720
    1821    SetTextFromOption(XRCID("ID_PROXY_HOST"), OPTION_PROXY_HOST, failure);
    1922    SetTextFromOption(XRCID("ID_PROXY_PORT"), OPTION_PROXY_PORT, failure);
    2023    SetTextFromOption(XRCID("ID_PROXY_USER"), OPTION_PROXY_USER, failure);
     24    SetCheck(XRCID("ID_PROXY_ASK_PASS"), askPass, failure);
     25    if(!askPass)
     26    {
    2127    SetTextFromOption(XRCID("ID_PROXY_PASS"), OPTION_PROXY_PASS, failure);
     28    }
    2229
    2330    int type = m_pOptions->GetOptionVal(OPTION_PROXY_TYPE);
    2431    switch (type)
     
    3542        break;
    3643    }
    3744
    38     if (!failure)
     45    if (!failure)
     46    {
    3947        SetCtrlState();
     48        SetAskPass();
     49    }
    4050
    4151    return !failure;
    4252}
    4353
    4454bool COptionsPageProxy::SavePage()
    4555{
    46     SetOptionFromText(XRCID("ID_PROXY_HOST"), OPTION_PROXY_HOST);
    47     SetOptionFromText(XRCID("ID_PROXY_PORT"), OPTION_PROXY_PORT);
    48     SetOptionFromText(XRCID("ID_PROXY_USER"), OPTION_PROXY_USER);
    49     SetOptionFromText(XRCID("ID_PROXY_PASS"), OPTION_PROXY_PASS);
     56    int askPass = (m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS) || GetCheck(XRCID("ID_PROXY_ASK_PASS")) ? 1 : 0);
     57
    5058
    5159    int type;
    5260    if (GetRCheck(XRCID("ID_PROXYTYPE_HTTP")))
     
    5563        type = 2;
    5664    else
    5765        type = 0;
     66
     67    if(type != 0 && (
     68       GetText(XRCID("ID_PROXY_HOST")) != m_pOptions->GetOption(OPTION_PROXY_HOST) ||
     69       GetText(XRCID("ID_PROXY_PORT")) != m_pOptions->GetOption(OPTION_PROXY_PORT) ||
     70       GetText(XRCID("ID_PROXY_USER")) != m_pOptions->GetOption(OPTION_PROXY_USER) ||
     71       askPass != m_pOptions->GetOption(OPTION_PROXY_ASK_PASS) ||
     72       ( askPass == 0 && GetText(XRCID("ID_PROXY_PASS")) != m_pOptions->GetOption(OPTION_PROXY_PASS)))
     73      )
     74    {
     75        if(!CLoginManager::Get().ResetProxyPassword(0))
     76            return true;
     77    }
     78
     79    SetOptionFromText(XRCID("ID_PROXY_HOST"), OPTION_PROXY_HOST);
     80    SetOptionFromText(XRCID("ID_PROXY_PORT"), OPTION_PROXY_PORT);
     81    SetOptionFromText(XRCID("ID_PROXY_USER"), OPTION_PROXY_USER);
     82    m_pOptions->SetOption(OPTION_PROXY_ASK_PASS, askPass);
     83    if(!askPass)
     84    {
     85        SetOptionFromText(XRCID("ID_PROXY_PASS"), OPTION_PROXY_PASS);
     86    }
     87    else
     88    {
     89        m_pOptions->SetOption(OPTION_PROXY_PASS, _T(""));
     90    }
     91   
     92
    5893    m_pOptions->SetOption(OPTION_PROXY_TYPE, type);
    5994
    6095    return true;
     
    84119    XRCCTRL(*this, "ID_PROXY_HOST", wxTextCtrl)->Enable(enabled);
    85120    XRCCTRL(*this, "ID_PROXY_PORT", wxTextCtrl)->Enable(enabled);
    86121    XRCCTRL(*this, "ID_PROXY_USER", wxTextCtrl)->Enable(enabled);
     122    //XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(enabled);
     123    XRCCTRL(*this, "ID_PROXY_ASK_PASS", wxCheckBox)->Enable(enabled);
     124
     125    if(enabled)
     126    {
     127        SetAskPass();
     128    }
     129    else
     130    {
    87131    XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(enabled);
     132    }
     133
    88134}
     135void COptionsPageProxy::SetAskPass()
     136{
     137    bool defaultAskPass = m_pOptions->GetDefaultVal(DEFAULT_ASKPROXYPASS);
     138    bool askPass = (defaultAskPass || GetCheck(XRCID("ID_PROXY_ASK_PASS")) ? true : false);
     139    XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(!askPass);
     140    if(defaultAskPass)
     141        XRCCTRL(*this, "ID_PROXY_ASK_PASS", wxCheckBox)->Enable(false);
     142}
     143
    89144
    90145void COptionsPageProxy::OnProxyTypeChanged(wxCommandEvent& event)
    91146{
    92147    SetCtrlState();
    93148}
     149
     150void COptionsPageProxy::OnProxyAskPassChanged(wxCommandEvent& event)
     151{
     152    SetAskPass();
     153}
  • src/interface/settings/optionspage_proxy.h

    diff -ub --recursive --new-file ../filezilla-3.3.0.1-org/src/interface/settings/optionspage_proxy.h ./src/interface/settings/optionspage_proxy.h
    old new  
    1212protected:
    1313
    1414    void SetCtrlState();
     15    void SetAskPass();
    1516
    1617    DECLARE_EVENT_TABLE();
    1718    void OnProxyTypeChanged(wxCommandEvent& event);
     19    void OnProxyAskPassChanged(wxCommandEvent& event);
    1820};
    1921
    2022#endif //__OPTIONSPAGE_PROXY_H__