⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbindysshserveriohandler10.pas

📁 著名的SecureBlackBox控件完整源码
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  Buf : TIdBytes;
begin
  Written := 0;
  try
    if BindingAllocated then
      if FBinding.Readable then
      begin
        inherited ReadFromSource(false, 0);
      end;
      
    Written := Min(FInputBuffer.Size, MaxSize);

    if Written > 0 then
    begin
      SetLength(Buf, Written);
      FInputBuffer.ExtractToBytes(Buf, Written, false);
      Move(Buf[0], Buffer^, Written);
    end;
  except
    Close;
    Written := 0;
  end;
end;

procedure TElIdSSHClientServerIOHandler.DoSend(Sender: TObject;
  Buffer: pointer; Size: Integer);
var
  Buf : TIdBytes;
begin
  if BindingAllocated then
  try
    SetLength(Buf, Size);
    Move(Buffer^, Buf[0], Size);
    inherited WriteDirect(Buf);
  except
    Close;
  end;
end;

function TElIdSSHClientServerIOHandler.GetConnections(
  Index: integer): TElIdSSHConnection;
begin
  if (Index >= 0) and (Index < FConnections.Count) then
    Result := TElIdSSHConnection(FConnections[Index])
  else
    Result := nil;
end;

procedure TElIdSSHClientServerIOHandler.AfterAccept;
begin
  inherited;

  FSSHServer.OnError := DoSSHError;
  FSSHServer.OnReceive := DoReceive;
  FSSHServer.OnSend := DoSend;
  FSSHServer.OnOpenShell := DoOpenShell;
  FSSHServer.OnOpenCommand := DoOpenCommand;
  FSSHServer.OnOpenSubsystem := DoOpenSubsystem;
  FSSHServer.OnOpenClientForwarding := DoOpenClientForwarding;
  FSSHServer.OnOpenServerForwarding := DoOpenServerForwarding;
  FSSHServer.OnOpenX11Forwarding := DoOpenX11Forwarding;
  FSSHServer.OnCloseConnection := DoCloseConnection;

  FActive := true;
end;

{function TElIdSSHClientServerIOHandler.Readable(AMSec: Integer): Boolean;
begin
  Result := false;
end;}

function TElIdSSHClientServerIOHandler.GetActive: boolean;
begin
  Result := FActive;
end;

function TElIdSSHClientServerIOHandler.ReadFromSource(
  ARaiseExceptionIfDisconnected: Boolean; ATimeout: Integer;
  ARaiseExceptionOnTimeout: Boolean): Integer;
begin
  Result := 0;
end;

{$ifndef INDY1011}
procedure TElIdSSHClientServerIOHandler.WriteDirect(ABuffer: TIdBytes);
{$else}
procedure TElIdSSHClientServerIOHandler.WriteDirect(var ABuffer: TIdBytes);
{$endif}
begin
  //do nothing
end;

procedure TElIdSSHClientServerIOHandler.DataAvailable;
begin
  FSSHServer.DataAvailable;
end;

function TElIdSSHClientServerIOHandler.GetAllowedSubsystems: TStringList;
begin
  Result := FSSHServer.AllowedSubsystems;
end;

function TElIdSSHClientServerIOHandler.GetChangePwdPrompt: string;
begin
  Result := FSSHServer.ChangePwdPrompt;
end;

function TElIdSSHClientServerIOHandler.GetClientCloseReason: string;
begin
  Result := FSSHServer.ClientCloseReason;
end;

function TElIdSSHClientServerIOHandler.GetClientSoftwareName: string;
begin
  Result := FSSHServer.ClientSoftwareName;
end;

function TElIdSSHClientServerIOHandler.GetUsername: string;
begin
  Result := FSSHServer.Username;
end;

procedure TElIdSSHClientServerIOHandler.OpenServerForwarding(
  const Address: string; Port: integer; const SrcHost: string;
  SrcPort: integer; Data: pointer);
begin
  FSSHServer.OpenServerForwarding(Address, Port, SrcHost, SrcPort, Data);
end;

procedure TElIdSSHClientServerIOHandler.SetChangePwdPrompt(
  const Value: string);
begin
  FSSHServer.ChangePwdPrompt := Value;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthAttempt: TSSHAuthAttemptEvent;
