ANSC_STATUS WebSsoRegisterMdhIf ( ANSC_HANDLE hThisObject, PUCHAR pRequestUri, ANSC_HANDLE hMdhIf ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PWEB_SIMPLE_SERVER_OBJECT pMyObject = (PWEB_SIMPLE_SERVER_OBJECT)hThisObject; PHTTP_FUM_INTERFACE pFumIf = (PHTTP_FUM_INTERFACE )pMyObject->hFumIf; PHTTP_FUM_ENTITY pEntity = NULL; if ( (ANSC_HANDLE)NULL == pFumIf->GetMdhIf(pFumIf->hOwnerContext, pRequestUri) ) { HttpFumEntityAlloc(pEntity, pRequestUri, hMdhIf); if ( !pEntity ) { returnStatus = ANSC_STATUS_RESOURCES; } else { AnscAcquireLock(&pMyObject->MdhSListLock); AnscSListPushEntry(&pMyObject->MdhSList, &pEntity->Linkage); AnscReleaseLock(&pMyObject->MdhSListLock); } } return returnStatus; }
ANSC_STATUS HttpBmoSaveFormAsFile ( ANSC_HANDLE hThisObject, char* param_name, char* file_name, BOOL bFlushBody ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PHTTP_BASIC_MESSAGE_OBJECT pMyObject = (PHTTP_BASIC_MESSAGE_OBJECT)hThisObject; PHTTP_BMO_REQ_OBJECT pBmoReq = (PHTTP_BMO_REQ_OBJECT )pMyObject; PHTTP_HFP_INTERFACE pHfpIf = (PHTTP_HFP_INTERFACE )pMyObject->hHfpIf; PHTTP_TMH_INTERFACE pTmhIf = (PHTTP_TMH_INTERFACE )pMyObject->hTmhIf; PHTTP_BCC_INTERFACE pBccIf = (PHTTP_BCC_INTERFACE )pMyObject->hBccIf; PHTTP_RCP_INTERFACE pRcpIf = (PHTTP_RCP_INTERFACE )pBmoReq->hRcpIf; PHTTP_FUM_INTERFACE pFumIf = (PHTTP_FUM_INTERFACE )pMyObject->hFumIf; PHTTP_MDH_INTERFACE pMdhIf = (PHTTP_MDH_INTERFACE )NULL; PHTTP_MESSAGE_BODY_OBJECT pMessageBody = (PHTTP_MESSAGE_BODY_OBJECT )pMyObject->hMessageBody; char* pBoundaryStr = NULL; ULONG ulEncType = HTTP_HFP_FORM_ENCTYPE_URLENCODED; ULONG ulMediaType = IANA_MEDIA_TYPE_CODE_APPLICATION; ULONG ulSubType = IANA_MT_AP_STYPE_CODE_X_FORM_URLENCODED; char* pReqUri = pRcpIf->GetPathInfo(pRcpIf->hOwnerContext, (ANSC_HANDLE)pMyObject); pMdhIf = (PHTTP_MDH_INTERFACE)pFumIf->GetMdhIf(pFumIf->hOwnerContext, pReqUri); if ( pMdhIf ) { return pMdhIf->SaveFileAs ( pMdhIf->hOwnerContext, pBmoReq->GetWebSessionId((ANSC_HANDLE)pBmoReq), pReqUri, param_name, file_name ); } if ( !pMessageBody || (pMyObject->Oid != HTTP_BMO_REQ_OID) ) { return ANSC_STATUS_UNAPPLICABLE; } else if ( pBmoReq->GetMethod((ANSC_HANDLE)pBmoReq) != HTTP_METHOD_CODE_POST ) { return ANSC_STATUS_UNAPPLICABLE; } if ( TRUE ) { returnStatus = HttpBmoReqCgiGetContentType ( (ANSC_HANDLE)pBmoReq, &ulMediaType, &ulSubType ); if ( (ulMediaType == IANA_MEDIA_TYPE_CODE_APPLICATION ) && (ulSubType == IANA_MT_AP_STYPE_CODE_X_FORM_URLENCODED) ) { ulEncType = HTTP_HFP_FORM_ENCTYPE_URLENCODED; } else if ( (ulMediaType == IANA_MEDIA_TYPE_CODE_MULTIPART ) && (ulSubType == IANA_MT_MP_STYPE_CODE_FORM_DATA) ) { ulEncType = HTTP_HFP_FORM_ENCTYPE_MULTIPART; pBoundaryStr = HttpBmoReqCgiGetBoundaryDelimiter((ANSC_HANDLE)pBmoReq); if ( !pBoundaryStr ) { return ANSC_STATUS_UNAPPLICABLE; } } else { return ANSC_STATUS_UNAPPLICABLE; } } returnStatus = pHfpIf->SaveFormPartAsFile ( pHfpIf->hOwnerContext, param_name, file_name, ulEncType, pBoundaryStr, (ANSC_HANDLE)pMessageBody, bFlushBody ); if ( pBoundaryStr ) { AnscFreeMemory(pBoundaryStr); } return returnStatus; }