Ticket #7188: sftpcompression.diff

File sftpcompression.diff, 8.7 KB (added by DawnCrow, 7 years ago)

Add option for sftp compression

  • src/interface/resources/dialogs.xrc

     
    12431243                          <flag>wxLEFT|wxRIGHT</flag>
    12441244                          <border>14</border>
    12451245                        </object>
     1246                        <object class="sizeritem">
     1247                          <object class="wxCheckBox" name="ID_COMPRESSION">
     1248                            <label>Enable &amp;compression</label>
     1249                          </object>
     1250                          <flag>wxTOP|wxLEFT|wxRIGHT</flag>
     1251                          <border>5</border>
     1252                        </object>
    12461253                      </object>
    12471254                    </object>
    12481255                  </object>
  • src/interface/sitemanager_dialog.cpp

     
    14111411    else
    14121412        server.m_server.SetBypassProxy(false);
    14131413
     1414    if (XRCCTRL(*this, "ID_COMPRESSION", wxCheckBox)->GetValue())
     1415        server.m_server.SetCompression(true);
     1416    else
     1417        server.m_server.SetCompression(false);
     1418
    14141419    server.m_server.SetName(name);
    14151420
    14161421    return true;
     
    15511556        XRCCTRL(*this, "ID_TRANSFERMODE_DEFAULT", wxRadioButton)->SetValue(true);
    15521557        XRCCTRL(*this, "ID_LIMITMULTIPLE", wxCheckBox)->SetValue(false);
    15531558        XRCCTRL(*this, "ID_MAXMULTIPLE", wxSpinCtrl)->SetValue(1);
     1559        XRCCTRL(*this, "ID_COMPRESSION", wxCheckBox)->SetValue(false);
    15541560
    15551561        XRCCTRL(*this, "ID_CHARSET_AUTO", wxRadioButton)->SetValue(true);
    15561562        XRCCTRL(*this, "ID_ENCODING", wxTextCtrl)->SetValue(_T(""));
     
    16411647            XRCCTRL(*this, "ID_MAXMULTIPLE", wxSpinCtrl)->Enable(false);
    16421648            XRCCTRL(*this, "ID_MAXMULTIPLE", wxSpinCtrl)->SetValue(1);
    16431649        }
     1650        XRCCTRL(*this, "ID_COMPRESSION", wxCheckBox)->SetValue(site_data->m_server.GetCompression());
    16441651
    16451652        switch (site_data->m_server.GetEncodingType())
    16461653        {
     
    17111718void CSiteManagerDialog::OnProtocolSelChanged(wxCommandEvent& event)
    17121719{
    17131720    wxChoice* pProtocol = XRCCTRL(*this, "ID_PROTOCOL", wxChoice);
     1721    wxCheckBox* pCompression = XRCCTRL(*this, "ID_COMPRESSION", wxCheckBox);
    17141722    wxChoice* pEncryption = XRCCTRL(*this, "ID_ENCRYPTION", wxChoice);
    17151723    wxStaticText* pEncryptionDesc = XRCCTRL(*this, "ID_ENCRYPTION_DESC", wxStaticText);
    17161724
     1725    pCompression->Show(pProtocol->GetSelection() != 0);
    17171726    pEncryption->Show(pProtocol->GetSelection() != 1);
    17181727    pEncryptionDesc->Show(pProtocol->GetSelection() != 1);
    17191728}
     
    22912300void CSiteManagerDialog::SetProtocol(ServerProtocol protocol)
    22922301{
    22932302    wxChoice* pProtocol = XRCCTRL(*this, "ID_PROTOCOL", wxChoice);
     2303    wxCheckBox* pCompression = XRCCTRL(*this, "ID_COMPRESSION", wxCheckBox);
    22942304    wxChoice* pEncryption = XRCCTRL(*this, "ID_ENCRYPTION", wxChoice);
    22952305    wxStaticText* pEncryptionDesc = XRCCTRL(*this, "ID_ENCRYPTION_DESC", wxStaticText);
    22962306
    22972307    if (protocol == SFTP)
    22982308    {
     2309        pCompression->Show();
    22992310        pEncryption->Hide();
    23002311        pEncryptionDesc->Hide();
    23012312        pProtocol->SetSelection(1);
     
    23182329            pEncryption->SetSelection(3);
    23192330            break;*/
    23202331        }
     2332        pCompression->Hide();
    23212333        pEncryption->Show();
    23222334        pEncryptionDesc->Show();
    23232335        pProtocol->SetSelection(0);
  • src/interface/queue_storage.cpp

     
    5555        timezone_offset,
    5656        transfer_mode,
    5757        max_connections,
     58        compression,
    5859        encoding,
    5960        bypass_proxy,
    6061        post_login_commands,
     
    7576    { _T("timezone_offset"), integer, 0 },
    7677    { _T("transfer_mode"), text, 0 },
    7778    { _T("max_connections"), integer, 0 },
     79    { _T("compression"), integer, 0 },
    7880    { _T("encoding"), text, 0 },
    7981    { _T("bypass_proxy"), integer, 0 },
    8082    { _T("post_login_commands"), text, 0 },
     
    682684    else
    683685        BindNull(insertServerQuery_, server_table_column_names::post_login_commands);
    684686
     687    if (protocol == SFTP)
     688        Bind(insertServerQuery_, server_table_column_names::compression, server.GetCompression() ? 1 : 0);
     689
    685690    Bind(insertServerQuery_, server_table_column_names::bypass_proxy, server.GetBypassProxy() ? 1 : 0);
    686691    if (!server.GetName().empty())
    687692        Bind(insertServerQuery_, server_table_column_names::name, server.GetName());
     
    948953            return INVALID_DATA;
    949954    }
    950955
     956    if (protocol == SFTP)
     957        server.SetCompression(GetColumnInt(selectServersQuery_, server_table_column_names::compression) == 1 );
    951958
    952959    server.SetBypassProxy(GetColumnInt(selectServersQuery_, server_table_column_names::bypass_proxy) == 1 );
    953960    server.SetName( GetColumnText(selectServersQuery_, server_table_column_names::name) );
  • src/interface/xmlfunctions.cpp

     
    652652            return false;
    653653    }
    654654
     655    if (protocol == SFTP)
     656        server.SetCompression(GetTextElementInt(node, "Compression", false) == 1);
     657
    655658    server.SetBypassProxy(GetTextElementInt(node, "BypassProxy", false) == 1);
    656659    server.SetName(GetTextElement_Trimmed(node, "Name"));
    657660
     
    737740        }
    738741    }
    739742
     743    if (protocol == SFTP)
     744        AddTextElementRaw(node, "Compression", server.GetCompression() ? "1" : "0");
     745
    740746    AddTextElementRaw(node, "BypassProxy", server.GetBypassProxy() ? "1" : "0");
    741747    const wxString& name = server.GetName();
    742748    if (name != _T(""))
  • src/engine/sftpcontrolsocket.cpp

     
    433433        executable = _T("fzsftp");
    434434    LogMessage(Debug_Verbose, _T("Going to execute %s"), executable.c_str());
    435435
    436     m_pid = wxExecute(executable + _T(" -v"), wxEXEC_ASYNC, m_pProcess);
     436    if (server.GetCompression())
     437        m_pid = wxExecute(executable + _T(" -C -v"), wxEXEC_ASYNC, m_pProcess);
     438    else
     439        m_pid = wxExecute(executable + _T(" -v"), wxEXEC_ASYNC, m_pProcess);
    437440    if (!m_pid)
    438441    {
    439442        LogMessage(Debug_Warning, _T("wxExecute failed"));
  • src/engine/server.cpp

     
    309309    m_maximumMultipleConnections = op.m_maximumMultipleConnections;
    310310    m_encodingType = op.m_encodingType;
    311311    m_customEncoding = op.m_customEncoding;
     312    m_compression = op.m_compression;
    312313    m_postLoginCommands = op.m_postLoginCommands;
    313314    m_bypassProxy = op.m_bypassProxy;
    314315    m_name = op.m_name;
     
    357358        if (m_customEncoding != op.m_customEncoding)
    358359            return false;
    359360    }
     361    if (m_compression != op.m_compression)
     362        return false;
    360363    if (m_postLoginCommands != op.m_postLoginCommands)
    361364        return false;
    362365    if (m_bypassProxy != op.m_bypassProxy)
     
    441444    else if (m_encodingType > op.m_encodingType)
    442445        return false;
    443446
     447    if (m_compression < op.m_compression)
     448        return true;
     449    else if (m_compression > op.m_compression)
     450        return false;
     451
    444452    if (m_encodingType == ENCODING_CUSTOM)
    445453    {
    446454        if (m_customEncoding < op.m_customEncoding)
     
    496504        if (m_customEncoding != op.m_customEncoding)
    497505            return false;
    498506    }
     507    if (m_compression != op.m_compression)
     508        return false;
    499509    if (m_postLoginCommands != op.m_postLoginCommands)
    500510        return false;
    501511    if (m_bypassProxy != op.m_bypassProxy)
     
    685695    m_maximumMultipleConnections = 0;
    686696    m_encodingType = ENCODING_AUTO;
    687697    m_customEncoding = _T("");
     698    m_compression = false;
    688699    m_bypassProxy = false;
    689700}
    690701
     
    699710    return true;
    700711}
    701712
     713void CServer::SetCompression(bool val)
     714{
     715  m_compression = val;
     716}
     717
    702718bool CServer::SetCustomEncoding(const wxString& encoding)
    703719{
    704720    if (encoding == _T(""))
     
    715731    return m_encodingType;
    716732}
    717733
     734bool CServer::GetCompression() const
     735{
     736    return m_compression;
     737}
     738
    718739wxString CServer::GetCustomEncoding() const
    719740{
    720741    return m_customEncoding;
  • src/include/server.h

     
    111111    wxString FormatServer(const bool always_include_prefix = false) const;
    112112
    113113    bool SetEncodingType(enum CharsetEncoding type, const wxString& encoding = _T(""));
     114    void SetCompression(bool val);
    114115    bool SetCustomEncoding(const wxString& encoding);
    115116    enum CharsetEncoding GetEncodingType() const;
     117    bool GetCompression() const;
    116118    wxString GetCustomEncoding() const;
    117119
    118120    static unsigned int GetDefaultPort(enum ServerProtocol protocol);
     
    163165    wxString m_name;
    164166
    165167    std::vector<wxString> m_postLoginCommands;
     168    bool m_compression;
    166169    bool m_bypassProxy;
    167170};
    168171