begin
  Result := FSSHServer.OnAuthAttempt;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthBanner: TSSHAuthBannerEvent;
begin
  Result := FSSHServer.OnAuthBanner;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthFailed: TSSHAuthenticationFailedEvent;
begin
  Result := FSSHServer.OnAuthFailed;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthHostbased: TSSHAuthHostbasedEvent;
begin
  Result := FSSHServer.OnAuthHostbased;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthKeyboard: TSSHAuthKeyboardEvent;
begin
  Result := FSSHServer.OnAuthKeyboard;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthKeyboardResponse: TSSHAuthKeyboardResponseEvent;
begin
  Result := FSSHServer.OnAuthKeyboardResponse;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthPassword: TSSHAuthPasswordEvent;
begin
  Result := FSSHServer.OnAuthPassword;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthPasswordChange: TSSHAuthPasswordChangeEvent;
begin
  Result := FSSHServer.OnAuthPasswordChange;
end;

function TElIdSSHClientServerIOHandler.GetOnAuthPublicKey: TSSHAuthPublicKeyEvent;
begin
  Result := FSSHServer.OnAuthPublicKey;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenClientForwarding: TSSHBeforeOpenClientForwardingEvent;
begin
  Result := FSSHServer.OnBeforeOpenClientForwarding;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenCommand: TSSHBeforeOpenCommandEvent;
begin
  Result := FSSHServer.OnBeforeOpenCommand;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenSession: TSSHBeforeOpenSessionEvent;
begin
  Result := FSSHServer.OnBeforeOpenSession;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenShell: TSSHBeforeOpenShellEvent;
begin
  Result := FSSHServer.OnBeforeOpenShell;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenSubsystem: TSSHBeforeOpenSubsystemEvent;
begin
  Result := FSSHServer.OnBeforeOpenSubsystem;
end;

function TElIdSSHClientServerIOHandler.GetOnBeforeOpenX11Forwarding: TSSHBeforeOpenX11ForwardingEvent;
begin
  Result := FSSHServer.OnBeforeOpenX11Forwarding;
end;

function TElIdSSHClientServerIOHandler.GetOnOpenSession: TSSHOpenSessionEvent;
begin
  Result := FSSHServer.OnOpenSession;
end;

function TElIdSSHClientServerIOHandler.GetOnServerForwardingCancel: TSSHServerForwardingCancelEvent;
begin
  Result := FSSHServer.OnServerForwardingCancel;
end;

function TElIdSSHClientServerIOHandler.GetOnServerForwardingFailed: TSSHServerForwardingFailedEvent;
begin
  Result := FSSHServer.OnServerForwardingFailed;
end;

function TElIdSSHClientServerIOHandler.GetOnServerForwardingRequest: TSSHServerForwardingRequestEvent;
begin
  Result := FSSHServer.OnServerForwardingRequest;
end;

function TElIdSSHClientServerIOHandler.GetOnTerminalRequest: TSSHTerminalRequestEvent;
begin
  Result := FSSHServer.OnTerminalRequest;
end;

function TElIdSSHClientServerIOHandler.GetOnX11ForwardingRequest: TSSHX11ForwardingRequestEvent;
begin
  Result := FSSHServer.OnX11ForwardingRequest;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthAttempt(
  const Value: TSSHAuthAttemptEvent);
begin
  FSSHServer.OnAuthAttempt := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthBanner(
  const Value: TSSHAuthBannerEvent);
begin
  FSSHServer.OnAuthBanner := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthFailed(
  const Value: TSSHAuthenticationFailedEvent);
begin
  FSSHServer.OnAuthFailed := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthHostbased(
  const Value: TSSHAuthHostbasedEvent);
begin
  FSSHServer.OnAuthHostbased := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthKeyboard(
  const Value: TSSHAuthKeyboardEvent);
begin
  FSSHServer.OnAuthKeyboard := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthKeyboardResponse(
  const Value: TSSHAuthKeyboardResponseEvent);
begin
  FSSHServer.OnAuthKeyboardResponse := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthPassword(
  const Value: TSSHAuthPasswordEvent);
begin
  FSSHServer.OnAuthPassword := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthPasswordChange(
  const Value: TSSHAuthPasswordChangeEvent);
