Exemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatSettings = Global.Container.Resolve<IChatSettings>();
                }
                importsSatisfied = true;
            }

            string resourceName = context.Request.Params["resname"];
            if (resourceName != "DetectWebcam")
                resourceName = resourceName + "_" + 
                    (String.IsNullOrWhiteSpace(chatSettings.FlashServerType) ? "fms" : chatSettings.FlashServerType.Trim());

            using (Stream swfFile = Assembly.GetExecutingAssembly().GetManifestResourceStream("eStreamChat." + resourceName + ".swf"))
            {
                context.Response.ContentType = "application/x-shockwave-flash";
                context.Response.AddHeader("content-length", swfFile.Length.ToString());
                
                byte[] buffer = new byte[swfFile.Length];
                
                while(swfFile.Read(buffer, 0, buffer.Length) > 0)
                {
                    context.Response.BinaryWrite(buffer);
                }

                context.Response.Flush();
                context.Response.End();
            }

        }
Exemplo n.º 2
0
        public void ProcessRequest(HttpContext context)
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatSettings = Global.Container.Resolve <IChatSettings>();
                }
                importsSatisfied = true;
            }

            string resourceName = context.Request.Params["resname"];

            if (resourceName != "DetectWebcam")
            {
                resourceName = resourceName + "_" +
                               (String.IsNullOrWhiteSpace(chatSettings.FlashServerType) ? "fms" : chatSettings.FlashServerType.Trim());
            }

            using (Stream swfFile = Assembly.GetExecutingAssembly().GetManifestResourceStream("eStreamChat." + resourceName + ".swf"))
            {
                context.Response.ContentType = "application/x-shockwave-flash";
                context.Response.AddHeader("content-length", swfFile.Length.ToString());

                byte[] buffer = new byte[swfFile.Length];

                while (swfFile.Read(buffer, 0, buffer.Length) > 0)
                {
                    context.Response.BinaryWrite(buffer);
                }

                context.Response.Flush();
                context.Response.End();
            }
        }
Exemplo n.º 3
0
        public ChatEngine()
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatRoomProvider = Global.Container.Resolve<IChatRoomProvider>();
                    chatRoomStorage = Global.Container.Resolve<IChatRoomStorage>();
                    chatUserProvider = Global.Container.Resolve<IChatUserProvider>();
                    chatSettingsProvider = Global.Container.Resolve<IChatSettings>();
                    if (Global.Container.IsRegistered<IMessengerPresenceProvider>())
                        messengerProvider = Global.Container.Resolve<IMessengerPresenceProvider>();
                }
                importsSatisfied = true;
            }

            CleanTimedOutUsers.Initialize(chatUserProvider, chatRoomStorage);
        }
Exemplo n.º 4
0
        public ChatEngine()
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatRoomProvider     = Global.Container.Resolve <IChatRoomProvider>();
                    chatRoomStorage      = Global.Container.Resolve <IChatRoomStorage>();
                    chatUserProvider     = Global.Container.Resolve <IChatUserProvider>();
                    chatSettingsProvider = Global.Container.Resolve <IChatSettings>();
                    if (Global.Container.IsRegistered <IMessengerPresenceProvider>())
                    {
                        messengerProvider = Global.Container.Resolve <IMessengerPresenceProvider>();
                    }
                }
                importsSatisfied = true;
            }

            CleanTimedOutUsers.Initialize(chatUserProvider, chatRoomStorage);
        }
