Ticket #1444: PASVPatch.patch

File PASVPatch.patch, 10.8 KB (added by thejcab, 8 years ago)

The patch file. I hope it works, as it's the first patch file I ever created.

  • source/ControlSocket.cpp

    ? source/Debug
    ? source/FileZilla server.aps
    ? source/FileZilla server.clw
    ? source/FileZilla server.ncb
    ? source/FileZilla server.opt
    ? source/FileZilla server.plg
    ? source/Release
    RCS file: /cvsroot/filezilla/FileZilla Server/source/ControlSocket.cpp,v
    retrieving revision 1.10
    diff -u -r1.10 ControlSocket.cpp
     
    372372                                m_transferstatus.socket=0; 
    373373                        } 
    374374                        m_transferstatus.socket=new CTransferSocket; 
    375                         if (!m_transferstatus.socket->Create()) 
    376                         { 
     375                        unsigned int port = 0; 
     376                        CString ip; 
     377                        unsigned int retries = 3; 
     378                        while (retries > 0) { 
     379                                if (COptions::GetOptionVal(OPTION_CUSTOMPASVENABLE)) { 
     380                                        static UINT customPort = 0; 
     381                                        unsigned int minPort = COptions::GetOptionVal(OPTION_CUSTOMPASVMINPORT); 
     382                                        unsigned int maxPort = COptions::GetOptionVal(OPTION_CUSTOMPASVMAXPORT); 
     383                                        if (minPort > maxPort) { 
     384                                                unsigned int temp = minPort; 
     385                                                minPort = maxPort; 
     386                                                maxPort = temp; 
     387                                        } 
     388                                        if (customPort < minPort || customPort > maxPort) { 
     389                                                customPort = minPort; 
     390                                        } 
     391                                        port = customPort; 
     392                                        ip = COptions::GetOption(OPTION_CUSTOMPASVIP); 
     393                                        ++customPort; 
     394                                } else { 
     395                                        //Get the ip of the control socket 
     396                                        unsigned int junkPort; 
     397                                        GetSockName(ip,junkPort); 
     398                                } 
     399                                if (m_transferstatus.socket->Create(port)) 
     400                                { 
     401                                        break; 
     402                                } 
     403                                --retries; 
     404                        } 
     405                        if (retries <= 0) { 
    377406                                delete m_transferstatus.socket; 
    378407                                m_transferstatus.socket=0; 
    379408                                Send("421 Can't create socket"); 
     
    381410                        } 
    382411                        m_transferstatus.socket->Listen(); 
    383412                        m_transferstatus.socket->AsyncSelect(); 
    384                         CString ip,tmp; 
    385                         unsigned int port; 
    386                         //Get the ip of the control socket (the newly created socket would only return 127.0.0.1) 
    387                         GetSockName(ip,port); 
     413                        CString tmp; 
    388414                        //Now retrieve the port 
    389415                        m_transferstatus.socket->GetSockName(tmp,port); 
    390416                        //Reformat the ip 
  • source/FileZilla

    RCS file: /cvsroot/filezilla/FileZilla Server/source/FileZilla server.rc,v
    retrieving revision 1.8
    diff -u -r1.8 FileZilla server.rc
     
    1313#undef APSTUDIO_READONLY_SYMBOLS 
    1414 
    1515///////////////////////////////////////////////////////////////////////////// 
    16 // Deutsch (Deutschland) resources 
     16// German (Germany) resources 
    1717 
    1818#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) 
    1919#ifdef _WIN32 
     
    337337                    IDC_STATIC,13,178,259,16 
    338338END 
    339339 
    340 IDD_OPTIONS_MISC DIALOG DISCARDABLE 0, 0, 286, 208 
     340IDD_OPTIONS_MISC DIALOGEX 0, 0, 286, 208 
    341341STYLE DS_CONTROL | WS_CHILD 
    342342FONT 8, "MS Sans Serif" 
    343343BEGIN 
    344344    CONTROL         "Don't show &passwords in message log", 
    345345                    IDC_OPTIONS_MISC_DONTSHOWPASS,"Button",BS_AUTOCHECKBOX |  
    346346                    WS_TABSTOP,7,7,135,10 
     347    GROUPBOX        "Custom PASV settings",IDC_STATIC,7,21,272,63 
     348    CONTROL         "Enable custom PASV settings", 
     349                    IDC_OPTIONS_MISC_CUSTOM_PASV,"Button",BS_AUTOCHECKBOX |  
     350                    WS_TABSTOP,13,33,109,10 
     351    LTEXT           "IP Address",IDC_STATIC,13,52,35,8 
     352    EDITTEXT        IDC_CUSTOM_PASV_IP,53,48,68,14,ES_AUTOHSCROLL 
     353    LTEXT           "---.---.---.---",IDC_STATIC,125,51,31,8 
     354    LTEXT           "Port range",IDC_STATIC,13,70,34,8 
     355    CTEXT           "-",IDC_STATIC,83,68,8,8 
     356    EDITTEXT        IDC_CUSTOM_PASV_MIN_PORT,53,66,27,14,ES_AUTOHSCROLL 
     357    EDITTEXT        IDC_CUSTOM_PASV_MAX_PORT,94,66,27,14,ES_AUTOHSCROLL 
     358    LTEXT           "(1-65535)",IDC_STATIC,126,69,31,8 
     359    EDITTEXT        IDC_CUSTOM_PASV_TEXT,160,27,113,54,ES_MULTILINE |  
     360                    ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL, 
     361                    WS_EX_STATICEDGE 
    347362END 
    348363 
    349364 
     
    585600    ID_LOCK                 "Lock server, no new connections will be accepted" 
    586601END 
    587602 
    588 #endif    // Deutsch (Deutschland) resources 
     603STRINGTABLE DISCARDABLE  
     604BEGIN 
     605    IDC_CUSTOM_PASV_TEXT    "Use custom PASV settings if you are operating the server from behind a NAT router or a firewall. In that case, the IP address of the server is not accessible from outside of the router, so you should fill in the correct address here. Use the port range to limit the number of ports that will need to be forwarded through the router." 
     606END 
     607 
     608#endif    // German (Germany) resources 
    589609///////////////////////////////////////////////////////////////////////////// 
    590610 
    591611 
    592612///////////////////////////////////////////////////////////////////////////// 
    593 // Englisch (USA) resources 
     613// English (U.S.) resources 
    594614 
    595615#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 
    596616#ifdef _WIN32 
     
    657677END 
    658678#endif    // APSTUDIO_INVOKED 
    659679 
    660 #endif    // Englisch (USA) resources 
     680#endif    // English (U.S.) resources 
    661681///////////////////////////////////////////////////////////////////////////// 
    662682 
    663683 
  • source/Options.cpp

    RCS file: /cvsroot/filezilla/FileZilla Server/source/Options.cpp,v
    retrieving revision 1.2
    diff -u -r1.2 Options.cpp
     
    6262        m_OptionsSecurityPage.m_bOutFxpStrict=GetOptionVal(OPTION_NOOUTFXPSTRICT); 
    6363 
    6464        m_OptionsMiscPage.m_bDontShowPass=GetOptionVal(OPTION_LOGSHOWPASS)?FALSE:TRUE; 
     65        m_OptionsMiscPage.m_bEnableCustomPASV=GetOptionVal(OPTION_CUSTOMPASVENABLE)?TRUE:FALSE; 
     66        m_OptionsMiscPage.m_sCustomPASVString=GetOption(OPTION_CUSTOMPASVIP); 
     67        m_OptionsMiscPage.m_sCustomPASVMinPort=GetOptionVal(OPTION_CUSTOMPASVMINPORT); 
     68        m_OptionsMiscPage.m_sCustomPASVMaxPort=GetOptionVal(OPTION_CUSTOMPASVMAXPORT); 
    6569 
    6670        DoModal(); 
    6771 
     
    7882        SetOption(OPTION_NOOUTFXPSTRICT,m_OptionsSecurityPage.m_bOutFxpStrict); 
    7983 
    8084        SetOption(OPTION_LOGSHOWPASS,m_OptionsMiscPage.m_bDontShowPass?0:1); 
     85        SetOption(OPTION_CUSTOMPASVENABLE,m_OptionsMiscPage.m_bEnableCustomPASV?1:0); 
     86        SetOption(OPTION_CUSTOMPASVIP,m_OptionsMiscPage.m_sCustomPASVString); 
     87        SetOption(OPTION_CUSTOMPASVMINPORT,m_OptionsMiscPage.m_sCustomPASVMinPort); 
     88        SetOption(OPTION_CUSTOMPASVMAXPORT,m_OptionsMiscPage.m_sCustomPASVMaxPort); 
    8189} 
    8290 
    8391BOOL COptions::OnInitDialog()  
     
    9098 
    9199char keyname[][30]={"Serverport",                 "Number of Threads", "Maximum user count","Timeout", 
    92100                                        "No Transfer Timeout","Allow Incoming FXP","Allow outgoing FXP","No Strict In Fxp", 
    93                                         "No Strict Out Fxp",  "Login Timeout",     "Show Pass in log"}; 
     101                                        "No Strict Out Fxp",  "Login Timeout",     "Show Pass in log", 
     102                                        "Custom PASV Enable", "Custom PASV IP", "Custom PASV min port", "Custom PASV max port" }; 
    94103 
    95104void COptions::SetOption(int OptionID,int value) 
    96105{ 
  • source/Options.h

    RCS file: /cvsroot/filezilla/FileZilla Server/source/Options.h,v
    retrieving revision 1.2
    diff -u -r1.2 Options.h
     
    6868#define OPTION_NOOUTFXPSTRICT 9 
    6969#define OPTION_LOGINTIMEOUT 10 
    7070#define OPTION_LOGSHOWPASS 11 
     71#define OPTION_CUSTOMPASVENABLE 12 
     72#define OPTION_CUSTOMPASVIP 13 
     73#define OPTION_CUSTOMPASVMINPORT 14 
     74#define OPTION_CUSTOMPASVMAXPORT 15 
    7175 
    7276 
    7377//{{AFX_INSERT_LOCATION}} 
  • source/OptionsMiscPage.cpp

    RCS file: /cvsroot/filezilla/FileZilla Server/source/OptionsMiscPage.cpp,v
    retrieving revision 1.1
    diff -u -r1.1 OptionsMiscPage.cpp
     
    2121        //{{AFX_DATA_INIT(COptionsMisc) 
    2222        m_bDontShowPass = FALSE; 
    2323        //}}AFX_DATA_INIT 
     24        m_bEnableCustomPASV = FALSE; 
     25        m_sCustomPASVString = ""; 
     26        m_sCustomPASVMinPort = 1024; 
     27        m_sCustomPASVMaxPort = 65535; 
     28        m_sCustomPASVHelp = CString((LPCTSTR)IDC_CUSTOM_PASV_TEXT); 
    2429} 
    2530 
    2631 
     
    3035        //{{AFX_DATA_MAP(COptionsMiscPage) 
    3136        DDX_Check(pDX, IDC_OPTIONS_MISC_DONTSHOWPASS, m_bDontShowPass); 
    3237        //}}AFX_DATA_MAP 
     38        DDX_Check(pDX, IDC_OPTIONS_MISC_CUSTOM_PASV, m_bEnableCustomPASV); 
     39        DDX_Text(pDX, IDC_CUSTOM_PASV_IP, m_sCustomPASVString); 
     40        DDX_Text(pDX, IDC_CUSTOM_PASV_MIN_PORT, m_sCustomPASVMinPort); 
     41        DDX_Text(pDX, IDC_CUSTOM_PASV_MAX_PORT, m_sCustomPASVMaxPort); 
     42        DDX_Text(pDX, IDC_CUSTOM_PASV_TEXT, m_sCustomPASVHelp); 
    3343} 
    3444 
    3545 
  • source/OptionsMiscPage.h

    RCS file: /cvsroot/filezilla/FileZilla Server/source/OptionsMiscPage.h,v
    retrieving revision 1.1
    diff -u -r1.1 OptionsMiscPage.h
     
    2121        enum { IDD = IDD_OPTIONS_MISC }; 
    2222        BOOL    m_bDontShowPass; 
    2323        //}}AFX_DATA 
     24        BOOL m_bEnableCustomPASV; 
     25        CString m_sCustomPASVString; 
     26        UINT m_sCustomPASVMinPort; 
     27        UINT m_sCustomPASVMaxPort; 
     28        CString m_sCustomPASVHelp; 
     29 
    2430 
    2531 
    2632// Überschreibungen 
  • source/resource.h

    RCS file: /cvsroot/filezilla/FileZilla Server/source/resource.h,v
    retrieving revision 1.5
    diff -u -r1.5 resource.h
     
    5454#define IDC_PORT                        1023 
    5555#define IDC_MAXUSERS                    1024 
    5656#define IDC_THREADNUM                   1025 
     57#define IDC_CUSTOM_PASV_MAX_PORT        1025 
    5758#define IDC_MAXUSERBYPASS               1026 
    5859#define IDC_MAXCONNCOUNT                1027 
    5960#define IDC_IPLIMIT                     1028 
     
    7172#define IDC_MAIL                        1039 
    7273#define IDC_HOMEPAGE                    1040 
    7374#define IDC_OPTIONS_MISC_DONTSHOWPASS   1041 
     75#define IDC_OPTIONS_MISC_CUSTOM_PASV    1042 
     76#define IDC_CUSTOM_PASV_IP              1043 
     77#define IDC_CUSTOM_PASV_MIN_PORT        1044 
     78#define IDC_CUSTOM_PASV_TEXT            1045 
    7479#define ID_OUTPUTCONTEXT_CLEARALL       32770 
    7580#define ID_USERMENU_ADD                 32771 
    7681#define ID_TRAY_RESTORE                 32771 
     
    103108#define _APS_3D_CONTROLS                     1 
    104109#define _APS_NEXT_RESOURCE_VALUE        143 
    105110#define _APS_NEXT_COMMAND_VALUE         32785 
    106 #define _APS_NEXT_CONTROL_VALUE         1042 
     111#define _APS_NEXT_CONTROL_VALUE         1046 
    107112#define _APS_NEXT_SYMED_VALUE           101 
    108113#endif 
    109114#endif