Using SecureBridge components in C++ Builder console app
Posted: Tue 02 Sep 2008 19:37
I don't know how to setup the declaration and initialization of SecureBridge event handling procedures in a C++ Builder console application. I get the following errors (in RAD Studio 2007, C++ Builder 2007 personality) when I try to build the code following it :
[BCC32 Error] File1.cpp(37): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScSSHClientInfo *,const AnsiString,bool &)' to 'TScCheckUserPass'
[BCC32 Error] File1.cpp(38): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScSSHClientInfo *,TScKey *,bool &)' to 'TScCheckUserKey'
[BCC32 Error] File1.cpp(41): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScKey *,bool &)' to 'TScServerKeyValidate'
[BCC32 Error] File1.cpp(49): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'TScAsyncReceive'
[BCC32 Error] File1.cpp(87): E2451 Undefined symbol 'ScSSHShell1'
Can anyone please help me ? Thanks.
-- Don
// CODE START ///////////////////////////////////////////////
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include "ScBridge.hpp"
#include "ScSSHChannel.hpp"
#include "ScSSHClient.hpp"
void __fastcall ScSSHClient1ServerKeyValidate(TObject *Sender,
TScKey *NewServerKey, bool &Accept);
void __fastcall ScRegStorage1CheckUserKey(TObject *Sender,
TScSSHClientInfo *ClientInfo, TScKey *Key, bool &Accept);
void __fastcall ScRegStorage1CheckUserPass(TObject *Sender,
TScSSHClientInfo *ClientInfo, const AnsiString Password,
bool &Accept);
void __fastcall ScSSHShell1AsyncReceive(TObject *Sender);
bool command_sent = false;
AnsiString server_receipt_str = "",
cum_server_receipt_str = "";
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
AnsiString command_str,
param_str_i;
int i;
TReplaceFlags rf;
TScRegStorage* ScRegStorage1 = new TScRegStorage(NULL);
TScSSHClient* ScSSHClient1 = new TScSSHClient(NULL);
TScSSHShell* ScSSHShell1 = new TScSSHShell(NULL);
ScRegStorage1->OnCheckUserPass = ScRegStorage1CheckUserPass;
ScRegStorage1->OnCheckUserKey = ScRegStorage1CheckUserKey;
ScSSHClient1->KeyStorage = ScRegStorage1;
ScSSHClient1->OnServerKeyValidate = ScSSHClient1ServerKeyValidate;
ScSSHClient1->HostName = "mtolx195.dc.mars";
ScSSHClient1->User = "oracle";
ScSSHClient1->Password = "dudley";
ScSSHClient1->Connected = true;
ScSSHShell1->Client = ScSSHClient1;
ScSSHShell1->OnAsyncReceive = ScSSHShell1AsyncReceive;
ScSSHShell1->NonBlocking = true;
ScSSHShell1->Connected = true;
rf = rf "))
) { // Wait to send command till get "==>" prompt
Application->ProcessMessages();
};
cum_server_receipt_str = "";
command_sent = true;
ScSSHShell1->WriteString(command_str + "\n");
while (
(ScSSHShell1->OutCount > 0) ||
(0 == cum_server_receipt_str.Pos("==>"))
) {
Application->ProcessMessages();
};
ScSSHShell1->Connected = false;
ScSSHClient1->Connected = false;
return 0;
}
//---------------------------------------------------------------------------
void __fastcall ScSSHShell1AsyncReceive(TObject *Sender)
{
server_receipt_str = ScSSHShell1->ReadString();
if (command_sent) {
puts(server_receipt_str.c_str());
};
cum_server_receipt_str = cum_server_receipt_str + server_receipt_str;
}
//---------------------------------------------------------------------------
void __fastcall ScSSHClient1ServerKeyValidate(TObject *Sender,
TScKey *NewServerKey, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
void __fastcall ScRegStorage1CheckUserKey(TObject *Sender,
TScSSHClientInfo *ClientInfo, TScKey *Key, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
void __fastcall ScRegStorage1CheckUserPass(TObject *Sender,
TScSSHClientInfo *ClientInfo, const AnsiString Password, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
// CODE END ///////////////////////////////////////////////
[BCC32 Error] File1.cpp(37): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScSSHClientInfo *,const AnsiString,bool &)' to 'TScCheckUserPass'
[BCC32 Error] File1.cpp(38): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScSSHClientInfo *,TScKey *,bool &)' to 'TScCheckUserKey'
[BCC32 Error] File1.cpp(41): E2034 Cannot convert 'void (_fastcall *)(TObject *,TScKey *,bool &)' to 'TScServerKeyValidate'
[BCC32 Error] File1.cpp(49): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'TScAsyncReceive'
[BCC32 Error] File1.cpp(87): E2451 Undefined symbol 'ScSSHShell1'
Can anyone please help me ? Thanks.
-- Don
// CODE START ///////////////////////////////////////////////
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include "ScBridge.hpp"
#include "ScSSHChannel.hpp"
#include "ScSSHClient.hpp"
void __fastcall ScSSHClient1ServerKeyValidate(TObject *Sender,
TScKey *NewServerKey, bool &Accept);
void __fastcall ScRegStorage1CheckUserKey(TObject *Sender,
TScSSHClientInfo *ClientInfo, TScKey *Key, bool &Accept);
void __fastcall ScRegStorage1CheckUserPass(TObject *Sender,
TScSSHClientInfo *ClientInfo, const AnsiString Password,
bool &Accept);
void __fastcall ScSSHShell1AsyncReceive(TObject *Sender);
bool command_sent = false;
AnsiString server_receipt_str = "",
cum_server_receipt_str = "";
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
AnsiString command_str,
param_str_i;
int i;
TReplaceFlags rf;
TScRegStorage* ScRegStorage1 = new TScRegStorage(NULL);
TScSSHClient* ScSSHClient1 = new TScSSHClient(NULL);
TScSSHShell* ScSSHShell1 = new TScSSHShell(NULL);
ScRegStorage1->OnCheckUserPass = ScRegStorage1CheckUserPass;
ScRegStorage1->OnCheckUserKey = ScRegStorage1CheckUserKey;
ScSSHClient1->KeyStorage = ScRegStorage1;
ScSSHClient1->OnServerKeyValidate = ScSSHClient1ServerKeyValidate;
ScSSHClient1->HostName = "mtolx195.dc.mars";
ScSSHClient1->User = "oracle";
ScSSHClient1->Password = "dudley";
ScSSHClient1->Connected = true;
ScSSHShell1->Client = ScSSHClient1;
ScSSHShell1->OnAsyncReceive = ScSSHShell1AsyncReceive;
ScSSHShell1->NonBlocking = true;
ScSSHShell1->Connected = true;
rf = rf "))
) { // Wait to send command till get "==>" prompt
Application->ProcessMessages();
};
cum_server_receipt_str = "";
command_sent = true;
ScSSHShell1->WriteString(command_str + "\n");
while (
(ScSSHShell1->OutCount > 0) ||
(0 == cum_server_receipt_str.Pos("==>"))
) {
Application->ProcessMessages();
};
ScSSHShell1->Connected = false;
ScSSHClient1->Connected = false;
return 0;
}
//---------------------------------------------------------------------------
void __fastcall ScSSHShell1AsyncReceive(TObject *Sender)
{
server_receipt_str = ScSSHShell1->ReadString();
if (command_sent) {
puts(server_receipt_str.c_str());
};
cum_server_receipt_str = cum_server_receipt_str + server_receipt_str;
}
//---------------------------------------------------------------------------
void __fastcall ScSSHClient1ServerKeyValidate(TObject *Sender,
TScKey *NewServerKey, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
void __fastcall ScRegStorage1CheckUserKey(TObject *Sender,
TScSSHClientInfo *ClientInfo, TScKey *Key, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
void __fastcall ScRegStorage1CheckUserPass(TObject *Sender,
TScSSHClientInfo *ClientInfo, const AnsiString Password, bool &Accept)
{
Accept = true;
}
//---------------------------------------------------------------------------
// CODE END ///////////////////////////////////////////////