From edd14a06a92de3b1275f4aeb377d8fa3852f823e Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 9 Nov 2012 12:04:48 +0100 Subject: Adaptations of the forked original to work with X2Go: Check the authentication token via libssh (ssh login to the remote server). --- src/x2go-auth-check.c | 60 +++++++++++---------------------------------------- 1 file changed, 13 insertions(+), 47 deletions(-) (limited to 'src/x2go-auth-check.c') diff --git a/src/x2go-auth-check.c b/src/x2go-auth-check.c index e5e9d13..524d424 100644 --- a/src/x2go-auth-check.c +++ b/src/x2go-auth-check.c @@ -16,37 +16,9 @@ * Author: Ted Gould */ -#include -#include +#include #include -void -auth_context_new (freerdp * instance, rdpContext * context) -{ - context->channels = freerdp_channels_new(); - return; -} - -void -auth_context_free (freerdp * instance, rdpContext * context) -{ - return; -} - -boolean -auth_pre_connect (freerdp * instance) -{ - freerdp_channels_pre_connect(instance->context->channels, instance); - return true; -} - -boolean -auth_post_connect (freerdp * instance) -{ - freerdp_channels_post_connect(instance->context->channels, instance); - return true; -} - int main (int argc, char * argv[]) { @@ -64,23 +36,12 @@ main (int argc, char * argv[]) return -1; } - freerdp_channels_global_init(); - - freerdp * instance = freerdp_new(); + auth_check_ssh_session = ssh_new(); - instance->PreConnect = auth_pre_connect; - instance->PostConnect = auth_post_connect; + ssh_options_set ( auth_check_ssh_session, SSH_OPTIONS_HOST, argv[1]; ); + ssh_options_set ( auth_check_ssh_session, SSH_OPTIONS_USER, argv[2]; ); - instance->context_size = sizeof(rdpContext); - instance->ContextNew = auth_context_new; - instance->ContextFree = auth_context_free; - - freerdp_context_new(instance); - - instance->settings->hostname = argv[1]; - instance->settings->username = argv[2]; - instance->settings->domain = argv[3]; - instance->settings->password = password; + rc = ssh_connect (ssh_session); char * colonloc = strstr(argv[1], ":"); if (colonloc != NULL) { @@ -88,12 +49,17 @@ main (int argc, char * argv[]) colonloc[0] = '\0'; colonloc++; - instance->settings->port = strtoul(colonloc, NULL, 10); + ssh_options_set ( auth_check_ssh_session, SSH_OPTIONS_PORT, strtoul(colonloc, NULL, 10); ); + } + + if (ssh_connect (ssh_session)) { + int rc = ssh_userauth_password ( auth_check_ssh_session, NULL, password ); + ssh_disconnect(ssh_session); } int retval = -1; - if (freerdp_connect(instance)) { - freerdp_disconnect(instance); + if ( rc == SSH_AUTH_SUCCESS ) + { retval = 0; } -- cgit v1.2.3