/* An example of ne7ssh library usage. Please change the values in connectWithPassword 
   function before compiling.
   
   This will work with on a unix/linux server with cat utility.
   
   If you are testing this with later openssh versions, make sure to add this
   option to your server's configuration file to enable password authentication:
   
   PasswordAuthentication yes
*/

#include <ne7ssh.h>

int main(int argc,char *argv[])
{
 int channel1;
 const char* result;
 ne7ssh *_ssh = new ne7ssh();
 int filesize = 0;
 FILE *testFi;
  
 // Set SSH connection options.
 _ssh->setOptions ("aes256-cbc", "hmac-md5");
 
 // Initiate connection without starting a remote shell.
 channel1 = _ssh->connectWithPassword ("example.host", 22, "username", "password", 0);
 if (channel1 < 0) 
 {
    printf ("Connection failed with last error: %s\n\n", _ssh->errors()->pop());
    delete _ssh;
    return EXIT_FAILURE;
 }
 
 // cat the remote file, works only on Unix systems. You may need to sepcifiy full path to cat.
 // Timeout after 100 seconds.
 
 if (!_ssh->sendCmd ("cat ~/test.bin", channel1, 100))
 {
    printf ("Command failed with last error: %s\n\n", _ssh->errors()->pop(channel1));
    delete _ssh;
    return EXIT_FAILURE;
 }
 
 // Determine the size of received file.
 filesize = _ssh->getReceivedSize(channel1);

 // Open a local file.
 testFi = fopen ("./test.bin", "wb");

 // Write binary data from the receive buffer to the opened file.
 if (!fwrite (_ssh->readBinary(channel1), (size_t) filesize, 1, testFi))
 {
   printf ("Error Writting to file\n\n");
   return EXIT_FAILURE;
 }
 
 // Close the files.
 fclose (testFi);
  
 // Destroy the instance.
 delete _ssh; 

 return EXIT_SUCCESS;
}
