private void IFetchNodeRefs() { pnCli2Auth_VaultFetchNodeRefs req = new pnCli2Auth_VaultFetchNodeRefs(); req.Read(fStream); if (fPlayerID == 0) { // Can't fetch NodeRefs if we're not logged in... pnAuth2Cli_VaultNodeRefsFetched reply = new pnAuth2Cli_VaultNodeRefsFetched(); reply.fResult = ENetError.kNetErrVaultNodeAccessViolation; reply.fTransID = req.fTransID; reply.Send(fStream); } else if (fPermissions >= pnAcctPerms.CCR) { // If we're a CCR+, then we can grab any tree we want. fVaultCli.FetchNodeRefs(req.fNodeID, new pnCallback(new pnVaultNodeRefsFetched(IOnNodeRefsFetched), req.fTransID)); } else { // For everyone else, we need to inspect the parent node for security fVaultCli.FetchNode(req.fNodeID, new pnCallback(new pnVaultNodeFetched(ITreeFetchRequest), req.fTransID)); } }
private void IVaultNodeRefsFetched() { pnAuth2Cli_VaultNodeRefsFetched reply = new pnAuth2Cli_VaultNodeRefsFetched(); reply.Read(fStream); FireCallback(reply.fTransID, new object[] { reply.fResult, reply.fNodeRefs, null }); }
private void ITreeFetchRequest(ENetError result, pnVaultNode node, object param) { ENetError decision = ENetError.kNetErrVaultNodeAccessViolation; if (result != ENetError.kNetSuccess) // If something bad happens vault side, we cannot proceed :( decision = result; else if (node == null) // Successful node fetch but node is null? O.o result = ENetError.kNetErrInternalError; else if (node.NodeType == ENodeType.kNodeAge || node.NodeType == ENodeType.kNodeAgeInfo) // We will fetch the tree of ages when we link to them decision = ENetError.kNetSuccess; else if (node.NodeType == ENodeType.kNodePlayer) // We can only fetch our player if (fPlayerID == node.NodeID) decision = ENetError.kNetSuccess; if (decision == ENetError.kNetSuccess) fVaultCli.FetchNodeRefs(node.NodeID, new pnCallback(new pnVaultNodeRefsFetched(IOnNodeRefsFetched), param)); else { pnAuth2Cli_VaultNodeRefsFetched reply = new pnAuth2Cli_VaultNodeRefsFetched(); reply.fResult = decision; reply.fTransID = (uint)param; lock (fStream) reply.Send(fStream); } }
private void IOnNodeRefsFetched(ENetError result, pnVaultNodeRef[] refs, object param) { pnAuth2Cli_VaultNodeRefsFetched reply = new pnAuth2Cli_VaultNodeRefsFetched(); reply.fNodeRefs = refs; reply.fResult = result; reply.fTransID = (uint)param; lock (fStream) reply.Send(fStream); }