EssListConnectionsEx

Lists all users who are connected to the currently logged in server or application. Similar to EssListConnections, but includes users hosted in a user directory.

Syntax

ESS_FUNC_M EssListConnectionsEx (hCtx, pCount, ppUserList);
ParameterData TypeDescription

hCtx

ESS_HCTX_T

API context handle (input).

pCount

ESS_PUSHORT_T

Address of variable to receive count of users (output).

ppUserList

ESS_PPUSERINFOID_T

Pointer to an array of user information structures (output). The information structures can include user directories and unique identity attributes.

Notes

Return Value

Returns 0 if successful.

Access

This function requires the caller to have Supervisor or Application Designer privilege.

Example

void DisplayUserInfoID2(ESS_USERINFOID_T userInfo)
{
   ESS_STS_T sts  = ESS_STS_NOERR;
   ESS_BOOL_T       isDefined = ESS_TRUE;

   printf("\tUser Name: %s\n", userInfo.Name);
   printf("\tProvider Name: %s\n", userInfo.ProviderName);
   printf("\tConnparam: %s\n", userInfo.connparam);
   printf("\tDescription: %s\n", userInfo.Description);
   printf("\tEMail Identification: %s\n", userInfo.EMailID);

   if (userInfo.LockedOut)
      printf("\tLocked out: Yes\n");
   else
      printf("\tLocked out: No\n");

   if (userInfo.PwdChgNow)
      printf("\tChange the password now: Yes\n");
   else
      printf("\tChange the password now: No\n");

   printf(   "\tConnected Application: %s\n", userInfo.AppName);
   printf(   "\tConnected Database: %s\n",   userInfo.DbName);

   if (userInfo.Login)
      printf("\tLogged in: Yes\n");
   else
      printf("\tLogged in: No\n");

   switch(userInfo.Access)
   {
      case ESS_ACCESS_ADMIN:
         printf("\tAccess: %d - ESS_ACCESS_ADMIN\n", userInfo.Access);
         break;
      case ESS_ACCESS_APPALL:
         printf("\tAccess: %d - ESS_ACCESS_APPALL\n", userInfo.Access);
         break;
      case ESS_ACCESS_DBALL:
         printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
         break;
      case ESS_ACCESS_APPCREATE:
         printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
         break;
      case ESS_ACCESS_APPMANAGE:
         printf("\tAccess: %d - ESS_ACCESS_APPMANAGE\n", userInfo.Access);
         break;
      case ESS_ACCESS_DBCREATE:
         printf("\tAccess: %d - ESS_ACCESS_DBCREATE\n", userInfo.Access);
         break;
      case ESS_ACCESS_DBMANAGE:
         printf("\tAccess: %d - ESS_ACCESS_DBMANAGE\n", userInfo.Access);
         break;
      case ESS_ACCESS_CALC:
         printf("\tAccess: %d - ESS_ACCESS_CALC\n", userInfo.Access);
         break;
      case ESS_ACCESS_WRITE:
         printf("\tAccess: %d - ESS_ACCESS_WRITE\n", userInfo.Access);
         break;
      case ESS_ACCESS_READ:
         printf("\tAccess: %d - ESS_ACCESS_READ\n", userInfo.Access);
         break;
      case ESS_PRIV_USERCREATE:
         printf("\tAccess: %d - ESS_PRIV_USERCREATE\n", userInfo.Access);
         break;
      case ESS_PRIV_APPCREATE:
         printf("\tAccess: %d - ESS_PRIV_APPCREATE\n", userInfo.Access);
         break;
      case ESS_PRIV_APPMANAGE:
         printf("\tAccess: %d - ESS_PRIV_APPMANAGE\n", userInfo.Access);
         break;
      case ESS_PRIV_APPLOAD:
         printf("\tAccess: %d - ESS_PRIV_APPLOAD\n", userInfo.Access);
         break;
      case ESS_PRIV_DBCREATE:
         printf("\tAccess: %d - ESS_PRIV_DBCREATE\n", userInfo.Access);
         break;
      case ESS_PRIV_DBMANAGE:
         printf("\tAccess: %d - ESS_PRIV_DBMANAGE\n", userInfo.Access);
         break;
      case ESS_PRIV_DBLOAD:
         printf("\tAccess: %d - ESS_PRIV_DBLOAD\n", userInfo.Access);
         break;
      case ESS_PRIV_CALC:
         printf("\tAccess: %d - ESS_ACCESS_DBALL\n", userInfo.Access);
         break;
      case ESS_PRIV_WRITE:
         printf("\tAccess: %d - ESS_PRIV_WRITE\n", userInfo.Access);
         break;
      case ESS_PRIV_READ:
         printf("\tAccess: %d - ESS_PRIV_READ\n", userInfo.Access);
         break;
      case ESS_PRIV_NONE:
         printf("\tAccess: %d - ESS_PRIV_NONE\n", userInfo.Access);
         break;
      default:
         printf("\tAccess: Unknown\n");
   }

   switch(userInfo.MaxAccess)
   {
      case ESS_ACCESS_ADMIN:
         printf("\tMax Access: %d - ESS_ACCESS_ADMIN\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_APPALL:
         printf("\tMax Access: %d - ESS_ACCESS_APPALL\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_DBALL:
         printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_APPCREATE:
         printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_APPMANAGE:
         printf("\tMax Access: %d - ESS_ACCESS_APPMANAGE\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_DBCREATE:
         printf("\tMax Access: %d - ESS_ACCESS_DBCREATE\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_DBMANAGE:
         printf("\tMax Access: %d - ESS_ACCESS_DBMANAGE\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_CALC:
         printf("\tMax Access: %d - ESS_ACCESS_CALC\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_WRITE:
         printf("\tMax Access: %d - ESS_ACCESS_WRITE\n", userInfo.MaxAccess);
         break;
      case ESS_ACCESS_READ:
         printf("\tMax Access: %d - ESS_ACCESS_READ\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_USERCREATE:
         printf("\tMax Access: %d - ESS_PRIV_USERCREATE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_APPCREATE:
         printf("\tMax Access: %d - ESS_PRIV_APPCREATE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_APPMANAGE:
         printf("\tMax Access: %d - ESS_PRIV_APPMANAGE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_APPLOAD:
         printf("\tMax Access: %d - ESS_PRIV_APPLOAD\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_DBCREATE:
         printf("\tMax Access: %d - ESS_PRIV_DBCREATE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_DBMANAGE:
         printf("\tMax Access: %d - ESS_PRIV_DBMANAGE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_DBLOAD:
         printf("\tMax Access: %d - ESS_PRIV_DBLOAD\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_CALC:
         printf("\tMax Access: %d - ESS_ACCESS_DBALL\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_WRITE:
         printf("\tMax Access: %d - ESS_PRIV_WRITE\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_READ:
         printf("\tMax Access: %d - ESS_PRIV_READ\n", userInfo.MaxAccess);
         break;
      case ESS_PRIV_NONE:
         printf("\tMax Access: %d - ESS_PRIV_NONE\n", userInfo.MaxAccess);
         break;
      default:
         printf("\tMax Access: Unknown\n");
   }

   printf("\tPassword Expiration in Dates: %d\n",userInfo.Expiration);
   //EssSdCTime(NULL, userInfo.LastLogin, sizeof(time_string), time_string);
   //printf("\tLast Successful Login:            %s\n", time_string);
   printf("\tFailed Login Attempts Since Then: %d\n", userInfo.FailCount);
   printf("\tLogin ID: %ld\n", userInfo.LoginId);
   printf( "\n");   
}


ESS_FUNC_M ESS_ListUserConnectionsEx (ESS_HCTX_T hCtx, ESS_HINST_T hInst)

{
   ESS_STS_T sts = ESS_STS_NOERR;
   ESS_HCTX_T hLocalCtx1;
   ESS_HCTX_T hLocalCtx2;
   ESS_USHORT_T usercount, i = 0;
   ESS_PUSERINFOID_T userInfo = ESS_NULL;
   ESS_USHORT_T Items;
   ESS_PAPPDB_T pAppsDbs = ESS_NULL;


   usercount = 0;
   memset(&userInfo, '\0', sizeof(userInfo));
   sts = EssListConnectionsEx(hCtx, &usercount, &userInfo);
   printf("EssListConnectionsEx sts: %ld\n", sts);
   if(!sts)
   {
      printf("\nConnection count(s): %d\n", usercount);
      for(i = 0; i < usercount; i++)
      {
         DisplayUserInfoID2(userInfo[i]);
      }
   }



        return(sts);
}