internal void UpdateSessionContextWithMessageSent( DrsrRpcInterfaceType currentInterfaceType, DrsrResponseStub messageToSend) { if (currentInterfaceType == DrsrRpcInterfaceType.DRSUAPI) { switch ((DrsuapiMethodOpnums)messageToSend.Opnum) { case DrsuapiMethodOpnums.DrsBind: DrsBindRequest bindRequest = requestReceived as DrsBindRequest; DrsBindResponse bindResponse = messageToSend as DrsBindResponse; if (bindRequest != null && bindResponse != null) { if (bindResponse.Status == 0) { drsHandles.Add(bindResponse.drsHandle); } } break; case DrsuapiMethodOpnums.DrsUnbind: DrsUnbindRequest unbindRequest = requestReceived as DrsUnbindRequest; DrsUnbindResponse unbindResponse = messageToSend as DrsUnbindResponse; if (unbindRequest != null && unbindResponse != null) { if (unbindResponse.Status == 0 && drsHandles.Contains(unbindRequest.drsHandle.Value)) { drsHandles.Remove(unbindRequest.drsHandle.Value); } } break; default: break; } } else if (currentInterfaceType == DrsrRpcInterfaceType.DSAOP) { switch ((DsaopMethodOpnums)messageToSend.Opnum) { case DsaopMethodOpnums.DsaPrepareScript: DsaPrepareScriptRequest PrepareRequest = requestReceived as DsaPrepareScriptRequest; DsaPrepareScriptResponse PrepareResponse = messageToSend as DsaPrepareScriptResponse; if (PrepareRequest != null && PrepareResponse != null) { if (PrepareResponse.Status == 0) { password = PrepareResponse.outMessage.Value.V1.pbPassword; } } break; case DsaopMethodOpnums.DsaExecuteScript: DsaExecuteScriptRequest executeRequest = requestReceived as DsaExecuteScriptRequest; DsaExecuteScriptResponse executeResponse = messageToSend as DsaExecuteScriptResponse; if (executeRequest != null && executeResponse != null) { if (executeResponse.Status == 0) { password = new byte[0]; } } break; } } }
internal static DrsrRequestStub CreateDrsrRequestStub(DrsrRpcInterfaceType interfaceType, ushort opnum) { DrsrRequestStub requestStub = null; if (interfaceType == DrsrRpcInterfaceType.DRSUAPI) { switch ((DrsuapiMethodOpnums)opnum) { case DrsuapiMethodOpnums.DrsBind: requestStub = new DrsBindRequest(); break; case DrsuapiMethodOpnums.DrsUnbind: requestStub = new DrsUnbindRequest(); break; case DrsuapiMethodOpnums.DrsReplicaSync: requestStub = new DrsReplicaSyncRequest(); break; case DrsuapiMethodOpnums.DrsGetNcChanges: requestStub = new DrsGetNcChangesRequest(); break; case DrsuapiMethodOpnums.DrsUpdateRefs: requestStub = new DrsUpdateRefsRequest(); break; case DrsuapiMethodOpnums.DrsReplicaAdd: requestStub = new DrsReplicaAddRequest(); break; case DrsuapiMethodOpnums.DrsReplicaDel: requestStub = new DrsReplicaDelRequest(); break; case DrsuapiMethodOpnums.DrsReplicaModify: requestStub = new DrsReplicaModifyRequest(); break; case DrsuapiMethodOpnums.DrsVerifyNames: requestStub = new DrsVerifyNamesRequest(); break; case DrsuapiMethodOpnums.DrsGetMemberships: requestStub = new DrsGetMembershipsRequest(); break; case DrsuapiMethodOpnums.DrsInterDomainMove: requestStub = new DrsInterDomainMoveRequest(); break; case DrsuapiMethodOpnums.DrsGetNt4ChangeLog: requestStub = new DrsGetNt4ChangeLogRequest(); break; case DrsuapiMethodOpnums.DrsCrackNames: requestStub = new DrsCrackNamesRequest(); break; case DrsuapiMethodOpnums.DrsWriteSPN: requestStub = new DrsWriteSpnRequest(); break; case DrsuapiMethodOpnums.DrsRemoveDsServer: requestStub = new DrsRemoveDsServerRequest(); break; case DrsuapiMethodOpnums.DrsRemoveDsDomain: requestStub = new DrsRemoveDsDomainRequest(); break; case DrsuapiMethodOpnums.DrsDomainControllerInfo: requestStub = new DrsDomainControllerInfoRequest(); break; case DrsuapiMethodOpnums.DrsAddEntry: requestStub = new DrsAddEntryRequest(); break; case DrsuapiMethodOpnums.DrsExecuteKcc: requestStub = new DrsExecuteKccRequest(); break; case DrsuapiMethodOpnums.DrsGetReplInfo: requestStub = new DrsGetReplInfoRequest(); break; case DrsuapiMethodOpnums.DrsAddSidHistory: requestStub = new DrsAddSidHistoryRequest(); break; case DrsuapiMethodOpnums.DrsGetMemberships2: requestStub = new DrsGetMemberships2Request(); break; case DrsuapiMethodOpnums.DrsReplicaVerifyObjects: requestStub = new DrsReplicaVerifyObjectsRequest(); break; case DrsuapiMethodOpnums.DrsGetObjectExistence: requestStub = new DrsGetObjectExistenceRequest(); break; case DrsuapiMethodOpnums.DrsQuerySitesByCost: requestStub = new DrsQuerySitesByCostRequest(); break; case DrsuapiMethodOpnums.DrsInitDemotion: requestStub = new DrsInitDemotionRequest(); break; case DrsuapiMethodOpnums.DrsReplicaDemotion: requestStub = new DrsReplicaDemotionRequest(); break; case DrsuapiMethodOpnums.DrsFinishDemotion: requestStub = new DrsFinishDemotionRequest(); break; } } else if (interfaceType == DrsrRpcInterfaceType.DSAOP) { switch ((DsaopMethodOpnums)opnum) { case DsaopMethodOpnums.DsaPrepareScript: requestStub = new DsaPrepareScriptRequest(); break; case DsaopMethodOpnums.DsaExecuteScript: requestStub = new DsaExecuteScriptRequest(); break; } } return(requestStub); }