示例#1
0
        /// <summary>
        /// Open up a port on the gateway.
        /// </summary>

        void Open(int port, bool tcp, OnPortRequest callback)
        {
            int id = (port << 8) | (tcp ? 1 : 0);

            if (port > 0 && !mPorts.Contains(id) && mStatus != Status.Failure)
            {
                mPorts.Add(id);

                ExtraParams xp = new ExtraParams();
                xp.callback = callback;
                xp.port     = port;
                xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
                xp.action   = "AddPortMapping";
                xp.request  = "<NewRemoteHost></NewRemoteHost>\n" +
                              "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                              "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n" +
                              "<NewInternalPort>" + port + "</NewInternalPort>\n" +
                              "<NewInternalClient>" + Tools.localAddress + "</NewInternalClient>\n" +
                              "<NewEnabled>1</NewEnabled>\n" +
                              "<NewPortMappingDescription>" + name + "</NewPortMappingDescription>\n" +
                              "<NewLeaseDuration>0</NewLeaseDuration>\n";

                xp.th = new Thread(OpenRequest);
                lock (mThreads) mThreads.Add(xp.th);
                xp.th.Start(xp);
            }
            else if (callback != null)
            {
                callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#2
0
        private void NotifyAbountGroupOccupantsOnUpdate(IList <int> currentOccupantsIds, IList <int> addedOccupantsIds, IList <int> deletedOccupantsIds, DateTime updatedAt)
        {
            if (currentOccupantsIds == null)
            {
                throw new ArgumentNullException(nameof(currentOccupantsIds));
            }

            string currentOccupants = string.Join(",", currentOccupantsIds);

            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.save_to_history, "1");
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogId);
            extraParams.AddNew(ExtraParamsList.notification_type, NotificationTypes.GroupUpdate.ToIntString());
            extraParams.AddNew(ExtraParamsList.current_occupant_ids, currentOccupants);
            extraParams.AddNew(ExtraParamsList.room_updated_date, updatedAt.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.dialog_update_info, DialogUpdateInfos.ModifiedOccupantsList.ToIntString());

            if (addedOccupantsIds != null && addedOccupantsIds.Any())
            {
                string addedOccupants = string.Join(",", addedOccupantsIds);
                extraParams.AddNew(ExtraParamsList.added_occupant_ids, addedOccupants);
            }

            if (deletedOccupantsIds != null && deletedOccupantsIds.Any())
            {
                string deletedOccupants = string.Join(",", deletedOccupantsIds);
                extraParams.AddNew(ExtraParamsList.deleted_occupant_ids, deletedOccupants);
            }

            quickbloxClient.ChatXmppClient.SendMessage(groupJid, "Notification Message", extraParams, dialogId, null, MessageType.Groupchat);
        }
示例#3
0
        /// <summary>
        /// Stop port forwarding that was set up earlier.
        /// </summary>

        void Close(int port, bool tcp, OnPortRequest callback)
        {
            int id = (port << 8) | (tcp ? 1 : 0);

            if (port > 0 && mPorts.Remove(id) && mStatus == Status.Success)
            {
                ExtraParams xp = new ExtraParams();
                xp.callback = callback;
                xp.port     = port;
                xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
                xp.action   = "DeletePortMapping";
                xp.request  = "<NewRemoteHost></NewRemoteHost>\n" +
                              "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                              "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n";

                if (callback != null)
                {
                    xp.th = new Thread(CloseRequest);

                    lock (mThreads)
                    {
                        mThreads.Add(xp.th);
                        xp.th.Start(xp);
                    }
                }
                else
                {
                    CloseRequest(xp);
                }
            }
            else if (callback != null)
            {
                callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#4
0
        /// <summary>
        /// Sends a Message to other user.
        /// </summary>
        /// <param name="message">Message text</param>
        /// <returns>Is operation successful</returns>
        public void SendMessage(string message)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.save_to_history, "1");
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogId);

            quickbloxClient.ChatXmppClient.SendMessage(groupJid, message, extraParams, dialogId, null, MessageType.Groupchat);
        }
示例#5
0
        public async Task <IActionResult> GetExtras(int hotelId, [FromQuery] ExtraParams extraParams)
        {
            var extras = await _repo.GetExtras(extraParams, hotelId);

            var extrasToReturn = _mapper.Map <IEnumerable <ExtraForListDto> >(extras);

            Response.AddPagination(extras.CurrentPage, extras.PageSize, extras.TotalCount, extras.TotalPages);

            return(Ok(extrasToReturn));
        }
示例#6
0
        /// <summary>
        /// Sends an attachemnt to another user.
        /// </summary>
        /// <param name="attachment">Attachment</param>
        /// <returns></returns>
        public void SendAttachemnt(AttachmentTag attachment)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.save_to_history, "1");
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogId);
            extraParams.Add(attachment);

            quickbloxClient.ChatXmppClient.SendMessage(groupJid, "Attachment", extraParams, dialogId, null, MessageType.Groupchat);
        }
示例#7
0
        private void SendFriendsNotification(string messageText, NotificationTypes notificationType)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.save_to_history, "1");
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogId);
            extraParams.AddNew(ExtraParamsList.notification_type, ((int)notificationType).ToString());

            quickbloxClient.ChatXmppClient.SendMessage(otherUserJid, messageText, extraParams, dialogId, null);
        }
示例#8
0
        /// <summary>
        /// Open up a port on the gateway.
        /// </summary>

        void Open(int port, bool tcp, OnPortRequest callback)
        {
            // IPv6 doesn't need port forwarding
            if (TcpProtocol.defaultListenerInterface.AddressFamily == AddressFamily.InterNetworkV6)
            {
                return;
            }

            if (port > 0)
            {
                int id = (port << 8) | (tcp ? 1 : 0);

                if (!mPorts.Contains(id) && mStatus != Status.Failure)
                {
                    if (mStatus == Status.Inactive)
                    {
                        Start();
                        WaitForThreads();
                    }

                    string addr = Tools.localAddress.ToString();
                    if (addr == "127.0.0.1")
                    {
                        return;
                    }

                    mPorts.Add(id);

                    ExtraParams xp = new ExtraParams();
                    xp.callback = callback;
                    xp.port     = port;
                    xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
                    xp.action   = "AddPortMapping";
                    xp.request  = "<NewRemoteHost></NewRemoteHost>\n" +
                                  "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                                  "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n" +
                                  "<NewInternalPort>" + port + "</NewInternalPort>\n" +
                                  "<NewInternalClient>" + addr + "</NewInternalClient>\n" +
                                  "<NewEnabled>1</NewEnabled>\n" +
                                  "<NewPortMappingDescription>" + name + "</NewPortMappingDescription>\n" +
                                  "<NewLeaseDuration>0</NewLeaseDuration>\n";

                    xp.th = new Thread(OpenRequest);
                    lock (mThreads) mThreads.Add(xp.th);
                    xp.th.Start(xp);
                    return;
                }
            }

            if (callback != null)
            {
                callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#9
0
        /// <summary>
        /// Open up a port on the gateway.
        /// </summary>
        private void Open(int port, bool tcp, OnPortRequest callback)
        {
            int id = (port << 8) | (tcp ? 1 : 0);

            if (port > 0 && !mPorts.Contains(id) && mStatus != Status.Failure)
            {
                ListLessGarb <IPAddress> debug = NetworkUtility.localAddresses;

                if (mDiscover == null)
                {
                    mDiscover = new Thread(ThreadDiscover);
                    mThreads.Add(mDiscover);
                    mDiscover.Start(mDiscover);
                }

                string addr = NetworkUtility.localAddress.ToString();
                if (addr == "127.0.0.1")
                {
                    return;
                }

                mPorts.Add(id);

                ExtraParams xp = new ExtraParams();
                xp.callback = callback;
                xp.port     = port;
                xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
                xp.action   = "AddPortMapping";
                xp.request  = "<NewRemoteHost></NewRemoteHost>\n" +
                              "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                              "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n" +
                              "<NewInternalPort>" + port + "</NewInternalPort>\n" +
                              "<NewInternalClient>" + addr + "</NewInternalClient>\n" +
                              "<NewEnabled>1</NewEnabled>\n" +
                              "<NewPortMappingDescription>" + name + "</NewPortMappingDescription>\n" +
                              "<NewLeaseDuration>0</NewLeaseDuration>\n";

                xp.th = new Thread(OpenRequest);
                lock (mThreads)
                {
                    mThreads.Add(xp.th);
                }

                xp.th.Start(xp);

                Debug.Log("[UPnP:Open(" + port + ", " + (tcp ? "TCP" : "UDP") + ")] -> Requested");
            }
            else if (callback != null)
            {
                callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#10
0
        /// <summary>
        /// Sends notification group chat Message that group chat name has been changed.
        /// </summary>
        /// <param name="groupName">New group chat name</param>
        /// <param name="updatedAt">DateTime when a group was updated (from update response)</param>
        /// <returns>Is operation successful</returns>
        public void NotifyGroupNameChanged(string groupName, DateTime updatedAt)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.save_to_history, "1");
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogId);
            extraParams.AddNew(ExtraParamsList.notification_type, NotificationTypes.GroupUpdate.ToIntString());
            extraParams.AddNew(ExtraParamsList.room_name, groupName);
            extraParams.AddNew(ExtraParamsList.room_updated_date, updatedAt.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.dialog_update_info, DialogUpdateInfos.UpdatedDialogName.ToIntString());

            quickbloxClient.ChatXmppClient.SendMessage(groupJid, "Notification Message", extraParams, dialogId, null, MessageType.Groupchat);
        }
示例#11
0
        /// <summary>
        /// Open or close request.
        /// </summary>

        void SendRequest(ExtraParams xp)
        {
            string response = (mStatus == Status.Success) ? SendRequest(xp.action, xp.request, 10000, 3) : null;

            if (xp.callback != null)
            {
                xp.callback(this, xp.port, xp.protocol, !string.IsNullOrEmpty(response));
            }
            if (xp.th != null)
            {
                lock (mThreads) mThreads.Remove(xp.th);
            }
        }
示例#12
0
        /// <summary>
        /// Open up a port on the gateway.
        /// </summary>

        void Open(int port, bool tcp, OnPortRequest callback)
        {
            if (port > 0)
            {
                int id = (port << 8) | (tcp ? 1 : 0);

                if (!mPorts.Contains(id) && mStatus != Status.Failure)
                {
                    if (mStatus == Status.Inactive)
                    {
                        Start();
                        WaitForThreads();
                    }

                    string addr = Tools.localAddress.ToString();
                    if (addr == "127.0.0.1")
                    {
                        return;
                    }

#if UNITY_EDITOR
                    UnityEngine.Debug.Log("Opening " + (tcp ? "TCP" : "UDP") + " port " + port);
#endif
                    mPorts.Add(id);

                    ExtraParams xp = new ExtraParams();
                    xp.callback = callback;
                    xp.port     = port;
                    xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
                    xp.action   = "AddPortMapping";
                    xp.request  = "<NewRemoteHost></NewRemoteHost>\n" +
                                  "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                                  "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n" +
                                  "<NewInternalPort>" + port + "</NewInternalPort>\n" +
                                  "<NewInternalClient>" + addr + "</NewInternalClient>\n" +
                                  "<NewEnabled>1</NewEnabled>\n" +
                                  "<NewPortMappingDescription>" + name + "</NewPortMappingDescription>\n" +
                                  "<NewLeaseDuration>0</NewLeaseDuration>\n";

                    xp.th = new Thread(OpenRequest);
                    lock (mThreads) mThreads.Add(xp.th);
                    xp.th.Start(xp);
                    return;
                }
            }

            if (callback != null)
            {
                callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#13
0
        private NotificationTypes GetNotificationType(XElement extraParams)
        {
            var notificationType = extraParams.Element(ExtraParams.GetXNameFor(ExtraParamsList.notification_type));

            if (notificationType != null)
            {
                int intValue;
                if (int.TryParse(notificationType.Value, out intValue))
                {
                    if (Enum.IsDefined(typeof(NotificationTypes), intValue))
                    {
                        return((NotificationTypes)intValue);
                    }
                }
            }

            return(default(NotificationTypes));
        }
示例#14
0
        private bool CheckIsSystemMessage(Xmpp.Im.Message xmppXmppMessage)
        {
            if (xmppXmppMessage.Type != Xmpp.Im.MessageType.Headline)
            {
                return(false);
            }

            if (xmppXmppMessage.ExtraParameters != null)
            {
                var moduleIdentifier = xmppXmppMessage.ExtraParameters.Element(ExtraParams.GetXNameFor(ExtraParamsList.moduleIdentifier));
                if (moduleIdentifier == null || moduleIdentifier.Value != SystemMessage.SystemMessageModuleIdentifier)
                {
                    return(false);
                }
            }

            return(true);
        }
示例#15
0
        private void FillUsualMessageExtraParamsFields(XElement extraParams, GeneralDataModel.Models.Message result)
        {
            if (extraParams != null)
            {
                result.ChatDialogId = GetExtraParam(extraParams, ExtraParamsList.dialog_id);

                var dateSent = extraParams.Element(ExtraParams.GetXNameFor(ExtraParamsList.date_sent));
                if (dateSent != null)
                {
                    long longValue;
                    if (long.TryParse(dateSent.Value, out longValue))
                    {
                        result.DateSent = longValue;
                    }
                }

                var stringIntListConverter = new StringIntListConverter();

                result.NotificationType = GetNotificationType(extraParams);

                result.RoomPhoto           = GetExtraParam(extraParams, ExtraParamsList.room_photo);
                result.RoomName            = GetExtraParam(extraParams, ExtraParamsList.room_name);
                result.CurrentOccupantsIds = stringIntListConverter.ConvertToIntList(GetExtraParam(extraParams, ExtraParamsList.current_occupant_ids));
                result.AddedOccupantsIds   = stringIntListConverter.ConvertToIntList(GetExtraParam(extraParams, ExtraParamsList.added_occupant_ids));
                result.DeletedOccupantsIds = stringIntListConverter.ConvertToIntList(GetExtraParam(extraParams, ExtraParamsList.deleted_occupant_ids));
                result.ExtraParameters     = extraParams;

                double roomUpdateDate;
                if (Double.TryParse(GetExtraParam(extraParams, ExtraParamsList.room_updated_date), out roomUpdateDate))
                {
                    result.RoomUpdateDate = roomUpdateDate;
                }

                var deletedId = GetExtraParam(extraParams, ExtraParamsList.deleted_id);
                if (deletedId != null)
                {
                    int deletedIdInt;
                    if (int.TryParse(deletedId, out deletedIdInt))
                    {
                        result.DeletedId = deletedIdInt;
                    }
                }
            }
        }
示例#16
0
        private void FillAttachments(XElement extraParams, GeneralDataModel.Models.Message result)
        {
            if (extraParams != null)
            {
                var attachmentParam = extraParams.Element(ExtraParams.GetXNameFor(ExtraParamsList.attachment));
                if (attachmentParam != null)
                {
                    var attachemnt = new Attachment
                    {
                        Name = GetAttributeValue(attachmentParam, XName.Get("name")),
                        Id   = GetAttributeValue(attachmentParam, XName.Get("id")),
                        Type = GetAttributeValue(attachmentParam, XName.Get("type")),
                        Url  = GetAttributeValue(attachmentParam, XName.Get("url"))
                    };

                    result.Attachments = new Attachment[] { attachemnt };
                }
            }
        }
示例#17
0
        public async Task <PagedList <Extra> > GetExtras(ExtraParams extraParams, int hotelID)
        {
            var extras = _context.Extras.Where(u => u.HotelId == hotelID).OrderBy(u => u.ExtraName).AsQueryable();

            if (!string.IsNullOrEmpty(extraParams.OrderBy))
            {
                switch (extraParams.OrderBy)
                {
                case "ExtraType":
                    extras = extras.OrderBy(u => u.ExtraType).ThenBy(u => u.ExtraName);
                    break;

                default:
                    extras = extras.OrderBy(u => u.ExtraName);
                    break;
                }
            }

            return(await PagedList <Extra> .CreateAsync(extras, extraParams.PageNumber, extraParams.PageSize));
        }
示例#18
0
        private void SendGroupInfoSystemMessage(int userId, Dialog dialogInfo)
        {
            var extraParams = new ExtraParams();

            extraParams.AddNew(ExtraParamsList.moduleIdentifier, SystemMessage.SystemMessageModuleIdentifier);
            extraParams.AddNew(ExtraParamsList.notification_type, NotificationTypes.GroupCreate.ToIntString());
            extraParams.AddNew(ExtraParamsList.date_sent, DateTime.UtcNow.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.room_updated_date, dialogInfo.UpdateAt.ToUnixEpoch().ToString());
            extraParams.AddNew(ExtraParamsList.dialog_id, dialogInfo.Id);
            extraParams.AddNew(ExtraParamsList.room_name, dialogInfo.Name);
            extraParams.AddNew(ExtraParamsList.current_occupant_ids, string.Join(",", dialogInfo.OccupantsIds));
            extraParams.AddNew(ExtraParamsList.type, ((int)dialogInfo.Type).ToString());

            if (!string.IsNullOrEmpty(dialogInfo.Photo))
            {
                extraParams.AddNew(ExtraParamsList.room_photo, dialogInfo.Photo);
            }

            var userJid = ChatXmppClient.BuildJid(userId, quickbloxClient.ApplicationId, quickbloxClient.ChatEndpoint);

            quickbloxClient.ChatXmppClient.SendMessage(userJid, "Notification Message", extraParams, dialogId, null, MessageType.Headline);
        }
示例#19
0
 public void OnExtra(object sender, EventArgs e)
 {
     ExtraParams?.Invoke(this, e);
 }
示例#20
0
 internal IDictionary <string, string> GetExtraParams()
 {
     return(ExtraParams.FromByteArray(
                (keyBytes) => System.Text.Encoding.UTF8.GetString(keyBytes),
                (valueBytes) => System.Text.Encoding.UTF8.GetString(valueBytes)));
 }
示例#21
0
 /// <summary>
 /// Open or close request.
 /// </summary>
 void SendRequest(ExtraParams xp)
 {
     string response = (mStatus == Status.Success) ? SendRequest(xp.action, xp.request, 10000, 3) : null;
     if (xp.callback != null)
     xp.callback(this, xp.port, xp.protocol, !string.IsNullOrEmpty(response));
     if (xp.th != null) lock (mThreads) mThreads.Remove(xp.th);
 }
示例#22
0
        /// <summary>
        /// Open up a port on the gateway.
        /// </summary>
        void Open(int port, bool tcp, OnPortRequest callback)
        {
            if (mStatus == Status.Inactive)
            {
            Start();
            WaitForThreads();
            }

            int id = (port << 8) | (tcp ? 1 : 0);

            if (port > 0 && !mPorts.Contains(id) && mStatus != Status.Failure)
            {
            string addr = Tools.localAddress.ToString();
            if (addr == "127.0.0.1") return;

            mPorts.Add(id);

            ExtraParams xp = new ExtraParams();
            xp.callback = callback;
            xp.port = port;
            xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
            xp.action = "AddPortMapping";
            xp.request = "<NewRemoteHost></NewRemoteHost>\n" +
                "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n" +
                "<NewInternalPort>" + port + "</NewInternalPort>\n" +
                "<NewInternalClient>" + addr + "</NewInternalClient>\n" +
                "<NewEnabled>1</NewEnabled>\n" +
                "<NewPortMappingDescription>" + name + "</NewPortMappingDescription>\n" +
                "<NewLeaseDuration>0</NewLeaseDuration>\n";

            xp.th = new Thread(OpenRequest);
            lock (mThreads) mThreads.Add(xp.th);
            xp.th.Start(xp);
            }
            else if (callback != null)
            {
            callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#23
0
        /// <summary>
        /// Stop port forwarding that was set up earlier.
        /// </summary>
        void Close(int port, bool tcp, OnPortRequest callback)
        {
            int id = (port << 8) | (tcp ? 1 : 0);

            if (port > 0 && mPorts.Remove(id) && mStatus == Status.Success)
            {
            ExtraParams xp = new ExtraParams();
            xp.callback = callback;
            xp.port = port;
            xp.protocol = tcp ? ProtocolType.Tcp : ProtocolType.Udp;
            xp.action = "DeletePortMapping";
            xp.request = "<NewRemoteHost></NewRemoteHost>\n" +
                "<NewExternalPort>" + port + "</NewExternalPort>\n" +
                "<NewProtocol>" + (tcp ? "TCP" : "UDP") + "</NewProtocol>\n";

            if (callback != null)
            {
                xp.th = new Thread(CloseRequest);

                lock (mThreads)
                {
                    mThreads.Add(xp.th);
                    xp.th.Start(xp);
                }
            }
            else CloseRequest(xp);
            }
            else if (callback != null)
            {
            callback(this, port, tcp ? ProtocolType.Tcp : ProtocolType.Udp, false);
            }
        }
示例#24
0
 public void AddExtraParam(string key, string value)
 {
     ExtraParams.Add(key, value);
 }
示例#25
0
        private string GetExtraParam(XElement extraParams, ExtraParamsList neededExtraParam)
        {
            var extraParam = extraParams.Element(ExtraParams.GetXNameFor(neededExtraParam));

            return(extraParam?.Value);
        }
示例#26
0
 public RequestContext SetExtraParam(object param)
 {
     ExtraParams.Merge(param);
     return(this);
 }