begin
  FSSHServer.OnAuthPasswordChange := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnAuthPublicKey(
  const Value: TSSHAuthPublicKeyEvent);
begin
  FSSHServer.OnAuthPublicKey := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenClientForwarding(
  const Value: TSSHBeforeOpenClientForwardingEvent);
begin
  FSSHServer.OnBeforeOpenClientForwarding := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenCommand(
  const Value: TSSHBeforeOpenCommandEvent);
begin
  FSSHServer.OnBeforeOpenCommand := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenSession(
  const Value: TSSHBeforeOpenSessionEvent);
begin
  FSSHServer.OnBeforeOpenSession := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenShell(
  const Value: TSSHBeforeOpenShellEvent);
begin
  FSSHServer.OnBeforeOpenShell := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenSubsystem(
  const Value: TSSHBeforeOpenSubsystemEvent);
begin
  FSSHServer.OnBeforeOpenSubsystem := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnBeforeOpenX11Forwarding(
  const Value: TSSHBeforeOpenX11ForwardingEvent);
begin
  FSSHServer.OnBeforeOpenX11Forwarding := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnOpenSession(
  const Value: TSSHOpenSessionEvent);
begin
  FSSHServer.OnOpenSession := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnServerForwardingCancel(
  const Value: TSSHServerForwardingCancelEvent);
begin
  FSSHServer.OnServerForwardingCancel := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnServerForwardingFailed(
  const Value: TSSHServerForwardingFailedEvent);
begin
  FSSHServer.OnServerForwardingFailed := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnServerForwardingRequest(
  const Value: TSSHServerForwardingRequestEvent);
begin
  FSSHServer.OnServerForwardingRequest := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnTerminalRequest(
  const Value: TSSHTerminalRequestEvent);
begin
  FSSHServer.OnTerminalRequest := Value;
end;

procedure TElIdSSHClientServerIOHandler.SetOnX11ForwardingRequest(
  const Value: TSSHX11ForwardingRequestEvent);
begin
  FSSHServer.OnX11ForwardingRequest := Value;
end;

function TElIdSSHClientServerIOHandler.AddConnection(
  Connection: TElSSHTunnelConnection; Server : TElSSHServer) : integer;
var
  Conn : TElIdSSHConnection;
begin
  if FActive then
  begin
    Conn := TElIdSSHConnection.Create(nil);
    Conn.IOHandler := TElIdSSHConnectionIOHandler.Create(nil);
    TElIdSSHConnectionIOHandler(Conn.IOHandler).SetConnection(Connection, Server);
    Conn.SetConnection(Connection, Server);
    Conn.IOHandler.Open;
    Result := FConnections.Add(Conn);
  end
  else
    Result := -1;
end;

procedure TElIdSSHClientServerIOHandler.DoSSHError(Sender: TObject;
  ErrorCode: integer);
begin
  FErrorOccured := true;

  if Assigned(FOnError) then
    FOnError(Sender, ErrorCode);
end;

function TElIdSSHClientServerIOHandler.GetAuthenticationTypes: integer;
begin
  Result := FSSHServer.AuthenticationTypes;
end;

function TElIdSSHClientServerIOHandler.GetCloseIfNoActiveTunnels: boolean;
begin
  Result := FSSHServer.CloseIfNoActiveTunnels;
end;

function TElIdSSHClientServerIOHandler.GetCompressionAlgorithmCS: TSSHCompressionAlgorithm;
begin
  Result := FSSHServer.CompressionAlgorithmClientToServer;
end;

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

function TElIdSSHClientServerIOHandler.GetCompressionAlgorithmSC: TSSHCompressionAlgorithm;
begin
  Result := FSSHServer.CompressionAlgorithmServerToClient;
end;

function TElIdSSHClientServerIOHandler.GetCompressionLevel: integer;
begin
  Result := FSSHServer.CompressionLevel;
end;

function TElIdSSHClientServerIOHandler.GetEncryptionAlgorithmCS: TSSHEncryptionAlgorithm;
begin
  Result := FSSHServer.EncryptionAlgorithmClientToServer;
end;

function TElIdSSHClientServerIOHandler.GetEncryptionAlgorithms(
  Index: TSSHEncryptionAlgorithm): boolean;
begin
  Result := FSSHServer.EncryptionAlgorithms[Index];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -