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(); } }
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(); } }
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); }
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); }
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); }
public MessageHandler(IChatSettings chatSettings) { _chatSettings = chatSettings; }
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); }