From bfd2fa56f9ea02e0db201d82e85997127fd85e37 Mon Sep 17 00:00:00 2001 From: KRI Date: Tue, 31 Mar 2020 15:18:14 +0200 Subject: [PATCH] RDEV-1657 getUserIpAddress function added + consumerParams with userIP in init step --- SSH/PAM/src/coreHandler.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SSH/PAM/src/coreHandler.c b/SSH/PAM/src/coreHandler.c index 2653f3e..790bfc1 100644 --- a/SSH/PAM/src/coreHandler.c +++ b/SSH/PAM/src/coreHandler.c @@ -266,6 +266,14 @@ bool isOneOfSelectedMethods(char *selectedMethod, char *methods[], int methodsSi return false; } +char *getUserIpAddress(pam_handle_t *pamh) { + char *ip = NULL; + pam_get_item(pamh, PAM_RHOST, (const void **) &ip); + if (ip == NULL) + ip = ""; + return ip; +} + int postInit(pam_handle_t *pamh, cJSON **availableMethods, struct ApplicationInfoStruct* info, char **transactionId, char *systemToken, char *secretKey, const char *appUserId, char *userEmail, char *rublonApiServer) { char *status = NULL; char *transactionStatus = NULL; @@ -276,11 +284,12 @@ int postInit(pam_handle_t *pamh, cJSON **availableMethods, struct ApplicationInf char *tid = NULL; char *jsonObj; char *url; + char *userIP = getUserIpAddress(pamh); - asprintf(&jsonObj,"{\"systemToken\":\"%s\",\"appUserId\":\"%s\",\"userEmail\":\"%s\"}",systemToken,appUserId,userEmail); + asprintf(&jsonObj,"{\"systemToken\":\"%s\",\"appUserId\":\"%s\",\"userEmail\":\"%s\",\"consumerParams\":{\"userIP\":\"%s\"}}",systemToken,appUserId,userEmail,userIP); asprintf(&url,"%s/api/transaction/init",rublonApiServer); + char *curlResponse = curlHandler(pamh, jsonObj, url, secretKey); - if(curlResponse == NULL) { if((strcmp(getConfigValue("failmode"),"secure") != 0)) return STATUS_BYPASS;