コード例 #1
0
int
rsPamAuthRequest (rsComm_t *rsComm, pamAuthRequestInp_t *pamAuthRequestInp,
		  pamAuthRequestOut_t **pamAuthRequestOut)
{
    rodsServerHost_t *rodsServerHost;
    int status;

    status = getAndConnRcatHost(rsComm, MASTER_RCAT, 
                                rsComm->clientUser.rodsZone, &rodsServerHost);
    if (status < 0) {
       return(status);
    }
    if (rodsServerHost->localFlag == LOCAL_HOST) {
#ifdef RODS_CAT
       status = _rsPamAuthRequest(rsComm,  pamAuthRequestInp,
				  pamAuthRequestOut);

#else
       status = SYS_NO_RCAT_SERVER_ERR;
#endif
    }
    else {
#ifdef USE_SSL
        /* protect the PAM plain text password by
           using an SSL connection to the remote ICAT */
        status = sslStart(rodsServerHost->conn);
        if (status) {
            rodsLog(LOG_NOTICE, "rsPamAuthRequest: could not establish SSL connection, status %d",
                    status);
            return(status);
        }
#else
        rodsLog(LOG_ERROR, "iRODS doesn't include SSL support, required for PAM authentication.");
        return SSL_NOT_BUILT_INTO_SERVER;
#endif /* USE_SSL */

       status = rcPamAuthRequest(rodsServerHost->conn, pamAuthRequestInp,
				 pamAuthRequestOut);
#ifdef USE_SSL
       sslEnd(rodsServerHost->conn);
#endif
       rcDisconnect(rodsServerHost->conn);
       rodsServerHost->conn = NULL;
       if (status < 0) {
           rodsLog(LOG_NOTICE, "rsPamAuthRequest: rcPamAuthRequest to remote server failed, status %d",
                   status);
       }
    }
    return (status);
}
コード例 #2
0
ファイル: rsPamAuthRequest.cpp プロジェクト: pradal/irods
int
rsPamAuthRequest( rsComm_t *rsComm, pamAuthRequestInp_t *pamAuthRequestInp,
                  pamAuthRequestOut_t **pamAuthRequestOut ) {
    rodsServerHost_t *rodsServerHost;
    int status;

    status = getAndConnRcatHost( 
                 rsComm, 
                 MASTER_RCAT,
                 (const char*)rsComm->clientUser.rodsZone, 
                 &rodsServerHost );
    if ( status < 0 ) {
        return status;
    }
    if ( rodsServerHost->localFlag == LOCAL_HOST ) {
#ifdef RODS_CAT
        status = _rsPamAuthRequest( rsComm,  pamAuthRequestInp,
                                    pamAuthRequestOut );

#else
        status = SYS_NO_RCAT_SERVER_ERR;
#endif
    }
    else {
        /* protect the PAM plain text password by
           using an SSL connection to the remote ICAT */
        status = sslStart( rodsServerHost->conn );
        if ( status ) {
            rodsLog( LOG_NOTICE, "rsPamAuthRequest: could not establish SSL connection, status %d",
                     status );
            return status;
        }

        status = rcPamAuthRequest( rodsServerHost->conn, pamAuthRequestInp,
                                   pamAuthRequestOut );
        sslEnd( rodsServerHost->conn );
        rcDisconnect( rodsServerHost->conn );
        rodsServerHost->conn = NULL;
        if ( status < 0 ) {
            rodsLog( LOG_NOTICE, "rsPamAuthRequest: rcPamAuthRequest to remote server failed, status %d",
                     status );
        }
    }
    return status;
}