aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2009-09-06 12:54:57 +0300
committerAris Adamantiadis <aris@0xbadc0de.be>2009-09-13 14:03:34 +0300
commitf90ae73b6d0d8c6993a200045770344ce5252a92 (patch)
treeab23a3ee7a270cdf6519c237d274cf63ce3da9d0
parent7fed54b1e574779dac61aafec6343a47bb116493 (diff)
downloadlibssh-f90ae73b6d0d8c6993a200045770344ce5252a92.tar.gz
libssh-f90ae73b6d0d8c6993a200045770344ce5252a92.tar.xz
libssh-f90ae73b6d0d8c6993a200045770344ce5252a92.zip
Refactored the connect_ssh example function
into a new file
-rw-r--r--examples/CMakeLists.txt1
-rw-r--r--examples/connect_ssh.c63
-rw-r--r--examples/examples_common.h3
3 files changed, 66 insertions, 1 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 8086292..b0d40d9 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -4,6 +4,7 @@ set(examples_SRCS
libssh_scp.c
authentication.c
knownhosts.c
+ connect_ssh.c
)
include_directories(
diff --git a/examples/connect_ssh.c b/examples/connect_ssh.c
new file mode 100644
index 0000000..cfc6bb1
--- /dev/null
+++ b/examples/connect_ssh.c
@@ -0,0 +1,63 @@
+/*
+ * connect_ssh.c
+ * This file contains an example of how to connect to a
+ * SSH server using libssh
+ */
+
+/*
+Copyright 2009 Aris Adamantiadis
+
+This file is part of the SSH Library
+
+You are free to copy this file, modify it in any way, consider it being public
+domain. This does not apply to the rest of the library though, but it is
+allowed to cut-and-paste working code from this file to any license of
+program.
+The goal is to show the API in action. It's not a reference on how terminal
+clients must be made or how a client should react.
+ */
+
+#include <libssh/libssh.h>
+#include "examples_common.h"
+#include <stdio.h>
+
+ssh_session connect_ssh(const char *host, const char *user,int verbosity){
+ ssh_session session;
+ ssh_options options;
+ int auth=0;
+
+ options=ssh_options_new();
+ if(user != NULL){
+ if (ssh_options_set_username(options,user) < 0) {
+ ssh_options_free(options);
+ return NULL;
+ }
+ }
+
+ if (ssh_options_set_host(options,host) < 0) {
+ ssh_options_free(options);
+ return NULL;
+ }
+ ssh_options_set_log_verbosity(options,verbosity);
+ session=ssh_new();
+ ssh_set_options(session,options);
+ if(ssh_connect(session)){
+ fprintf(stderr,"Connection failed : %s\n",ssh_get_error(session));
+ ssh_disconnect(session);
+ return NULL;
+ }
+ if(verify_knownhost(session)<0){
+ ssh_disconnect(session);
+ return NULL;
+ }
+ auth=authenticate_console(session);
+ if(auth==SSH_AUTH_SUCCESS){
+ return session;
+ } else if(auth==SSH_AUTH_DENIED){
+ fprintf(stderr,"Authentication failed\n");
+ } else {
+ fprintf(stderr,"Error while authenticating : %s\n",ssh_get_error(session));
+ }
+ ssh_disconnect(session);
+ return NULL;
+}
diff --git a/examples/examples_common.h b/examples/examples_common.h
index 55f5db7..bc30c93 100644
--- a/examples/examples_common.h
+++ b/examples/examples_common.h
@@ -13,9 +13,10 @@ clients must be made or how a client should react.
#ifndef EXAMPLES_COMMON_H_
#define EXAMPLES_COMMON_H_
+#include <libssh/libssh.h>
int authenticate_console(ssh_session session);
int authenticate_kbdint(ssh_session session);
int verify_knownhost(ssh_session session);
-
+ssh_session connect_ssh(const char *hostname, const char *user, int verbosity);
#endif /* EXAMPLES_COMMON_H_ */