Exemplo n.º 5
0
        public void ProcessRequest(HttpContext context)
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatRoomStorage = Global.Container.Resolve <IChatRoomStorage>();
                    chatSettings    = Global.Container.Resolve <IChatSettings>();
                }
                importsSatisfied = true;
            }

            var request = context.Request;
            var files   = request.Files;

            if (files.Count == 0)
            {
                ReturnResponse(context, "Please select a file!");
                return;
            }

            var fileName = Path.GetFileName(files[0].FileName);

            string token  = request.QueryString["token"];
            string userId = chatRoomStorage.GetUserIdByToken(token);

            if (!chatSettings.EnableFileTransfer)
            {
                return;
            }

            string chatRoomIdString = request.QueryString["chatRoomId"];
            string toUserId         = request.QueryString["toUserId"];

            if (String.IsNullOrWhiteSpace(chatRoomIdString))
            {
                return;
            }

            if (!chatRoomStorage.IsUserInRoom(chatRoomIdString, userId))
            {
                return;
            }

            string[] allowedExtensions = Settings.Default.SendFileAllowedExtensions.Split(',');
            bool     fileIsAllowed     = false;

            foreach (string extension in allowedExtensions)
            {
                if (fileName.ToLower().EndsWith("." + extension.Trim().ToLower()))
                {
                    fileIsAllowed = true;
                    break;
                }
            }

            if (!fileIsAllowed)
            {
                ReturnResponse(context, "The file type is not allowed!");
                return;
            }

            string userFilesPath = "UserFiles/" + userId;
            string userFilesDir  = context.Server.MapPath(userFilesPath);

            if (!Directory.Exists(userFilesDir))
            {
                Directory.CreateDirectory(userFilesDir);
            }

            string filename = fileName
                              .Replace('\\', '_').Replace('/', '_')
                              .Replace(' ', '_').Replace('\t', '_')
                              .Replace('-', '_').Replace('<', '_')
                              .Replace('>', '_');
            string fileUrl = VirtualPathUtility.ToAbsolute(String.Format("~/{0}", Path.Combine(userFilesPath, filename)));

            filename = userFilesDir + @"\" + filename;

            using (Stream file = File.OpenWrite(filename))
            {
                CopyStream(files[0].InputStream, file);
            }

            var  imageExtensions = new[] { "png", "gif", "bmp", "jpg" };
            bool fileIsImage     = false;

            foreach (string extension in imageExtensions)
            {
                if (filename.ToLower().EndsWith("." + extension.ToLower()))
                {
                    fileIsImage = true;
                    break;
                }
            }

            chatRoomStorage.AddMessage(chatRoomIdString, new Message
            {
                Content     = fileUrl,
                FromUserId  = userId,
                ToUserId    = toUserId,
                MessageType = fileIsImage ? MessageTypeEnum.SendImageFile :
                              MessageTypeEnum.SendFile,
                Timestamp = Miscellaneous.GetTimestamp()
            });

            ReturnResponse(context, String.Empty);
        }
Exemplo n.º 6
0
 public MessageHandler(IChatSettings chatSettings)
 {
     _chatSettings = chatSettings;
 }
Exemplo n.º 7
0
        public void ProcessRequest(HttpContext context)
        {
            if (!importsSatisfied)
            {
                lock (Global.CompositionLock)
                {
                    chatRoomStorage = Global.Container.Resolve<IChatRoomStorage>();
                    chatSettings = Global.Container.Resolve<IChatSettings>();
                }
                importsSatisfied = true;
            }

            var request = context.Request;
            var files = request.Files;

            if (files.Count == 0)
            {
                ReturnResponse(context, "Please select a file!");
                return;
            }

            var fileName = Path.GetFileName(files[0].FileName);

            string token = request.QueryString["token"];
            string userId = chatRoomStorage.GetUserIdByToken(token);

            if (!chatSettings.EnableFileTransfer) return;

            string chatRoomIdString = request.QueryString["chatRoomId"];
            string toUserId = request.QueryString["toUserId"];

            if (String.IsNullOrWhiteSpace(chatRoomIdString))
            {
                return;
            }

            if (!chatRoomStorage.IsUserInRoom(chatRoomIdString, userId))
            {
                return;
            }

            string[] allowedExtensions = Settings.Default.SendFileAllowedExtensions.Split(',');
            bool fileIsAllowed = false;
            foreach (string extension in allowedExtensions)
            {
                if (fileName.ToLower().EndsWith("." + extension.Trim().ToLower()))
                {
                    fileIsAllowed = true;
                    break;
                }
            }

            if (!fileIsAllowed)
            {
                ReturnResponse(context, "The file type is not allowed!");
                return;
            }

            string userFilesPath = "UserFiles/" + userId;
            string userFilesDir = context.Server.MapPath(userFilesPath);
            if (!Directory.Exists(userFilesDir))
                Directory.CreateDirectory(userFilesDir);

            string filename = fileName
                .Replace('\\', '_').Replace('/', '_')
                .Replace(' ', '_').Replace('\t', '_')
                .Replace('-', '_').Replace('<', '_')
                .Replace('>', '_');
            string fileUrl = VirtualPathUtility.ToAbsolute(String.Format("~/{0}", Path.Combine(userFilesPath, filename)));
            filename = userFilesDir + @"\" + filename;

            using (Stream file = File.OpenWrite(filename))
            {
                CopyStream(files[0].InputStream, file);
            }

            var imageExtensions = new[] { "png", "gif", "bmp", "jpg" };
            bool fileIsImage = false;
            foreach (string extension in imageExtensions)
            {
                if (filename.ToLower().EndsWith("." + extension.ToLower()))
                {
                    fileIsImage = true;
                    break;
                }
            }

            chatRoomStorage.AddMessage(chatRoomIdString, new Message
            {
                Content = fileUrl,
                FromUserId = userId,
                ToUserId = toUserId,
                MessageType = fileIsImage ? MessageTypeEnum.SendImageFile :
                MessageTypeEnum.SendFile,
                Timestamp = Miscellaneous.GetTimestamp()
            });

            ReturnResponse(context, String.Empty);
        }