亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sbindysshshelliohandler.pas

?? 著名的SecureBlackBox控件完整源碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

(******************************************************)
(*                                                    *)
(*            EldoS SecureBlackbox Library            *)
(*                                                    *)
(*      Copyright (c) 2002-2003 EldoS Corporation     *)
(*           http://www.secureblackbox.com            *)
(*                                                    *)
(******************************************************)

unit SBIndySSHShellIOHandler;

interface

uses
  Classes, IdIOHandlerSocket, IdSocks, IdSocketHandle, IdGlobal, IdAntiFreezeBase,
  IdException, IdResourceStrings, IdStack, IdStackConsts,
  SBSSHCommon, SBSSHClient, SBSSHKeyStorage, SBSSHConstants;

type
  TElIndySSHShellIOHandlerSocket = class(TIdIOHandlerSocket)
  private
    FClient : TElSSHClient;
    FClientState : integer;
    FTunnelList : TElSSHTunnelList;
    FTunnel : TElShellSSHTunnel;
    FConnection : TElSSHTunnelConnection;
    FDataBuffer : string;
    FExtendedDataBuffer : string;
    FDataReceived : boolean;
    FSocksConnected : boolean;
    function GetEncryptionAlgorithms(Index : TSSHEncryptionAlgorithm) : boolean;
    function GetCompressionAlgorithms(Index : TSSHCompressionAlgorithm) : boolean;
    function GetMACAlgorithms(Index : TSSHMACAlgorithm) : boolean;
    procedure SetEncryptionAlgorithms(Index : TSSHEncryptionAlgorithm; Value : boolean);
    procedure SetCompressionAlgorithms(Index : TSSHCompressionAlgorithm; Value : boolean);
    procedure SetMACAlgorithms(Index : TSSHMACAlgorithm; Value : boolean);
    function GetKexAlgorithms(Index : TSSHKexAlgorithm) : boolean;
    procedure SetKexAlgorithms(Index : TSSHKexAlgorithm; Value : boolean);
    function GetPublicKeyAlgorithms(Index : TSSHPublicKeyAlgorithm) : boolean;
    procedure SetPublicKeyAlgorithms(Index : TSSHPublicKeyAlgorithm; Value : boolean);
    function GetServerSoftwareName : string;
    function GetVersion : TSSHVersion;
    function GetServerCloseReason : string;
    function GetEncryptionAlgorithmSC : TSSHEncryptionAlgorithm;
    function GetEncryptionAlgorithmCS : TSSHEncryptionAlgorithm;
    function GetCompressionAlgorithmSC : TSSHCompressionAlgorithm;
    function GetCompressionAlgorithmCS : TSSHCompressionAlgorithm;
    function GetMacAlgorithmSC : TSSHMacAlgorithm;
    function GetMacAlgorithmCS : TSSHMacAlgorithm;
    function GetKexAlgorithm : TSSHKexAlgorithm;
    function GetPublicKeyAlgorithm : TSSHPublicKeyAlgorithm;
    function GetSoftwareName : string;
    procedure SetSoftwareName(Value : string);
    function GetVersions : TSSHVersions;
    procedure SetVersions(Value : TSSHVersions);
    function GetUserName : string;
    procedure SetUserName(Value : string);
    function GetPassword : string;
    procedure SetPassword(Value : string);
    function GetClientUserName : string;
    procedure SetClientUserName(Value : string);
    function GetClientHostName : string;
    procedure SetClientHostname(Value : string);
    function GetKeyStorage : TElSSHCustomKeyStorage;
    procedure SetKeyStorage(Value : TElSSHCustomKeyStorage);
    function GetRequestCompression : boolean;
    procedure SetRequestCompression(Value : boolean);
    function GetCompressionLevel : integer;
    procedure SetCompressionLevel(Value : integer);
    function GetAuthenticationTypes : cardinal;
    procedure SetAuthenticationTypes(Value : cardinal);
    function GetOnAuthenticationSuccess : TNotifyEvent;
    procedure SetOnAuthenticationSuccess(Value : TNotifyEvent);
    function GetOnAuthenticationFailed : TSSHAuthenticationFailedEvent;
    procedure SetOnAuthenticationFailed(Value : TSSHAuthenticationFailedEvent);
    function GetOnAuthenticationKeyboard : TSSHAuthenticationKeyboardEvent;
    procedure SetOnAuthenticationKeyboard(Value : TSSHAuthenticationKeyboardEvent);
    function GetOnKeyValidate : TSSHKeyValidateEvent;
    procedure SetOnKeyValidate(Value : TSSHKeyValidateEvent);
    procedure HandleClientSend(Sender : TObject; Buffer : pointer; Size : integer);
    procedure HandleClientReceive(Sender : TObject; Buffer : pointer; Size :
      integer; out Written : integer);
    procedure HandleClientOpenConnection(Sender : TObject);
    procedure HandleClientCloseConnection(Sender : TObject);
    procedure HandleClientError(Sender : TObject; Error : integer);
    procedure HandleTunnelOpen(Sender : TObject; Connection : TElSSHTunnelConnection);
    procedure HandleTunnelClose(Sender : TObject; Connection : TElSSHTunnelConnection);
    procedure HandleTunnelError(Sender : TObject; Error : integer; Data : Pointer);
    procedure HandleConnectionData(Sender : TObject; Buffer : pointer; Size :
      integer);
    procedure HandleConnectionExtendedData(Sender : TObject; Buffer : pointer;
      Size : integer);
    procedure HandleConnectionError(Sender : TObject; Error : integer);
    procedure HandleConnectionClose(Sender : TObject; CloseType : TSSHCloseType);
  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
    procedure Close; override;
    procedure ConnectClient(const AHost: string; const APort: Integer; const ABoundIP: string;
     const ABoundPort: Integer; const ABoundPortMin: Integer; const ABoundPortMax: Integer;
     const ATimeout: Integer = IdTimeoutDefault); override;
    function Connected: Boolean; override;
    procedure Open; override;
    function Readable(AMSec: integer = IdTimeoutDefault): boolean; override;
    function Recv(var ABuf; ALen: integer): integer; override;
    function Send(var ABuf; ALen: integer): integer; override;
    property EncryptionAlgorithms[Index : TSSHEncryptionAlgorithm] : boolean
      read GetEncryptionAlgorithms write SetEncryptionAlgorithms;
    property CompressionAlgorithms[Index : TSSHCompressionAlgorithm] : boolean
      read GetCompressionAlgorithms write SetCompressionAlgorithms;
    property MacAlgorithms[Index : TSSHMacAlgorithm] : boolean
      read GetMACAlgorithms write SetMACAlgorithms;
    property KexAlgorithms[Index : TSSHKexAlgorithm] : boolean
      read GetKexAlgorithms write SetKexAlgorithms;
    property PublicKeyAlgorithms[Index : TSSHPublicKeyAlgorithm] : boolean
      read GetPublicKeyAlgorithms write SetPublicKeyAlgorithms;
    property ServerSoftwareName : string read GetServerSoftwareName;
    property Version : TSSHVersion read GetVersion;
    property ServerCloseReason : string read GetServerCloseReason;
    property EncryptionAlgorithmServerToClient : TSSHEncryptionAlgorithm
      read GetEncryptionAlgorithmSC;
    property EncryptionAlgorithmClientToServer : TSSHEncryptionAlgorithm
      read GetEncryptionAlgorithmCS;
    property CompressionAlgorithmServerToClient : TSSHCompressionAlgorithm
      read GetCompressionAlgorithmSC;
    property CompressionAlgorithmClientToServer : TSSHCompressionAlgorithm
      read GetCompressionAlgorithmCS;
    property MacAlgorithmServerToClient : TSSHMacAlgorithm read GetMacAlgorithmSC;
    property MacAlgorithmClientToServer : TSSHMacAlgorithm read GetMacAlgorithmCS;
    property KexAlgorithm : TSSHKexAlgorithm read GetKexAlgorithm;
    property PublicKeyAlgorithm : TSSHPublicKeyAlgorithm read GetPublicKeyAlgorithm;
  published
    property SoftwareName : string read GetSoftwareName write SetSoftwareName;
    property Versions : TSSHVersions read GetVersions write SetVersions;
    property UserName : string read GetUserName write SetUserName;
    property Password : string read GetPassword write SetPassword;
    property ClientUserName : string read GetClientUserName write SetClientUserName;
    property ClientHostName : string read GetClientHostName write SetClientHostName;
    property KeyStorage : TElSSHCustomKeyStorage read GetKeyStorage
      write SetKeyStorage;
    property ForceCompression : boolean read GetRequestCompression
      write SetRequestCompression;
    property CompressionLevel : integer read GetCompressionLevel
      write SetCompressionLevel default 9;
    property AuthenticationTypes : cardinal read GetAuthenticationTypes
      write SetAuthenticationTypes default SSH_AUTH_TYPE_PASSWORD;
    property OnAuthenticationSuccess : TNotifyEvent read GetOnAuthenticationSuccess
      write SetOnAuthenticationSuccess;
    property OnAuthenticationFailed : TSSHAuthenticationFailedEvent
      read GetOnAuthenticationFailed write SetOnAuthenticationFailed;
    property OnAuthenticationKeyboard : TSSHAuthenticationKeyboardEvent
      read GetOnAuthenticationKeyboard write SetOnAuthenticationKeyboard;
    property OnKeyValidate : TSSHKeyValidateEvent read GetOnKeyValidate
      write SetOnKeyValidate;
  end;

procedure Register;

implementation

uses
  Sysutils, IdComponent;

const
  CLIENT_STATE_NOT_CONNECTED            = 0;
  CLIENT_STATE_CONNECTING               = 1;
  CLIENT_STATE_ERROR                    = 2;
  CLIENT_STATE_DISCONNECTED             = 3;
  CLIENT_STATE_CONNECTED                = 4;

procedure Register;
begin
  RegisterComponents('SSHBlackbox', [TElIndySSHShellIOHandlerSocket]);
end;

constructor TElIndySSHShellIOHandlerSocket.Create(AOwner : TComponent);
begin
  inherited Create(AOwner);
  FClient := TElSSHClient.Create(Self);
  FClient.OnSend := HandleClientSend;
  FClient.OnReceive := HandleClientReceive;
  FClient.OnOpenConnection := HandleClientOpenConnection;
  FClient.OnCloseConnection := HandleClientCloseConnection;
  FClient.OnError := HandleClientError;
  FClientState := CLIENT_STATE_NOT_CONNECTED;
  FTunnelList := TElSSHTunnelList.Create(Self);
  FTunnel := TElShellSSHTunnel.Create(Self);
  FTunnel.TunnelList := FTunnelList;
  FClient.TunnelList := FTunnelList;
  FTunnel.OnOpen := HandleTunnelOpen;
  FTunnel.OnClose := HandleTunnelClose;
  FTunnel.OnError := HandleTunnelError;
  FConnection := nil;
end;

destructor TElIndySSHShellIOHandlerSocket.Destroy;
begin
  FClient.Free;
  FTunnelList.Free;
  FTunnel.Free;
  inherited;
end;

procedure TElIndySSHShellIOHandlerSocket.Close;
begin
  FClientState := CLIENT_STATE_NOT_CONNECTED;
  if FBinding <> nil then
    FClient.Close;
  inherited Close;
end;

procedure TElIndySSHShellIOHandlerSocket.ConnectClient(const AHost: string; const APort: Integer; const ABoundIP: string;
  const ABoundPort: Integer; const ABoundPortMin: Integer; const ABoundPortMax: Integer;
  const ATimeout: Integer = IdTimeoutDefault);
begin
  FSocksConnected := not (SocksInfo.Version in [svSocks4, svSocks4A, svSocks5]);
  SocksInfo.IOHandler := Self;
  FConnection := nil;
  FDataBuffer := '';
  FExtendedDataBuffer := '';
  inherited ConnectClient(AHost, APort, ABoundIP, ABoundPort, ABoundPortMin,
    ABoundPortMax, ATimeout);
  FSocksConnected := true;
  if FClient.Active then
  begin
    FClient.OnSend := nil;
    FClient.OnReceive := nil;
    FClient.Close;
    FClient.OnSend := HandleClientSend;
    FClient.OnReceive := HandleClientReceive;
  end;
  FClientState := CLIENT_STATE_CONNECTING;
  FClient.Open;
  while FClientState = CLIENT_STATE_CONNECTING do
    FClient.DataAvailable;
  if FClientState = CLIENT_STATE_ERROR then
    DoStatus(hsDisconnected);
end;

function TElIndySSHShellIOHandlerSocket.Connected: Boolean;
begin
  Result := (inherited Connected) and (FClientState = CLIENT_STATE_CONNECTED);
end;

procedure TElIndySSHShellIOHandlerSocket.Open;
begin
  inherited Open;
end;

function TElIndySSHShellIOHandlerSocket.Recv(var ABuf; ALen: integer): integer;
var
  Len : integer;
begin
  if not FSocksConnected then
  begin
    Result := FBinding.Recv(ABuf, ALen, 0);
    Exit;
  end;
  if FClientState <> CLIENT_STATE_CONNECTED then
  begin
    Result := -1;
    Exit;
  end;
  Len := Length(FDataBuffer);
  Result := 0;
  if Len = 0 then
  begin
    FDataReceived := false;
    while (not FDataReceived) and (FBinding.HandleAllocated) and Connected do
      FClient.DataAvailable;
  end;
  Len := Length(FDataBuffer);
  if Len > 0 then
  begin
    if ALen < Len then
    begin
      Move(FDataBuffer[1], ABuf, ALen);
      Delete(FDataBuffer, 1, ALen);
      Result := ALen;
    end
    else
    begin
      Move(FDataBuffer[1], ABuf, Len);
      SetLength(FDataBuffer, 0);
      Result := Len;
    end;
  end;
end;

function TElIndySSHShellIOHandlerSocket.Send(var ABuf; ALen: integer): integer;
begin
  if not FSocksConnected then
  begin
    HandleClientSend(Self, @ABuf, ALen);
    Result := ALen;
    Exit;
  end;
  if Assigned(FConnection) and Connected then
  begin
    FConnection.SendData(@ABuf, ALen);
    Result := ALen;
  end
  else
    Result := -1;
end;

function TElIndySSHShellIOHandlerSocket.GetEncryptionAlgorithms(Index :
  TSSHEncryptionAlgorithm) : boolean;
begin
  Result := FClient.EncryptionAlgorithms[Index];
end;

function TElIndySSHShellIOHandlerSocket.GetCompressionAlgorithms(Index :
  TSSHCompressionAlgorithm) : boolean;
begin
  Result := FClient.CompressionAlgorithms[Index];
end;

function TElIndySSHShellIOHandlerSocket.GetMACAlgorithms(Index :
  TSSHMACAlgorithm) : boolean;
begin
  Result := FClient.MacAlgorithms[Index];
end;

procedure TElIndySSHShellIOHandlerSocket.SetEncryptionAlgorithms(Index :
  TSSHEncryptionAlgorithm; Value : boolean);
begin
  FClient.EncryptionAlgorithms[Index] := Value;
end;

procedure TElIndySSHShellIOHandlerSocket.SetCompressionAlgorithms(Index :
  TSSHCompressionAlgorithm; Value : boolean);
begin
  FClient.CompressionAlgorithms[Index] := Value;
end;

procedure TElIndySSHShellIOHandlerSocket.SetMACAlgorithms(Index :
  TSSHMACAlgorithm; Value : boolean);
begin
  FClient.MacAlgorithms[Index] := Value;
end;

function TElIndySSHShellIOHandlerSocket.GetKexAlgorithms(Index :
  TSSHKexAlgorithm) : boolean;
begin
  Result := FClient.KexAlgorithms[Index];
end;

procedure TElIndySSHShellIOHandlerSocket.SetKexAlgorithms(Index :

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久嫩草精品久久久久| 亚洲久本草在线中文字幕| 日日夜夜一区二区| 国产偷v国产偷v亚洲高清| 国内精品嫩模私拍在线| 久久精品欧美一区二区三区麻豆| 国产精品系列在线播放| 中文字幕一区二区三区不卡| 色婷婷综合在线| 亚洲福中文字幕伊人影院| 91精品综合久久久久久| 国产综合成人久久大片91| 中文字幕欧美日本乱码一线二线| 91天堂素人约啪| 香蕉影视欧美成人| 精品免费日韩av| 中文字幕欧美国产| 色综合久久久久综合体| 日韩激情一二三区| 久久精品一级爱片| 91色九色蝌蚪| 日韩高清在线不卡| 久久久久久97三级| 一本到不卡免费一区二区| 秋霞午夜av一区二区三区| 久久久久久日产精品| 91久久免费观看| 捆绑变态av一区二区三区| 国产欧美日韩亚州综合| 欧美天堂一区二区三区| 国产一区二区三区| 伊人夜夜躁av伊人久久| 欧美一卡二卡在线观看| 国产精品香蕉一区二区三区| 国产精品国产三级国产普通话三级| 本田岬高潮一区二区三区| 亚洲天堂福利av| 欧美日韩国产色站一区二区三区| 国产一区在线观看麻豆| 一区二区在线电影| 精品国产露脸精彩对白| ...xxx性欧美| 欧美另类久久久品| 国产suv精品一区二区883| 亚洲激情成人在线| 久久综合色天天久久综合图片| 99vv1com这只有精品| 久久99精品国产91久久来源| 亚洲精品视频自拍| 欧美精品一区视频| 欧美午夜不卡在线观看免费| 国产白丝精品91爽爽久久| 天天综合天天做天天综合| 国产精品色哟哟网站| 91精品在线观看入口| 99久久99久久久精品齐齐| 麻豆久久一区二区| 亚洲一线二线三线久久久| 欧美国产一区二区在线观看| 欧美一区二区高清| 日本高清视频一区二区| 国产麻豆精品在线| 奇米精品一区二区三区在线观看 | 久久先锋资源网| 在线观看亚洲a| 国产iv一区二区三区| 日韩电影在线一区| 欧美亚洲国产怡红院影院| 国产精品亚洲综合一区在线观看| 日韩精品每日更新| 亚洲精品菠萝久久久久久久| 国产亚洲人成网站| 欧美一激情一区二区三区| 91久久免费观看| eeuss鲁一区二区三区| 国产专区综合网| 日本欧美一区二区在线观看| 亚洲午夜视频在线| 亚洲人成精品久久久久| 国产午夜亚洲精品理论片色戒| 欧美一区二区三区播放老司机| 欧美在线一二三四区| av午夜精品一区二区三区| 国产精品一区在线观看乱码| 裸体一区二区三区| 日日夜夜一区二区| 亚洲成人av资源| 一级精品视频在线观看宜春院| 成人欧美一区二区三区1314| 国产精品美女久久久久久久久 | 视频一区中文字幕| 一区二区三区在线视频观看| 综合久久给合久久狠狠狠97色| 中文字幕巨乱亚洲| 国产欧美va欧美不卡在线| 国产精品白丝av| 国产精品亚洲第一区在线暖暖韩国| 精品一区二区综合| 久久精品国产精品亚洲精品 | 午夜激情久久久| 亚洲电影第三页| 亚洲成人精品一区| 亚洲一卡二卡三卡四卡五卡| 一区二区三区中文免费| 一级日本不卡的影视| 亚洲自拍欧美精品| 亚洲综合激情网| 亚洲超丰满肉感bbw| 亚洲成人av免费| 午夜精品福利一区二区蜜股av| 亚洲第一电影网| 午夜精品久久久久久久99水蜜桃| 丝袜美腿亚洲综合| 日韩激情视频在线观看| 免费成人在线观看视频| 激情综合色播激情啊| 国产一区激情在线| 国产精品自在在线| 大桥未久av一区二区三区中文| 成人av资源在线观看| 99精品桃花视频在线观看| 91香蕉视频污在线| 在线亚洲免费视频| 欧美唯美清纯偷拍| 欧美一区二区精品久久911| 国产一区激情在线| 国产成人精品网址| 99久久精品99国产精品| 色综合久久九月婷婷色综合| 色国产精品一区在线观看| 欧美日韩极品在线观看一区| 91精品国产欧美一区二区| 亚洲精品在线观看视频| 中文字幕欧美三区| 一个色在线综合| 美女网站在线免费欧美精品| 国产成人精品三级| 91丨九色丨尤物| 欧美精品黑人性xxxx| 欧美tk丨vk视频| 国产精品色一区二区三区| 一区二区三区日本| 欧美96一区二区免费视频| 欧美精品 国产精品| 一区二区在线观看免费| 亚洲mv在线观看| 精品一区二区在线视频| 成人av网站在线观看免费| 欧美综合在线视频| 日韩一卡二卡三卡| 欧美极品美女视频| 一区二区在线看| 美腿丝袜亚洲三区| 丁香啪啪综合成人亚洲小说| 91官网在线观看| 欧美成人精品福利| 成人免费看视频| 欧美在线free| 精品日韩一区二区三区| 国产精品久久久久久久蜜臀 | 99re热视频精品| 欧美区在线观看| 欧美高清在线精品一区| 亚洲国产欧美另类丝袜| 激情久久五月天| 在线观看视频一区二区| 欧美变态tickle挠乳网站| 亚洲欧美日韩人成在线播放| 久久精品二区亚洲w码| 97成人超碰视| 日韩欧美一级在线播放| 日韩理论在线观看| 免费成人深夜小野草| 91啪九色porn原创视频在线观看| 日韩视频在线观看一区二区| 亚洲天堂成人网| 精品一区二区三区欧美| 欧美在线短视频| 日韩一级大片在线观看| 亚洲精选一二三| 国产精品一二三四区| 欧美日韩精品电影| 日韩手机在线导航| 国产精品久久三| 久久精品国产第一区二区三区| 在线免费精品视频| 国产亚洲精品资源在线26u| 天天综合色天天综合色h| 亚洲欧洲综合另类| 国产一区二区三区最好精华液| 欧美中文字幕一区二区三区| 欧美国产在线观看| 日本视频在线一区| 在线观看成人小视频| 亚洲国产精品v| 精品一区二区在线观看| 欧美日韩mp4| 夜夜嗨av一区二区三区| 成人精品一区二区三区中文字幕| 欧美大胆人体bbbb|