Exemplo n.º 1
0
        public override async Task <string> Handle(HttpRequest request, HttpResponse response)
        {
            Log.LogDebug("HandleStream get file");

            string file = string.Empty;

            if (request.Query.ContainsKey(string.Empty))
            {
                file = request.Query[string.Empty][0];
                file = HttpUtility.UrlDecode(file);
            }

            if (ProgramSettings.Settings.Dlna && !string.IsNullOrEmpty(file))
            {
                try {
                    var fileRequest = await FileRequest.Create(request, file);

                    if (fileRequest.File.Exists && Tools.Tools.CheckAccessPath(fileRequest.File.FullName))
                    {
                        var data = await File.ReadAllBytesAsync(fileRequest.File.FullName);

                        string source = string.Empty;
                        var    items  = GetItems(data, ref source);

                        if (!string.IsNullOrEmpty(source))
                        {
                            return(source);
                        }
                        else
                        {
                            return(ResponseSerializer.ToM3U(items.ToArray()));
                        }
                    }
                    else
                    {
                        Log.LogDebug("File not found: {0}", file);
                        response.StatusCode = (int)HttpStatusCode.NotFound;
                    }
                } catch (Exception exception) {
                    Log.LogError(exception);
                    response.StatusCode = (int)HttpStatusCode.NotFound;
                }
            }
            else
            {
                Log.LogDebug("Incorrect parameter: {0}", file);

                response.StatusCode = (int)HttpStatusCode.NoContent;
            }

            return(null);
        }
Exemplo n.º 2
0
        public override string Handle(HttpRequest request, HttpResponse response)
        {
            var result = new List <Item>();

            if ((ProgramSettings.Settings.UserUrls != null) && (ProgramSettings.Settings.UserUrls.Length > 0))
            {
                result.AddRange(from string url in ProgramSettings.Settings.UserUrls
                                select new Item {
                    Name = url.Split('\\').Last().Split('/').Last(),
                    Link = url,
                    Type = ItemType.FILE
                });
            }

            response.ContentType = MimeTypes.Get(PARAM_URLS.Substring(PARAM_URLS.IndexOf('.')));

            return(ResponseSerializer.ToM3U(result.ToArray()));
        }
Exemplo n.º 3
0
        public override string Handle(HttpRequest request, HttpResponse response)
        {
            var result = new List <Item>();

            if (ProgramSettings.Settings.Dlna)
            {
                if (ProgramSettings.Settings.DlnaFilterType == FilterMode.INCLUSION)
                {
                    if (ProgramSettings.Settings.DlnaDirectories != null)
                    {
                        foreach (string directory in ProgramSettings.Settings.DlnaDirectories)
                        {
                            Console.WriteLine(directory);
                            if (FileManager.DirectoryExists(directory))
                            {
                                Console.WriteLine(true);
                                result.Add(DlnaDirectoryRequestHandler.CreateDirectoryItem(request, directory));

                                Log.LogDebug($"Filtering directory: {directory}");
                            }
                        }
                    }
                }
                else
                {
                    var drives = FileManager.GetDrives();

                    foreach (var drive in drives.Where(i => Tools.Tools.CheckAccessPath(i.Name)))
                    {
                        if (drive.IsReady)
                        {
                            string mainText =
                                $"{drive.Name} ({Tools.Tools.FSize(drive.AvailableFreeSpace)} свободно из {Tools.Tools.FSize(drive.TotalSize)})";
                            string subText = $"<br>Метка диска: {drive.VolumeLabel}<br>Тип носителя: {drive.DriveType}";

                            result.Add(new Item {
                                Name = mainText + subText,
                                Link = DlnaDirectoryRequestHandler.CreateDriveItem(request, drive.Name),
                                Type = ItemType.DIRECTORY
                            });

                            Log.LogDebug($"Drive: {mainText}{subText}");
                        }
                    }
                }
            }


            if ((ProgramSettings.Settings.UserUrls != null) && (ProgramSettings.Settings.UserUrls.Length > 0))
            {
                result.Add(
                    new Item {
                    Name = "Пользовательские ссылки",
                    Link = CreateUrl(request, UserUrlsRequestHandler.URL_PATH,
                                     new NameValueCollection()
                    {
                        { string.Empty, UserUrlsRequestHandler.PARAM_URLS }
                    }),
                    Type = ItemType.DIRECTORY
                }
                    );

                Log.LogDebug("User urls: {0}", ProgramSettings.Settings.UserUrls.Length);
            }

            foreach (var plugin in PluginManager.Instance.GetPlugins())
            {
                result.Add(
                    new Item {
                    Name      = plugin.Value.Name,
                    Link      = PluginRequestHandler.CreatePluginUrl(request, plugin.Key),
                    ImageLink = plugin.Value.ImageLink,
                    Type      = ItemType.DIRECTORY
                }
                    );

                Log.LogDebug("Plugin: {0}", plugin.Value.Name);
            }

            return(ResponseSerializer.ToM3U(result.ToArray()));
        }