Initial Commit
This commit is contained in:
146
database/FileZillaFTP/source/ServerThread.h
Normal file
146
database/FileZillaFTP/source/ServerThread.h
Normal file
@@ -0,0 +1,146 @@
|
||||
// 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.
|
||||
|
||||
#if !defined(AFX_SERVERTHREAD_H__4F566540_62DF_4338_85DE_EC699EB6640C__INCLUDED_)
|
||||
#define AFX_SERVERTHREAD_H__4F566540_62DF_4338_85DE_EC699EB6640C__INCLUDED_
|
||||
|
||||
#include "Thread.h"
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
// ServerThread.h : Header-Datei
|
||||
//
|
||||
|
||||
class CControlSocket;
|
||||
class CServerThread;
|
||||
class COptions;
|
||||
class CPermissions;
|
||||
class t_user;
|
||||
class CExternalIpCheck;
|
||||
class CAutoBanManager;
|
||||
class CHashThread;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
CControlSocket *pSocket;
|
||||
CServerThread *pThread;
|
||||
} t_socketdata;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Thread CServerThread
|
||||
|
||||
class CServerThread : public CThread
|
||||
{
|
||||
public:
|
||||
virtual CStdString GetExternalIP(const CStdString& localIP);
|
||||
virtual void ExternalIPFailed();
|
||||
CServerThread(int nNotificationMessageId);
|
||||
|
||||
CPermissions *m_pPermissions;
|
||||
COptions *m_pOptions;
|
||||
CAutoBanManager* m_pAutoBanManager;
|
||||
void IncRecvCount(int count);
|
||||
void IncSendCount(int count);
|
||||
void IncIpCount(const CStdString &ip);
|
||||
void DecIpCount(const CStdString &ip);
|
||||
int GetIpCount(const CStdString &ip) const;
|
||||
BOOL IsReady();
|
||||
static const int GetGlobalNumConnections();
|
||||
void AddSocket(SOCKET sockethandle, bool ssl);
|
||||
const int GetNumConnections();
|
||||
|
||||
struct t_Notification
|
||||
{
|
||||
WPARAM wParam;
|
||||
LPARAM lParam;
|
||||
};
|
||||
|
||||
void SendNotification(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
/*
|
||||
* The parameter should be an empty list, since m_pendingNotifications and
|
||||
* list get swapped to increase performance.
|
||||
*/
|
||||
void GetNotifications(std::list<CServerThread::t_Notification>& list);
|
||||
|
||||
void AntiHammerIncrease(const CStdString& ip);
|
||||
|
||||
CHashThread& GetHashThread();
|
||||
|
||||
protected:
|
||||
virtual ~CServerThread();
|
||||
|
||||
void GatherTransferedBytes();
|
||||
void ProcessNewSlQuota();
|
||||
virtual BOOL InitInstance();
|
||||
virtual DWORD ExitInstance();
|
||||
|
||||
virtual int OnThreadMessage(UINT Msg, WPARAM wParam, LPARAM lParam);
|
||||
void OnTimer(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void ProcessControlMessage(t_controlmessage *msg);
|
||||
CControlSocket * GetControlSocket(int userid);
|
||||
std::map<int, CControlSocket *> m_LocalUserIDs;
|
||||
void AddNewSocket(SOCKET sockethandle, bool ssl);
|
||||
static int CalcUserID();
|
||||
static std::map<int, t_socketdata> m_userids;
|
||||
static std::map<CStdString, int> m_userIPs;
|
||||
void AntiHammerDecrease();
|
||||
|
||||
int m_nRecvCount;
|
||||
int m_nSendCount;
|
||||
UINT m_nRateTimer;
|
||||
BOOL m_bQuit;
|
||||
|
||||
CCriticalSectionWrapper m_threadsync;
|
||||
static CCriticalSectionWrapper m_GlobalThreadsync;
|
||||
unsigned int m_timerid;
|
||||
|
||||
//Speed limit code
|
||||
static std::list<CServerThread *> m_sInstanceList; //First instance is the SL master
|
||||
BOOL m_bIsMaster;
|
||||
int m_nLoopCount;
|
||||
|
||||
int m_lastLimits[2];
|
||||
typedef struct {
|
||||
int nBytesAllowedToTransfer;
|
||||
int nTransferred;
|
||||
} t_Quota;
|
||||
t_Quota m_SlQuotas[2];
|
||||
|
||||
CStdString m_RawWelcomeMessage;
|
||||
std::list<CStdString> m_ParsedWelcomeMessage;
|
||||
CExternalIpCheck *m_pExternalIpCheck;
|
||||
|
||||
std::list<t_Notification> m_pendingNotifications;
|
||||
int m_throttled;
|
||||
|
||||
int m_nNotificationMessageId;
|
||||
|
||||
static std::map<CStdString, int> m_antiHammerInfo;
|
||||
int m_antiHammerTimer;
|
||||
|
||||
static CHashThread* m_hashThread;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ f<>gt unmittelbar vor der vorhergehenden Zeile zus<75>tzliche Deklarationen ein.
|
||||
|
||||
#endif // AFX_SERVERTHREAD_H__4F566540_62DF_4338_85DE_EC699EB6640C__INCLUDED_
|
||||
Reference in New Issue
Block a user