diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 57 | ||||
-rw-r--r-- | src/freerdp-auth-check.c (renamed from src/freerdp2-auth-check.c) | 33 | ||||
-rw-r--r-- | src/pam-freerdp-children.c (renamed from src/pam-freerdp2-children.c) | 4 | ||||
-rw-r--r-- | src/pam-freerdp-children.h (renamed from src/pam-freerdp2-children.h) | 6 | ||||
-rw-r--r-- | src/pam-freerdp-private.h (renamed from src/pam-freerdp2-private.h) | 6 | ||||
-rw-r--r-- | src/pam-freerdp.c (renamed from src/pam-freerdp2.c) | 24 |
6 files changed, 84 insertions, 46 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 581b080..32a8184 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,61 +1,80 @@ NULL = pamlibdir = $(PAMMODULEDIR) -pamlib_LTLIBRARIES = pam_freerdp2.la +pamlib_LTLIBRARIES = pam_freerdp.la -pam_freerdp2_la_SOURCES = \ +pam_freerdp_la_SOURCES = \ auth-check-path.c auth-check-path.h \ - pam-freerdp2.c \ - pam-freerdp2-children.c \ + pam-freerdp.c \ + pam-freerdp-children.c \ $(NULL) -pam_freerdp2_la_LDFLAGS = \ +pam_freerdp_la_LDFLAGS = \ -no-undefined \ -module \ -avoid-version \ $(COVERAGE_LDFLAGS) \ $(NULL) -pam_freerdp2_la_CFLAGS = \ +pam_freerdp_la_CFLAGS = \ -Wall -Werror \ - -DAUTH_CHECK="\"$(libexecdir)/freerdp2-auth-check\"" \ + -DAUTH_CHECK="\"$(libexecdir)/freerdp-auth-check\"" \ $(COVERAGE_CFLAGS) \ $(NULL) -pam_freerdp2_la_CPPFLAGS = \ +pam_freerdp_la_CPPFLAGS = \ -I$(top_srcdir)/include \ $(NULL) -pam_freerdp2_la_LIBADD = \ +pam_freerdp_la_LIBADD = \ -lpam \ $(NULL) -pam_freerdp2includedir = $(includedir)/security/ -pam_freerdp2include_HEADERS = \ - $(top_srcdir)/include/pam-freerdp2.h \ +pam_freerdpincludedir = $(includedir)/security/ +pam_freerdpinclude_HEADERS = \ + $(top_srcdir)/include/pam-freerdp.h \ $(NULL) libexec_PROGRAMS = \ - freerdp2-auth-check \ + freerdp-auth-check \ $(NULL) -freerdp2_auth_check_SOURCES = \ - freerdp2-auth-check.c \ +freerdp_auth_check_SOURCES = \ + freerdp-auth-check.c \ $(NULL) -freerdp2_auth_check_CFLAGS = \ +if HAVE_FREERDP3 +freerdp_auth_check_CFLAGS = \ + -Wall -Werror \ + $(FREERDP3_CFLAGS) \ + $(WINPR3_CFLAGS) \ + $(COVERAGE_CFLAGS) \ + $(NULL) +freerdp_auth_check_LDADD = \ + $(FREERDP3_LIBS) \ + $(WINPR3_LIBS) \ + $(NULL) + +freerdp_auth_check_LDFLAGS = \ + $(FREERDP3_LDFLAGS) \ + $(WINPR3_LDFLAGS) \ + $(COVERAGE_LDFLAGS) \ + $(NULL) +else +freerdp_auth_check_CFLAGS = \ + -Wall -Werror \ $(FREERDP2_CFLAGS) \ $(WINPR2_CFLAGS) \ $(COVERAGE_CFLAGS) \ $(NULL) - -freerdp2_auth_check_LDADD = \ +freerdp_auth_check_LDADD = \ $(FREERDP2_LIBS) \ $(WINPR2_LIBS) \ $(NULL) -freerdp2_auth_check_LDFLAGS = \ +freerdp_auth_check_LDFLAGS = \ $(FREERDP2_LDFLAGS) \ $(WINPR2_LDFLAGS) \ $(COVERAGE_LDFLAGS) \ $(NULL) +endif
\ No newline at end of file diff --git a/src/freerdp2-auth-check.c b/src/freerdp-auth-check.c index 04558fb..752f2bf 100644 --- a/src/freerdp2-auth-check.c +++ b/src/freerdp-auth-check.c @@ -18,41 +18,42 @@ #include <freerdp/freerdp.h> #include <freerdp/channels/channels.h> +#include <freerdp/version.h> #include <string.h> #include <sys/mman.h> #include <winpr/wlog.h> BOOL -auth_context_new (freerdp * instance, rdpContext * context) +auth_context_new (freerdp __attribute__((unused)) *instance, rdpContext __attribute__((unused)) *context) { return TRUE; } void -auth_context_free (freerdp * instance, rdpContext * context) +auth_context_free (freerdp __attribute__((unused)) *instance, rdpContext __attribute__((unused)) *context) { return; } BOOL -auth_pre_connect (freerdp * instance) +auth_pre_connect (freerdp __attribute__((unused)) *instance) { return TRUE; } BOOL -auth_post_connect (freerdp * instance) +auth_post_connect (freerdp __attribute__((unused)) *instance) { return TRUE; } int -main (int argc, char * argv[]) +main (int argc, char *argv[]) { char password[512]; if (argc != 4) { - printf("Usage: echo <passwd> | freerdp2-auth-check <host>[:<port>] <user> <domain>\n\n"); + printf("Usage: echo <passwd> | freerdp-auth-check <host>[:<port>] <user> <domain>\n\n"); printf("ERROR: Incorrect number of parameters.\n\n"); return -1; } @@ -91,15 +92,26 @@ main (int argc, char * argv[]) /* We've got a port to deal with */ colonloc[0] = '\0'; colonloc++; - +#if FREERDP_VERSION_MAJOR >= 3 + freerdp_settings_set_uint32(instance->context->settings, FreeRDP_ServerPort, strtoul(colonloc, NULL, 10)); +#else instance->settings->ServerPort = strtoul(colonloc, NULL, 10); +#endif } +#if FREERDP_VERSION_MAJOR >= 3 + freerdp_settings_set_bool(instance->context->settings, FreeRDP_AuthenticationOnly, TRUE); + freerdp_settings_set_string(instance->context->settings, FreeRDP_ServerHostname, argv[1]); + freerdp_settings_set_string(instance->context->settings, FreeRDP_Username, argv[2]); + freerdp_settings_set_string(instance->context->settings, FreeRDP_Domain, argv[3]); + freerdp_settings_set_string(instance->context->settings, FreeRDP_Password, password); +#else instance->settings->AuthenticationOnly = TRUE; instance->settings->ServerHostname = argv[1]; instance->settings->Username = argv[2]; instance->settings->Domain = argv[3]; instance->settings->Password = password; +#endif BOOL connection_successful; connection_successful = freerdp_connect(instance); @@ -107,10 +119,17 @@ main (int argc, char * argv[]) memset(password, 0, sizeof(password)); munlock(password, sizeof(password)); +#if FREERDP_VERSION_MAJOR >= 3 + freerdp_settings_set_string(instance->context->settings, FreeRDP_Password, NULL); + freerdp_settings_set_string(instance->context->settings, FreeRDP_ServerHostname, NULL); + freerdp_settings_set_string(instance->context->settings, FreeRDP_Username, NULL); + freerdp_settings_set_string(instance->context->settings, FreeRDP_Domain, NULL); +#else instance->settings->Password = NULL; instance->settings->ServerHostname = NULL; instance->settings->Username = NULL; instance->settings->Domain = NULL; +#endif int retval = 0; if (!connection_successful) { diff --git a/src/pam-freerdp2-children.c b/src/pam-freerdp-children.c index 91b4a3a..8cd4ef8 100644 --- a/src/pam-freerdp2-children.c +++ b/src/pam-freerdp-children.c @@ -34,7 +34,7 @@ #include <security/pam_modutil.h> #include <security/pam_appl.h> -#include "pam-freerdp2-children.h" +#include "pam-freerdp-children.h" #include "auth-check-path.h" void @@ -172,7 +172,7 @@ session_socket_handler (struct passwd * pwdent, int readypipe, const char * ruse memset(&socket_addr, 0, sizeof(struct sockaddr_un)); socket_addr.sun_family = AF_UNIX; strncpy(socket_addr.sun_path, pwdent->pw_dir, sizeof(socket_addr.sun_path) - 1); - strncpy(socket_addr.sun_path + strlen(pwdent->pw_dir), "/.freerdp2-socket", (sizeof(socket_addr.sun_path) - strlen(pwdent->pw_dir)) - 1); + strncpy(socket_addr.sun_path + strlen(pwdent->pw_dir), "/.freerdp-socket", (sizeof(socket_addr.sun_path) - strlen(pwdent->pw_dir)) - 1); /* We bind the socket before forking so that we ensure that there isn't a race condition to get to it. Things will block diff --git a/src/pam-freerdp2-children.h b/src/pam-freerdp-children.h index dac3b19..1109587 100644 --- a/src/pam-freerdp2-children.h +++ b/src/pam-freerdp-children.h @@ -16,8 +16,8 @@ * Author: Ted Gould <ted@canonical.com> */ -#ifndef _PAM_FREERDP2_CHILDREN_H_ -#define _PAM_FREERDP2_CHILDREN_H_ +#ifndef _PAM_FREERDP_CHILDREN_H_ +#define _PAM_FREERDP_CHILDREN_H_ #define PAM_TYPE_RDP_USER 1234 #define PAM_TYPE_RDP_SERVER 1235 @@ -29,4 +29,4 @@ pam_sm_authenticate_helper (int *stdinpipe, const char* username, const char* rh int session_socket_handler (struct passwd * pwdent, int readypipe, const char * ruser, const char * rhost, const char * rdomain, const char * password); -#endif //_PAM_FREERDP2_CHILDREN_H_ +#endif //_PAM_FREERDP_CHILDREN_H_ diff --git a/src/pam-freerdp2-private.h b/src/pam-freerdp-private.h index 74663ef..0b7520f 100644 --- a/src/pam-freerdp2-private.h +++ b/src/pam-freerdp-private.h @@ -17,8 +17,8 @@ * Author libpam-freerdp (where we forked from): Ted Gould <ted@canonical.com> */ -#ifndef _PAM_FREERDP2_PRIVATE_H_ -#define _PAM_FREERDP2_PRIVATE_H_ +#ifndef _PAM_FREERDP_PRIVATE_H_ +#define _PAM_FREERDP_PRIVATE_H_ PAM_EXTERN int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv); @@ -29,4 +29,4 @@ pam_sm_close_session (pam_handle_t *pamh, int flags, int argc, const char **argv PAM_EXTERN int pam_sm_setcred (pam_handle_t *pamh, int flags, int argc, const char ** argv); -#endif //_PAM_FREERDP2_PRIVATE_H_ +#endif //_PAM_FREERDP_PRIVATE_H_ diff --git a/src/pam-freerdp2.c b/src/pam-freerdp.c index 18a4c18..8bf505f 100644 --- a/src/pam-freerdp2.c +++ b/src/pam-freerdp.c @@ -36,9 +36,9 @@ #include <security/pam_modutil.h> #include <security/pam_appl.h> -#include "pam-freerdp2.h" +#include "pam-freerdp.h" -#include "pam-freerdp2-children.h" +#include "pam-freerdp-children.h" #include "auth-check-path.h" static int unpriveleged_kill (struct passwd * pwdent); @@ -93,20 +93,20 @@ get_item (pam_handle_t * pamh, int type) switch (type) { case PAM_USER: - message.msg = PAM_FREERDP2_PROMPT_GUESTLOGIN; + message.msg = PAM_FREERDP_PROMPT_GUESTLOGIN; break; case PAM_TYPE_RDP_USER: - message.msg = PAM_FREERDP2_PROMPT_USER; + message.msg = PAM_FREERDP_PROMPT_USER; break; case PAM_TYPE_RDP_SERVER: - message.msg = PAM_FREERDP2_PROMPT_HOST; + message.msg = PAM_FREERDP_PROMPT_HOST; break; case PAM_AUTHTOK: - message.msg = PAM_FREERDP2_PROMPT_PASSWORD; + message.msg = PAM_FREERDP_PROMPT_PASSWORD; message.msg_style = PAM_PROMPT_ECHO_OFF; break; case PAM_TYPE_RDP_DOMAIN: - message.msg = PAM_FREERDP2_PROMPT_DOMAIN; + message.msg = PAM_FREERDP_PROMPT_DOMAIN; break; default: return NULL; @@ -240,7 +240,7 @@ get_item (pam_handle_t * pamh, int type) /* Authenticate. We need to make sure we have a user account, that there are remote accounts and then verify them with FreeRDP */ PAM_EXTERN int -pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv) +pam_sm_authenticate (pam_handle_t *pamh, int __attribute__((unused)) flags, int __attribute__((unused)) argc, const char __attribute__((unused)) **argv) { char * username = NULL; char * password = NULL; @@ -305,7 +305,7 @@ pid_t session_pid = 0; give the credentials to the session itself so that it can startup the xfreerdp viewer for the login */ PAM_EXTERN int -pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, const char ** argv) +pam_sm_open_session (pam_handle_t *pamh, int __attribute__((unused)) flags, int __attribute__((unused)) argc, const char __attribute__((unused)) **argv) { char * username = NULL; char * password = NULL; @@ -372,7 +372,7 @@ done: /* Close Session. Make sure our little guy has died so he doesn't become a zombie and eat things. */ PAM_EXTERN int -pam_sm_close_session (pam_handle_t *pamh, int flags, int argc, const char **argv) +pam_sm_close_session (pam_handle_t *pamh, int __attribute__((unused)) flags, int __attribute__((unused)) argc, const char __attribute__((unused)) **argv) { if (session_pid == 0) { return PAM_IGNORE; @@ -452,7 +452,7 @@ unpriveleged_kill (struct passwd * pwdent) /* LightDM likes to have this function around, but we don't need it as we don't have a token hanging around. */ PAM_EXTERN int -pam_sm_setcred (pam_handle_t *pamh, int flags, int argc, const char ** argv) +pam_sm_setcred (pam_handle_t __attribute__((unused)) *pamh, int __attribute__((unused)) flags, int __attribute__((unused)) argc, const char __attribute__((unused)) **argv) { return PAM_SUCCESS; } @@ -460,7 +460,7 @@ pam_sm_setcred (pam_handle_t *pamh, int flags, int argc, const char ** argv) #ifdef PAM_STATIC struct pam_module _pam_freerdp_modstruct = { - "pam_freerdp2", + "pam_freerdp", pam_sm_authenticate, pam_sm_setcred, NULL, |