Exemple #1
0
        private void HandleAccountEmailValidation(HttpContext context, TBAccount account, TBEmailValidation emailValidation)
        {
            if (account.Emails.CollectionContent.Find(candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == null)
            {
                TBEmail email = TBEmail.CreateDefault();
                email.EmailAddress = emailValidation.Email;
                email.ValidatedAt  = DateTime.Now;
                account.Emails.CollectionContent.Add(email);
                account.StoreAccountToRoot();
                // TODO: Move Emailroot storage to account root syncs
                string       emailRootID = TBREmailRoot.GetIDFromEmailAddress(email.EmailAddress);
                TBREmailRoot emailRoot   = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID);
                if (emailRoot == null)
                {
                    emailRoot    = TBREmailRoot.CreateDefault();
                    emailRoot.ID = emailRootID;
                    emailRoot.UpdateRelativeLocationFromID();
                }
                emailRoot.Account = account;
                StorageSupport.StoreInformation(emailRoot);

                string accountID = account.ID;
                UpdateAccountRootToReferences.Execute(new UpdateAccountRootToReferencesParameters
                {
                    AccountID = accountID
                });
                UpdateAccountContainerFromAccountRoot.Execute(new UpdateAccountContainerFromAccountRootParameters
                {
                    AccountID = accountID
                });
            }

            context.Response.Redirect("/auth/account/website/oip-account/oip-layout-account-welcome.phtml", true);
        }
Exemple #2
0
        private static void UpdateAccountAndGroups(string accountEmail)
        {
            string         emailID     = TBREmailRoot.GetIDFromEmailAddress(accountEmail);
            TBREmailRoot   emailRoot   = TBREmailRoot.RetrieveFromDefaultLocation(emailID);
            TBRAccountRoot accountRoot = TBRAccountRoot.RetrieveFromDefaultLocation(emailRoot.Account.ID);

            foreach (var groupRole in accountRoot.Account.GroupRoleCollection.CollectionContent)
            {
                TBRGroupRoot groupRoot = TBRGroupRoot.RetrieveFromDefaultLocation(groupRole.GroupID);
                RefreshAccountGroupMemberships.Execute(new RefreshAccountGroupMembershipsParameters
                {
                    AccountID = accountRoot.Account.ID,
                    GroupRoot = groupRoot
                });
                InformationContext.ProcessAndClearCurrent();
                InformationContext.Current.InitializeCloudStorageAccess(Properties.Settings.Default.CurrentActiveContainerName);
            }
        }
Exemple #3
0
        private async Task HandleWebSocket(WebSocketContext wsContext)
        {
            const int maxMessageSize = 16 * 1024;

            byte[]    receiveBuffer = new byte[maxMessageSize];
            WebSocket socket        = wsContext.WebSocket;

            Func <InformationContext, WebSocketContext, WebSocket, byte[], string, Task> OnReceiveMessage = HandleDeviceNegotiations;
            Action <WebSocketContext, WebSocket> OnClose = HandleCloseMessage;
            InformationContext informationContext        = new InformationContext();
            var    request      = HttpContext.Current.Request;
            string accountEmail = request.Params["accountemail"];
            string groupID      = request.Params["groupID"];

            if (String.IsNullOrEmpty(accountEmail) == false)
            {
                string emailRootID = TBREmailRoot.GetIDFromEmailAddress(accountEmail);
                var    emailRoot   = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID);
                if (emailRoot == null)
                {
                    throw new SecurityException("No such email defined: " + accountEmail);
                }
                informationContext.Owner = emailRoot.Account;
            }
            else if (String.IsNullOrEmpty(groupID) == false)
            {
                TBRGroupRoot groupRoot = TBRGroupRoot.RetrieveFromDefaultLocation(groupID);
                if (groupRoot == null)
                {
                    throw new SecurityException("No such groupID defined: " + groupID);
                }
                informationContext.Owner = groupRoot.Group;
            }

            while (socket.State == WebSocketState.Open)
            {
                WebSocketReceiveResult receiveResult =
                    await socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer), CancellationToken.None);

                if (receiveResult.MessageType == WebSocketMessageType.Close)
                {
                    await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);

                    OnClose(wsContext, socket);
                }
                else if (receiveResult.MessageType == WebSocketMessageType.Binary)
                {
                    //await
                    //    socket.CloseAsync(WebSocketCloseStatus.InvalidMessageType, "Cannot accept binary frame",
                    //                      CancellationToken.None);

                    int count = receiveResult.Count;

                    while (receiveResult.EndOfMessage == false)
                    {
                        if (count >= maxMessageSize)
                        {
                            string closeMessage = string.Format("Maximum message size: {0} bytes.", maxMessageSize);
                            await
                            socket.CloseAsync(WebSocketCloseStatus.MessageTooBig, closeMessage,
                                              CancellationToken.None);

                            return;
                        }
                        receiveResult =
                            await
                            socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer, count, maxMessageSize - count),
                                                CancellationToken.None);

                        count += receiveResult.Count;
                    }
                    //var receivedString = Encoding.UTF8.GetString(receiveBuffer, 0, count);
                    byte[] binaryMessage = new byte[count];
                    Array.Copy(receiveBuffer, binaryMessage, count);
                    await OnReceiveMessage(informationContext, wsContext, socket, binaryMessage, null);
                }
                else
                {
                    int count = receiveResult.Count;

                    while (receiveResult.EndOfMessage == false)
                    {
                        if (count >= maxMessageSize)
                        {
                            string closeMessage = string.Format("Maximum message size: {0} bytes.", maxMessageSize);
                            await
                            socket.CloseAsync(WebSocketCloseStatus.MessageTooBig, closeMessage,
                                              CancellationToken.None);

                            return;
                        }
                        receiveResult =
                            await
                            socket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer, count, maxMessageSize - count),
                                                CancellationToken.None);

                        count += receiveResult.Count;
                    }
                    var textMessage = Encoding.UTF8.GetString(receiveBuffer, 0, count);
                    await OnReceiveMessage(informationContext, wsContext, socket, null, textMessage);
                }
            }
        }