Initial Commit
This commit is contained in:
136
database/FileZillaFTP/source/AsyncGssSocketLayer.h
Normal file
136
database/FileZillaFTP/source/AsyncGssSocketLayer.h
Normal file
@@ -0,0 +1,136 @@
|
||||
// GSSAsyncSocksifiedSocket.h: interface for the CAsyncGssSocketLayer CAsyncSocketEx.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Part of this code is copyright 2001 Massachusetts Institute of Technology
|
||||
|
||||
#if !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
|
||||
#define ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
// **************************************************************************************
|
||||
// File: globals.h
|
||||
// By: Arthur David Leather
|
||||
// Created: 08/02/99
|
||||
// Copyright @1999 Massachusetts Institute of Technology - All rights reserved.
|
||||
// Description: H file for globals.cpp. Contains variables and functions
|
||||
// for SoFTP
|
||||
//
|
||||
// History:
|
||||
//
|
||||
// MM/DD/YY Inits Description of Change
|
||||
// 08/02/99 ADL Original
|
||||
// **************************************************************************************
|
||||
|
||||
|
||||
//#include "tlhelp32.h"
|
||||
//#include <winsock.h>
|
||||
#include "AsyncSocketExLayer.h"
|
||||
|
||||
#define GSS_INFO 0
|
||||
#define GSS_ERROR 1
|
||||
#define GSS_SHUTDOWN_COMPLETE 2
|
||||
#define GSS_COMMAND 3
|
||||
#define GSS_REPLY 4
|
||||
#define GSS_AUTHFAILED 5
|
||||
#define GSS_AUTHCOMPLETE 6
|
||||
|
||||
// Defines
|
||||
#define GFTPDLL _T("FzGss.dll")
|
||||
#define GSSAPI_AUTHENTICATION_SUCCEEDED 1
|
||||
|
||||
class CGssHelperWindow;
|
||||
class CAsyncGssSocketLayer : public CAsyncSocketExLayer
|
||||
{
|
||||
public:
|
||||
CAsyncGssSocketLayer();
|
||||
virtual ~CAsyncGssSocketLayer();
|
||||
|
||||
BOOL InitTransferChannel(CAsyncGssSocketLayer *pSocket);
|
||||
|
||||
BOOL InitGSS(BOOL bSpawned = FALSE, BOOL promptPassword = FALSE);
|
||||
int GetClientAuth(const char* pHost);
|
||||
int ProcessCommand(const char *command, const char *args, char *sendme);
|
||||
int ProcessCommand(const char *command, const char *args1, const char *args2, char *sendme);
|
||||
BOOL AuthSuccessful() const;
|
||||
void SetAuthState(int i) {m_gotAuth = i;}
|
||||
void SetTransfer(BOOL flag) {m_transfer = flag;}
|
||||
BOOL ShutDownComplete();
|
||||
BOOL GetUserFromKrbTicket(char *buffer); //Should be 256 chars long
|
||||
|
||||
protected:
|
||||
void ReceiveReply();
|
||||
static int CALLBACK Callback(void *pData, int nParam1, int nParam2, int nParam3);
|
||||
virtual void Close();
|
||||
virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
|
||||
virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
|
||||
virtual BOOL ShutDown(int nHow /*=sends*/);
|
||||
|
||||
virtual void OnReceive(int nErrorCode);
|
||||
virtual void OnSend(int nErrorCode);
|
||||
virtual void OnClose(int nErrorCode);
|
||||
|
||||
char *m_pSendBuffer;
|
||||
int m_nSendBufferLen;
|
||||
int m_nSendBufferSize;
|
||||
|
||||
char *m_pReceiveBuffer;
|
||||
unsigned int m_nReceiveBufferLen;
|
||||
unsigned int m_nReceiveBufferSize;
|
||||
char *m_pDecryptedReceiveBuffer;
|
||||
int m_nDecryptedReceiveBufferLen;
|
||||
int m_nDecryptedReceiveBufferSize;
|
||||
|
||||
char m_tmpBuffer[1024*32]; //32KB buffer for temporary data
|
||||
|
||||
BOOL m_bInitialized;
|
||||
|
||||
BOOL m_nAwaitingReply; //Used by client authentication, set to true if waiting for a reply from the server
|
||||
BOOL m_transfer;
|
||||
|
||||
int m_nShutDown;
|
||||
|
||||
BOOL LoadGSSLibrary();
|
||||
BOOL UnLoadGSSLibrary();
|
||||
|
||||
HINSTANCE m_hGSS_API;
|
||||
void **m_pData;
|
||||
BOOL m_bUseGSS;
|
||||
int m_gotAuth; // authorization type
|
||||
|
||||
// GSS-API
|
||||
typedef int (* t_FzGss_ProcessCommand)(void* m_pData, const char* command, char* args, char* sendme);
|
||||
typedef int (* t_FzGss_DecryptMessage)(void*, char *msgStr, char* sendme);
|
||||
typedef int (* t_FzGss_EncryptMessage)(void*, char *msgStr, char* sendme);
|
||||
typedef unsigned long (* t_FzGss_EncryptData)(void*, char *chunk, int length, char* sendme);
|
||||
typedef unsigned long (* t_FzGss_DecryptData)(void *pData, char *chunk, int length, char* send);
|
||||
typedef BOOL (* t_FzGss_InitGSS)(void*, int (CALLBACK *)(void *, int, int, int), void *, int);
|
||||
typedef BOOL (* t_FzGss_KillGSS)(void*);
|
||||
typedef int (* t_FzGss_DoClientAuth)(void *pData, char *hostname, const struct sockaddr *myaddr, const struct sockaddr *hisaddr, char protLevel, int gssBufferSize);
|
||||
typedef int (* t_FzGss_ProcessReply)(void *pData, char *reply);
|
||||
typedef int (* t_FzGss_GetUserFromKrbTicket)(void *pData, char *buffer);
|
||||
|
||||
t_FzGss_ProcessCommand pFzGss_ProcessCommand;
|
||||
t_FzGss_DecryptMessage pFzGss_DecryptMessage;
|
||||
t_FzGss_EncryptMessage pFzGss_EncryptMessage;
|
||||
t_FzGss_EncryptData pFzGss_EncryptData;
|
||||
t_FzGss_DecryptData pFzGss_DecryptData;
|
||||
t_FzGss_InitGSS pFzGss_InitGSS;
|
||||
t_FzGss_KillGSS pFzGss_KillGSS;
|
||||
t_FzGss_DoClientAuth pFzGss_DoClientAuth;
|
||||
t_FzGss_ProcessReply pFzGss_ProcessReply;
|
||||
t_FzGss_GetUserFromKrbTicket pFzGss_GetUserFromKrbTicket;
|
||||
|
||||
SOCKADDR m_myAddr;
|
||||
SOCKADDR m_hisAddr;
|
||||
|
||||
BOOL KillGSSData();
|
||||
|
||||
private:
|
||||
int m_nGssNetworkError;
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(ASYNCGSSSOCKETLAYER_H__84779FB7_FC01_4743_996B_383E4D7045B7__INCLUDED_)
|
||||
Reference in New Issue
Block a user