From 0acb82b80893c97928b5781ed45107272c855084 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 27 Dec 2018 23:34:14 +0000 Subject: [PATCH] Migrate server from ASP.NET Webforms to MVC. --- .../.idea/contentModel.xml | 36 +- DiscImageChef.Server/App_Start/RouteConfig.cs | 16 + DiscImageChef.Server/Changelog.aspx | 69 -- .../Controllers/HomeController.cs | 80 ++ .../ReportController.cs} | 260 ++---- .../StatsController.cs} | 175 ++-- DiscImageChef.Server/DONATING.aspx | 69 -- DiscImageChef.Server/Default.aspx | 70 -- DiscImageChef.Server/Default.aspx.cs | 62 -- DiscImageChef.Server/Default.aspx.designer.cs | 23 - .../DiscImageChef.Server.csproj | 66 +- DiscImageChef.Server/Global.asax.cs | 2 + DiscImageChef.Server/Models/DeviceItem.cs | 11 + DiscImageChef.Server/Models/MediaItem.cs | 9 + DiscImageChef.Server/Statistics.aspx | 412 --------- .../Statistics.aspx.designer.cs | 105 --- DiscImageChef.Server/TODO.aspx | 69 -- DiscImageChef.Server/ViewReport.aspx | 369 -------- .../ViewReport.aspx.designer.cs | 125 --- .../Views/Home/Changelog.cshtml | 66 ++ .../Views/Home/DONATING.cshtml | 66 ++ DiscImageChef.Server/Views/Home/Index.cshtml | 71 ++ DiscImageChef.Server/Views/Home/TODO.cshtml | 66 ++ DiscImageChef.Server/Views/Report/View.cshtml | 250 +++++ DiscImageChef.Server/Views/Stats/Index.cshtml | 315 +++++++ DiscImageChef.Server/Views/Web.config | 43 + DiscImageChef.Server/docs/Changelog.md | 857 ++++++++++++++++++ DiscImageChef.Server/docs/DONATING.md | 174 ++++ DiscImageChef.Server/docs/README.md | 254 ++++++ DiscImageChef.Server/docs/TODO.md | 83 ++ DiscImageChef.Server/packages.config | 2 +- DiscImageChef.sln.DotSettings | 2 + 32 files changed, 2570 insertions(+), 1707 deletions(-) create mode 100644 DiscImageChef.Server/App_Start/RouteConfig.cs delete mode 100644 DiscImageChef.Server/Changelog.aspx create mode 100644 DiscImageChef.Server/Controllers/HomeController.cs rename DiscImageChef.Server/{ViewReport.aspx.cs => Controllers/ReportController.cs} (68%) rename DiscImageChef.Server/{Statistics.aspx.cs => Controllers/StatsController.cs} (60%) delete mode 100644 DiscImageChef.Server/DONATING.aspx delete mode 100644 DiscImageChef.Server/Default.aspx delete mode 100644 DiscImageChef.Server/Default.aspx.cs delete mode 100644 DiscImageChef.Server/Default.aspx.designer.cs create mode 100644 DiscImageChef.Server/Models/DeviceItem.cs create mode 100644 DiscImageChef.Server/Models/MediaItem.cs delete mode 100644 DiscImageChef.Server/Statistics.aspx delete mode 100644 DiscImageChef.Server/Statistics.aspx.designer.cs delete mode 100644 DiscImageChef.Server/TODO.aspx delete mode 100644 DiscImageChef.Server/ViewReport.aspx delete mode 100644 DiscImageChef.Server/ViewReport.aspx.designer.cs create mode 100644 DiscImageChef.Server/Views/Home/Changelog.cshtml create mode 100644 DiscImageChef.Server/Views/Home/DONATING.cshtml create mode 100644 DiscImageChef.Server/Views/Home/Index.cshtml create mode 100644 DiscImageChef.Server/Views/Home/TODO.cshtml create mode 100644 DiscImageChef.Server/Views/Report/View.cshtml create mode 100644 DiscImageChef.Server/Views/Stats/Index.cshtml create mode 100644 DiscImageChef.Server/Views/Web.config create mode 100644 DiscImageChef.Server/docs/Changelog.md create mode 100644 DiscImageChef.Server/docs/DONATING.md create mode 100644 DiscImageChef.Server/docs/README.md create mode 100644 DiscImageChef.Server/docs/TODO.md diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index 90dde4a69..f9f30ed14 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -1784,6 +1784,7 @@ + @@ -1794,15 +1795,13 @@ - + + + - - - - @@ -1844,11 +1843,13 @@ + + @@ -1859,19 +1860,30 @@ - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/DiscImageChef.Server/App_Start/RouteConfig.cs b/DiscImageChef.Server/App_Start/RouteConfig.cs new file mode 100644 index 000000000..5a6db66d0 --- /dev/null +++ b/DiscImageChef.Server/App_Start/RouteConfig.cs @@ -0,0 +1,16 @@ +using System.Web.Mvc; +using System.Web.Routing; + +namespace DiscImageChef.Server +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapRoute("Default", "{controller}/{action}/{id}", + new {controller = "Home", action = "Index", id = UrlParameter.Optional}); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Changelog.aspx b/DiscImageChef.Server/Changelog.aspx deleted file mode 100644 index 042b9355a..000000000 --- a/DiscImageChef.Server/Changelog.aspx +++ /dev/null @@ -1,69 +0,0 @@ -<%@ Page Language="C#" %> -<%@ Register TagPrefix="velyo" Namespace="Velyo.AspNet.Markdown" Assembly="Velyo.AspNet.Markdown" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Changelog.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders Changelog.md. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef's TODO - - - - - -

- Return to main page.
- DiscImageChef list of changes: -

-
- -
- - \ No newline at end of file diff --git a/DiscImageChef.Server/Controllers/HomeController.cs b/DiscImageChef.Server/Controllers/HomeController.cs new file mode 100644 index 000000000..45445ebd1 --- /dev/null +++ b/DiscImageChef.Server/Controllers/HomeController.cs @@ -0,0 +1,80 @@ +using System; +using System.IO; +using System.Reflection; +using System.Web.Hosting; +using System.Web.Mvc; +using Markdig; + +namespace DiscImageChef.Server.Controllers +{ + public class HomeController : Controller + { + public ActionResult Index() + { + StreamReader sr = + new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "docs", "README.md")); + string mdcontent = sr.ReadToEnd(); + sr.Close(); + + mdcontent = mdcontent.Replace(".md)", ")"); + + ViewBag.Markdown = Markdown.ToHtml(mdcontent); + + ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + return View(); + } + + public ActionResult Changelog() + { + StreamReader sr = + new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "docs", "Changelog.md")); + string mdcontent = sr.ReadToEnd(); + sr.Close(); + + mdcontent = mdcontent.Replace(".md)", ")"); + + ViewBag.Markdown = Markdown.ToHtml(mdcontent); + + ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + return View(); + } + + public ActionResult DONATING() + { + StreamReader sr = + new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "docs", "DONATING.md")); + string mdcontent = sr.ReadToEnd(); + sr.Close(); + + mdcontent = mdcontent.Replace(".md)", ")"); + + ViewBag.Markdown = Markdown.ToHtml(mdcontent); + + ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + return View(); + } + + public ActionResult TODO() + { + StreamReader sr = + new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "docs", "TODO.md")); + string mdcontent = sr.ReadToEnd(); + sr.Close(); + + mdcontent = mdcontent.Replace(".md)", ")"); + + ViewBag.Markdown = Markdown.ToHtml(mdcontent); + + ViewBag.lblVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + return View(); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/ViewReport.aspx.cs b/DiscImageChef.Server/Controllers/ReportController.cs similarity index 68% rename from DiscImageChef.Server/ViewReport.aspx.cs rename to DiscImageChef.Server/Controllers/ReportController.cs index 01ad25807..c2452094f 100644 --- a/DiscImageChef.Server/ViewReport.aspx.cs +++ b/DiscImageChef.Server/Controllers/ReportController.cs @@ -1,75 +1,37 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ViewReport.aspx.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders a device report. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ - using System; using System.Collections.Generic; using System.Linq; -using System.Web; -using System.Web.UI; +using System.Web.Mvc; +using System.Web.Routing; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Decoders.PCMCIA; using DiscImageChef.Decoders.SCSI; using DiscImageChef.Server.Models; using Tuple = DiscImageChef.Decoders.PCMCIA.Tuple; -namespace DiscImageChef.Server +namespace DiscImageChef.Server.Controllers { - /// - /// Renders the specified report from the server - /// - public partial class ViewReport : Page + public class ReportController : Controller { - protected void Page_Load(object sender, EventArgs e) + public ActionResult Index() { + return RedirectToAction("View", "Report", new RouteValueDictionary {{"id", 1}}); + } + + public ActionResult View(int? id) + { + if(id == null || id <= 0) return Content("Incorrect device report request"); + try { - if(!int.TryParse(Request.QueryString["id"], out int id) || id <= 0) - { - content.InnerHtml = "Incorrect device report request"; - return; - } - DicServerContext ctx = new DicServerContext(); Device report = ctx.Devices.FirstOrDefault(d => d.Id == id); - if(report is null) - { - content.InnerHtml = "Cannot find requested report"; - return; - } + if(report is null) return Content("Cannot find requested report"); - lblManufacturer.Text = report.Manufacturer; - lblModel.Text = report.Model; - lblRevision.Text = report.Revision; + ViewBag.lblManufacturer = report.Manufacturer; + ViewBag.lblModel = report.Model; + ViewBag.lblRevision = report.Revision; if(report.USB != null) { @@ -93,33 +55,40 @@ namespace DiscImageChef.Server usbVendorDescription = dbProduct.Vendor.Vendor; } - lblUsbManufacturer.Text = HttpUtility.HtmlEncode(report.USB.Manufacturer); - lblUsbProduct.Text = HttpUtility.HtmlEncode(report.USB.Product); - lblUsbVendor.Text = $"0x{report.USB.VendorID:x4}"; - if(usbVendorDescription != null) - lblUsbVendorDescription.Text = $"({HttpUtility.HtmlEncode(usbVendorDescription)})"; - lblUsbProductId.Text = $"0x{report.USB.ProductID:x4}"; - if(usbProductDescription != null) - lblUsbProductDescription.Text = $"({HttpUtility.HtmlEncode(usbProductDescription)})"; + ViewBag.UsbItem = new Item + { + Manufacturer = report.USB.Manufacturer, + Product = report.USB.Product, + VendorDescription = + usbVendorDescription != null + ? $"0x{report.USB.VendorID:x4} ({usbVendorDescription})" + : $"0x{report.USB.VendorID:x4}", + ProductDescription = usbProductDescription != null + ? $"0x{report.USB.ProductID:x4} ({usbProductDescription})" + : $"0x{report.USB.ProductID:x4}" + }; } - else divUsb.Visible = false; if(report.FireWire != null) - { - lblFirewireManufacturer.Text = HttpUtility.HtmlEncode(report.FireWire.Manufacturer); - lblFirewireProduct.Text = HttpUtility.HtmlEncode(report.FireWire.Product); - lblFirewireVendor.Text = $"0x{report.FireWire.VendorID:x8}"; - lblFirewireProductId.Text = $"0x{report.FireWire.ProductID:x8}"; - } - else divFirewire.Visible = false; + ViewBag.FireWireItem = new Item + { + Manufacturer = report.FireWire.Manufacturer, + Product = report.FireWire.Product, + VendorDescription = $"0x{report.FireWire.VendorID:x8}", + ProductDescription = $"0x{report.FireWire.ProductID:x8}" + }; if(report.PCMCIA != null) { - lblPcmciaManufacturer.Text = HttpUtility.HtmlEncode(report.PCMCIA.Manufacturer); - lblPcmciaProduct.Text = HttpUtility.HtmlEncode(report.PCMCIA.ProductName); - lblPcmciaManufacturerCode.Text = $"0x{report.PCMCIA.ManufacturerCode:x4}"; - lblPcmciaCardCode.Text = $"0x{report.PCMCIA.CardCode:x4}"; - lblPcmciaCompliance.Text = HttpUtility.HtmlEncode(report.PCMCIA.Compliance); + ViewBag.PcmciaItem = new PcmciaItem + { + Manufacturer = report.PCMCIA.Manufacturer, + Product = report.PCMCIA.ProductName, + VendorDescription = $"0x{report.PCMCIA.ManufacturerCode:x4}", + ProductDescription = $"0x{report.PCMCIA.CardCode:x4}", + Compliance = report.PCMCIA.Compliance + }; + Tuple[] tuples = CIS.GetTuples(report.PCMCIA.CIS); if(tuples != null) { @@ -191,16 +160,9 @@ namespace DiscImageChef.Server break; } - if(decodedTuples.Count > 0) - { - repPcmciaTuples.DataSource = decodedTuples; - repPcmciaTuples.DataBind(); - } - else repPcmciaTuples.Visible = false; + if(decodedTuples.Count > 0) ViewBag.repPcmciaTuples = decodedTuples; } - else repPcmciaTuples.Visible = false; } - else divPcmcia.Visible = false; bool removable = true; List testedMedia = null; @@ -217,26 +179,27 @@ namespace DiscImageChef.Server if(report.ATAPI != null) { - lblAtapi.Text = "PI"; - ataReport = report.ATAPI; - atapi = true; + ViewBag.AtaItem = "ATAPI"; + ataReport = report.ATAPI; + atapi = true; + } + else + { + ViewBag.AtaItem = "ATA"; + ataReport = report.ATA; } - else ataReport = report.ATA; bool cfa = report.CompactFlash; - if(atapi && !cfa) lblAtaDeviceType.Text = "ATAPI device"; - else if(!atapi && cfa) lblAtaDeviceType.Text = "CompactFlash device"; - else lblAtaDeviceType.Text = "ATA device"; + if(atapi && !cfa) ViewBag.lblAtaDeviceType = "ATAPI device"; + else if(!atapi && cfa) ViewBag.lblAtaDeviceType = "CompactFlash device"; + else ViewBag.lblAtaDeviceType = "ATA device"; Ata.Report(ataReport, cfa, atapi, ref removable, ref ataOneValue, ref ataTwoValue, ref testedMedia); - repAtaOne.DataSource = ataOneValue; - repAtaOne.DataBind(); - repAtaTwo.DataSource = ataTwoValue; - repAtaTwo.DataBind(); + ViewBag.repAtaOne = ataOneValue; + ViewBag.repAtaTwo = ataTwoValue; } - else divAta.Visible = false; if(report.SCSI != null) { @@ -248,11 +211,11 @@ namespace DiscImageChef.Server if(report.SCSI.Inquiry != null) { Inquiry.SCSIInquiry inq = report.SCSI.Inquiry.Value; - lblScsiVendor.Text = VendorString.Prettify(vendorId) != vendorId - ? $"{vendorId} ({VendorString.Prettify(vendorId)})" - : vendorId; - lblScsiProduct.Text = StringHandlers.CToString(inq.ProductIdentification); - lblScsiRevision.Text = StringHandlers.CToString(inq.ProductRevisionLevel); + ViewBag.lblScsiVendor = VendorString.Prettify(vendorId) != vendorId + ? $"{vendorId} ({VendorString.Prettify(vendorId)})" + : vendorId; + ViewBag.lblScsiProduct = StringHandlers.CToString(inq.ProductIdentification); + ViewBag.lblScsiRevision = StringHandlers.CToString(inq.ProductRevisionLevel); } scsiOneValue.AddRange(ScsiInquiry.Report(report.SCSI.Inquiry)); @@ -269,25 +232,11 @@ namespace DiscImageChef.Server ScsiModeSense.Report(report.SCSI.ModeSense, vendorId, devType, ref scsiOneValue, ref modePages); } - if(modePages.Count > 0) - { - repModeSense.DataSource = modePages; - repModeSense.DataBind(); - } - else divScsiModeSense.Visible = false; + if(modePages.Count > 0) ViewBag.repModeSense = modePages; if(report.SCSI.EVPDPages != null) ScsiEvpd.Report(report.SCSI.EVPDPages, vendorId, ref evpdPages); - if(evpdPages.Count > 0) - { - repEvpd.DataSource = evpdPages; - repEvpd.DataBind(); - } - else divScsiEvpd.Visible = false; - - divScsiMmcMode.Visible = false; - divScsiMmcFeatures.Visible = false; - divScsiSsc.Visible = false; + if(evpdPages.Count > 0) ViewBag.repEvpd = evpdPages; if(report.SCSI.MultiMediaDevice != null) { @@ -297,52 +246,34 @@ namespace DiscImageChef.Server { List mmcModeOneValue = new List(); ScsiMmcMode.Report(report.SCSI.MultiMediaDevice.ModeSense2A, ref mmcModeOneValue); - if(mmcModeOneValue.Count > 0) - { - divScsiMmcMode.Visible = true; - repScsiMmcMode.DataSource = mmcModeOneValue; - repScsiMmcMode.DataBind(); - } + if(mmcModeOneValue.Count > 0) ViewBag.repScsiMmcMode = mmcModeOneValue; } if(report.SCSI.MultiMediaDevice.Features != null) { List mmcFeaturesOneValue = new List(); ScsiMmcFeatures.Report(report.SCSI.MultiMediaDevice.Features, ref mmcFeaturesOneValue); - if(mmcFeaturesOneValue.Count > 0) - { - divScsiMmcFeatures.Visible = true; - repScsiMmcFeatures.DataSource = mmcFeaturesOneValue; - repScsiMmcFeatures.DataBind(); - } + if(mmcFeaturesOneValue.Count > 0) ViewBag.repScsiMmcFeatures = mmcFeaturesOneValue; } } else if(report.SCSI.SequentialDevice != null) { - divScsiSsc.Visible = true; + ViewBag.divScsiSscVisible = true; - lblScsiSscGranularity.Text = + ViewBag.lblScsiSscGranularity = report.SCSI.SequentialDevice.BlockSizeGranularity?.ToString() ?? "Unspecified"; - lblScsiSscMaxBlock.Text = + ViewBag.lblScsiSscMaxBlock = report.SCSI.SequentialDevice.MaxBlockLength?.ToString() ?? "Unspecified"; - lblScsiSscMinBlock.Text = + ViewBag.lblScsiSscMinBlock = report.SCSI.SequentialDevice.MinBlockLength?.ToString() ?? "Unspecified"; if(report.SCSI.SequentialDevice.SupportedDensities != null) - { - repScsiSscDensities.DataSource = report.SCSI.SequentialDevice.SupportedDensities; - repScsiSscDensities.DataBind(); - } - else repScsiSscDensities.Visible = false; + ViewBag.repScsiSscDensities = report.SCSI.SequentialDevice.SupportedDensities; if(report.SCSI.SequentialDevice.SupportedMediaTypes != null) - { - repScsiSscMedias.DataSource = report.SCSI.SequentialDevice.SupportedMediaTypes; - repScsiSscMedias.DataBind(); - } - else repScsiSscMedias.Visible = false; + ViewBag.repScsiSscMedias = report.SCSI.SequentialDevice.SupportedMediaTypes; if(report.SCSI.SequentialDevice.TestedMedia != null) { @@ -350,13 +281,10 @@ namespace DiscImageChef.Server SscTestedMedia.Report(report.SCSI.SequentialDevice.TestedMedia, ref mediaOneValue); if(mediaOneValue.Count > 0) { - sscMedia = true; - repTestedMedia.DataSource = mediaOneValue; - repTestedMedia.DataBind(); + sscMedia = true; + ViewBag.repTestedMedia = mediaOneValue; } - else divTestedMedia.Visible = false; } - else divTestedMedia.Visible = false; } else if(report.SCSI.ReadCapabilities != null) { @@ -410,10 +338,8 @@ namespace DiscImageChef.Server } else testedMedia = report.SCSI.RemovableMedias; - repScsi.DataSource = scsiOneValue; - repScsi.DataBind(); + ViewBag.repScsi = scsiOneValue; } - else divScsi.Visible = false; if(report.MultiMediaCard != null) { @@ -447,10 +373,8 @@ namespace DiscImageChef.Server mmcOneValue.Add(""); } - repMMC.DataSource = mmcOneValue; - repMMC.DataBind(); + ViewBag.repMMC = mmcOneValue; } - else divMMC.Visible = false; if(report.SecureDigital != null) { @@ -484,32 +408,38 @@ namespace DiscImageChef.Server sdOneValue.Add(""); } - repSD.DataSource = sdOneValue; - repSD.DataBind(); + ViewBag.repSD = sdOneValue; } - else divSD.Visible = false; if(removable && !sscMedia && testedMedia != null) { List mediaOneValue = new List(); App_Start.TestedMedia.Report(testedMedia, ref mediaOneValue); - if(mediaOneValue.Count > 0) - { - divTestedMedia.Visible = true; - repTestedMedia.DataSource = mediaOneValue; - repTestedMedia.DataBind(); - } - else divTestedMedia.Visible = false; + if(mediaOneValue.Count > 0) ViewBag.repTestedMedia = mediaOneValue; } - else divTestedMedia.Visible &= sscMedia; } catch(Exception) { - content.InnerHtml = "Could not load device report"; #if DEBUG throw; #endif + return Content("Could not load device report"); } + + return View(); } } + + public class Item + { + public string Manufacturer; + public string Product; + public string ProductDescription; + public string VendorDescription; + } + + public class PcmciaItem : Item + { + public string Compliance; + } } \ No newline at end of file diff --git a/DiscImageChef.Server/Statistics.aspx.cs b/DiscImageChef.Server/Controllers/StatsController.cs similarity index 60% rename from DiscImageChef.Server/Statistics.aspx.cs rename to DiscImageChef.Server/Controllers/StatsController.cs index 8e4ecc664..db5f220d5 100644 --- a/DiscImageChef.Server/Statistics.aspx.cs +++ b/DiscImageChef.Server/Controllers/StatsController.cs @@ -1,8 +1,8 @@ -// /*************************************************************************** +// /*************************************************************************** // The Disc Image Chef // ---------------------------------------------------------------------------- // -// Filename : Statistics.aspx.cs +// Filename : StatisticsController.cs // Author(s) : Natalia Portillo // // Component : DiscImageChef Server. @@ -37,7 +37,7 @@ using System.Linq; using System.Reflection; using System.Threading; using System.Web.Hosting; -using System.Web.UI; +using System.Web.Mvc; using System.Xml; using System.Xml.Serialization; using DiscImageChef.CommonTypes.Interop; @@ -47,12 +47,12 @@ using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID; using Version = DiscImageChef.Server.Models.Version; -namespace DiscImageChef.Server +namespace DiscImageChef.Server.Controllers { /// /// Renders a page with statistics, list of media type, devices, etc /// - public partial class Statistics : Page + public class StatsController : Controller { DicServerContext ctx = new DicServerContext(); List devices; @@ -61,14 +61,16 @@ namespace DiscImageChef.Server List versions; List virtualMedia; - protected void Page_Load(object sender, EventArgs e) + public ActionResult Index() { - lblVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + ViewBag.Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); try { - if(File.Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml"))) + if( + System.IO.File + .Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "Statistics", "Statistics.xml"))) try { Stats statistics = new Stats(); @@ -82,8 +84,9 @@ namespace DiscImageChef.Server StatsConverter.Convert(statistics); - File.Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Statistics", "Statistics.xml")); + System.IO.File + .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "Statistics", "Statistics.xml")); } catch(XmlException) { @@ -101,10 +104,8 @@ namespace DiscImageChef.Server Value = nvs.Count }); - repOperatingSystems.DataSource = operatingSystems.OrderBy(os => os.name).ToList(); - repOperatingSystems.DataBind(); + ViewBag.repOperatingSystems = operatingSystems.OrderBy(os => os.name).ToList(); } - else divOperatingSystems.Visible = false; if(ctx.Versions.Any()) { @@ -116,76 +117,57 @@ namespace DiscImageChef.Server Value = nvs.Count }); - repVersions.DataSource = versions.OrderBy(ver => ver.name).ToList(); - repVersions.DataBind(); + ViewBag.repVersions = versions.OrderBy(ver => ver.name).ToList(); } - else divVersions.Visible = false; if(ctx.Commands.Any()) { - lblAnalyze.Text = ctx.Commands.FirstOrDefault(c => c.Name == "analyze")?.Count.ToString() ?? "0"; - lblCompare.Text = ctx.Commands.FirstOrDefault(c => c.Name == "compare")?.Count.ToString() ?? "0"; - lblChecksum.Text = ctx.Commands.FirstOrDefault(c => c.Name == "checksum")?.Count.ToString() ?? "0"; - lblEntropy.Text = ctx.Commands.FirstOrDefault(c => c.Name == "entropy")?.Count.ToString() ?? "0"; - lblVerify.Text = ctx.Commands.FirstOrDefault(c => c.Name == "verify")?.Count.ToString() ?? "0"; - lblPrintHex.Text = ctx.Commands.FirstOrDefault(c => c.Name == "printhex")?.Count.ToString() ?? "0"; - lblDecode.Text = ctx.Commands.FirstOrDefault(c => c.Name == "decode")?.Count.ToString() ?? "0"; - lblDeviceInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "device-info")?.Count.ToString() ?? - "0"; - lblMediaInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "media-info")?.Count.ToString() ?? - "0"; - lblMediaScan.Text = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan")?.Count.ToString() ?? - "0"; - lblFormats.Text = ctx.Commands.FirstOrDefault(c => c.Name == "formats")?.Count.ToString() ?? "0"; - lblBenchmark.Text = + ViewBag.lblAnalyze = ctx.Commands.FirstOrDefault(c => c.Name == "analyze")?.Count.ToString() ?? "0"; + ViewBag.lblCompare = ctx.Commands.FirstOrDefault(c => c.Name == "compare")?.Count.ToString() ?? "0"; + ViewBag.lblChecksum = + ctx.Commands.FirstOrDefault(c => c.Name == "checksum")?.Count.ToString() ?? "0"; + ViewBag.lblEntropy = ctx.Commands.FirstOrDefault(c => c.Name == "entropy")?.Count.ToString() ?? "0"; + ViewBag.lblVerify = ctx.Commands.FirstOrDefault(c => c.Name == "verify")?.Count.ToString() ?? "0"; + ViewBag.lblPrintHex = + ctx.Commands.FirstOrDefault(c => c.Name == "printhex")?.Count.ToString() ?? "0"; + ViewBag.lblDecode = ctx.Commands.FirstOrDefault(c => c.Name == "decode")?.Count.ToString() ?? "0"; + ViewBag.lblDeviceInfo = + ctx.Commands.FirstOrDefault(c => c.Name == "device-info")?.Count.ToString() ?? "0"; + ViewBag.lblMediaInfo = ctx.Commands.FirstOrDefault(c => c.Name == "media-info")?.Count.ToString() ?? + "0"; + ViewBag.lblMediaScan = ctx.Commands.FirstOrDefault(c => c.Name == "media-scan")?.Count.ToString() ?? + "0"; + ViewBag.lblFormats = ctx.Commands.FirstOrDefault(c => c.Name == "formats")?.Count.ToString() ?? "0"; + ViewBag.lblBenchmark = ctx.Commands.FirstOrDefault(c => c.Name == "benchmark")?.Count.ToString() ?? "0"; - lblCreateSidecar.Text = + ViewBag.lblCreateSidecar = ctx.Commands.FirstOrDefault(c => c.Name == "create-sidecar")?.Count.ToString() ?? "0"; - lblDumpMedia.Text = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media")?.Count.ToString() ?? - "0"; - lblDeviceReport.Text = + ViewBag.lblDumpMedia = ctx.Commands.FirstOrDefault(c => c.Name == "dump-media")?.Count.ToString() ?? + "0"; + ViewBag.lblDeviceReport = ctx.Commands.FirstOrDefault(c => c.Name == "device-report")?.Count.ToString() ?? "0"; - lblLs.Text = ctx.Commands.FirstOrDefault(c => c.Name == "ls")?.Count.ToString() ?? "0"; - lblExtractFiles.Text = + ViewBag.lblLs = ctx.Commands.FirstOrDefault(c => c.Name == "ls")?.Count.ToString() ?? "0"; + ViewBag.lblExtractFiles = ctx.Commands.FirstOrDefault(c => c.Name == "extract-files")?.Count.ToString() ?? "0"; - lblListDevices.Text = + ViewBag.lblListDevices = ctx.Commands.FirstOrDefault(c => c.Name == "list-devices")?.Count.ToString() ?? "0"; - lblListEncodings.Text = + ViewBag.lblListEncodings = ctx.Commands.FirstOrDefault(c => c.Name == "list-encodings")?.Count.ToString() ?? "0"; - lblConvertImage.Text = + ViewBag.lblConvertImage = ctx.Commands.FirstOrDefault(c => c.Name == "convert-image")?.Count.ToString() ?? "0"; - lblImageInfo.Text = ctx.Commands.FirstOrDefault(c => c.Name == "image-info")?.Count.ToString() ?? - "0"; + ViewBag.lblImageInfo = ctx.Commands.FirstOrDefault(c => c.Name == "image-info")?.Count.ToString() ?? + "0"; } - else divCommands.Visible = false; - if(ctx.Filters.Any()) - { - repFilters.DataSource = ctx.Filters.OrderBy(filter => filter.Name).ToList(); - repFilters.DataBind(); - } - else divFilters.Visible = false; + if(ctx.Filters.Any()) ViewBag.repFilters = ctx.Filters.OrderBy(filter => filter.Name).ToList(); if(ctx.MediaFormats.Any()) - { - repMediaImages.DataSource = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList(); - repMediaImages.DataBind(); - } - else divMediaImages.Visible = false; + ViewBag.repMediaImages = ctx.MediaFormats.OrderBy(filter => filter.Name).ToList(); - if(ctx.Partitions.Any()) - { - repPartitions.DataSource = ctx.Partitions.OrderBy(filter => filter.Name).ToList(); - repPartitions.DataBind(); - } - else divPartitions.Visible = false; + if(ctx.Partitions.Any()) ViewBag.repPartitions = ctx.Partitions.OrderBy(filter => filter.Name).ToList(); if(ctx.Filesystems.Any()) - { - repFilesystems.DataSource = ctx.Filesystems.OrderBy(filter => filter.Name).ToList(); - repFilesystems.DataBind(); - } - else divFilesystems.Visible = false; + ViewBag.repFilesystems = ctx.Filesystems.OrderBy(filter => filter.Name).ToList(); if(ctx.Medias.Any()) { @@ -210,25 +192,12 @@ namespace DiscImageChef.Server } if(realMedia.Count > 0) - { - repRealMedia.DataSource = + ViewBag.repRealMedia = realMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - repRealMedia.DataBind(); - } - else divRealMedia.Visible = false; if(virtualMedia.Count > 0) - { - repVirtualMedia.DataSource = + ViewBag.repVirtualMedia = virtualMedia.OrderBy(media => media.Type).ThenBy(media => media.SubType).ToList(); - repVirtualMedia.DataBind(); - } - else divVirtualMedia.Visible = false; - } - else - { - divRealMedia.Visible = false; - divVirtualMedia.Visible = false; } if(ctx.DeviceStats.Any()) @@ -250,7 +219,7 @@ namespace DiscImageChef.Server xmlFile = xmlFile.Replace('/', '_').Replace('\\', '_').Replace('?', '_'); - if(File.Exists(Path.Combine(HostingEnvironment.MapPath("~"), "Reports", xmlFile))) + if(System.IO.File.Exists(Path.Combine(HostingEnvironment.MapPath("~"), "Reports", xmlFile))) { DeviceReport deviceReport = new DeviceReport(); @@ -266,39 +235,37 @@ namespace DiscImageChef.Server device.Report = ctx.Devices.Add(new Device(deviceReportV2)); ctx.SaveChanges(); - File.Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "Reports", xmlFile)); + System.IO.File + .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + "Reports", xmlFile)); } - string url = device.Report != null && device.Report.Id != 0 - ? $"ViewReport.aspx?id={device.Report.Id}" - : null; - devices.Add(new DeviceItem { Manufacturer = device.Manufacturer, Model = device.Model, Revision = device.Revision, Bus = device.Bus, - ReportLink = - url == null ? "No" : $"Yes" + ReportId = device.Report != null && device.Report.Id != 0 + ? device.Report.Id + : 0 }); } - repDevices.DataSource = devices.OrderBy(device => device.Manufacturer) - .ThenBy(device => device.Model).ThenBy(device => device.Revision) - .ThenBy(device => device.Bus).ToList(); - repDevices.DataBind(); + ViewBag.repDevices = devices.OrderBy(device => device.Manufacturer).ThenBy(device => device.Model) + .ThenBy(device => device.Revision).ThenBy(device => device.Bus) + .ToList(); } - else divDevices.Visible = false; } catch(Exception) { - content.InnerHtml = "Could not load statistics"; #if DEBUG throw; #endif + return Content("Could not read statistics"); } + + return View(); } static FileStream WaitForFile(string fullPath, FileMode mode, FileAccess access, FileShare share) @@ -320,21 +287,5 @@ namespace DiscImageChef.Server return null; } - - class MediaItem - { - public string Type { get; set; } - public string SubType { get; set; } - public long Count { get; set; } - } - - class DeviceItem - { - public string Manufacturer { get; set; } - public string Model { get; set; } - public string Revision { get; set; } - public string Bus { get; set; } - public string ReportLink { get; set; } - } } } \ No newline at end of file diff --git a/DiscImageChef.Server/DONATING.aspx b/DiscImageChef.Server/DONATING.aspx deleted file mode 100644 index 21aca7470..000000000 --- a/DiscImageChef.Server/DONATING.aspx +++ /dev/null @@ -1,69 +0,0 @@ -<%@ Page Language="C#" %> -<%@ Register TagPrefix="velyo" Namespace="Velyo.AspNet.Markdown" Assembly="Velyo.AspNet.Markdown" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : DONATING.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders DONATING.md. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef's TODO - - - - - -

- Return to main page.
- DiscImageChef list of things to be donated: -

-
- -
- - \ No newline at end of file diff --git a/DiscImageChef.Server/Default.aspx b/DiscImageChef.Server/Default.aspx deleted file mode 100644 index c5cad6167..000000000 --- a/DiscImageChef.Server/Default.aspx +++ /dev/null @@ -1,70 +0,0 @@ -<%@ Page Language="C#" Inherits="DiscImageChef.Server.Default" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Default.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders README.md. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef - - - - - -

- Welcome to - - - DiscImageChef - - Server version - -

- - \ No newline at end of file diff --git a/DiscImageChef.Server/Default.aspx.cs b/DiscImageChef.Server/Default.aspx.cs deleted file mode 100644 index 4850b3374..000000000 --- a/DiscImageChef.Server/Default.aspx.cs +++ /dev/null @@ -1,62 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Default.aspx.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders README.md. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ - -using System; -using System.IO; -using System.Reflection; -using System.Web.Hosting; -using System.Web.UI; -using Velyo.AspNet.Markdown; - -namespace DiscImageChef.Server -{ - /// - /// Renders the README.md file - /// - public partial class Default : Page - { - protected void Page_Load(object sender, EventArgs e) - { - MarkdownContent mkdown = new MarkdownContent(); - StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), - "docs", "README.md")); - string mdcontent = sr.ReadToEnd(); - sr.Close(); - - mkdown.Content = mdcontent.Replace(".md)", ".aspx)"); - body.Controls.Add(mkdown); - - lblVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Default.aspx.designer.cs b/DiscImageChef.Server/Default.aspx.designer.cs deleted file mode 100644 index 9d4061592..000000000 --- a/DiscImageChef.Server/Default.aspx.designer.cs +++ /dev/null @@ -1,23 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System.Web.UI.HtmlControls; -using System.Web.UI.WebControls; - -namespace DiscImageChef.Server { - - - public partial class Default { - - protected HtmlGenericControl body; - - protected Label lblVersion; - } -} diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj index 8dd3abebb..cf7d58727 100644 --- a/DiscImageChef.Server/DiscImageChef.Server.csproj +++ b/DiscImageChef.Server/DiscImageChef.Server.csproj @@ -73,7 +73,12 @@ ..\packages\Google.Protobuf.3.5.1\lib\net45\Google.Protobuf.dll True + + ..\packages\Markdig.0.15.5\lib\net40\Markdig.dll + True + + ..\packages\MySql.Data.8.0.13\lib\net452\MySql.Data.dll True @@ -150,10 +155,6 @@ True ..\packages\Microsoft.AspNet.WebPages.3.2.4\lib\net45\System.Web.WebPages.Razor.dll - - ..\packages\Velyo.AspNet.Markdown.1.0.26.6184\lib\net451\Velyo.AspNet.Markdown.dll - True - True ..\packages\WebGrease.1.6.0\lib\WebGrease.dll @@ -176,6 +177,7 @@ + @@ -185,15 +187,11 @@ + + + - - Default.aspx - ASPXCodeBehind - - - Default.aspx - Global.asax @@ -242,44 +240,34 @@ + + - - Statistics.aspx - ASPXCodeBehind - - - Statistics.aspx - - - ViewReport.aspx - ASPXCodeBehind - - - ViewReport.aspx - - - - + + + + - - - + + + + Web.config @@ -287,23 +275,13 @@ Web.config - - docs/Changelog.md - - - docs/DONATING.md - - - docs/README.md - - - docs/TODO.md - - + + + diff --git a/DiscImageChef.Server/Global.asax.cs b/DiscImageChef.Server/Global.asax.cs index 2b756ef50..a14c1e2eb 100644 --- a/DiscImageChef.Server/Global.asax.cs +++ b/DiscImageChef.Server/Global.asax.cs @@ -32,6 +32,7 @@ using System.Web; using System.Web.Http; +using System.Web.Routing; namespace DiscImageChef.Server { @@ -40,6 +41,7 @@ namespace DiscImageChef.Server protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); + RouteConfig.RegisterRoutes(RouteTable.Routes); } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/DeviceItem.cs b/DiscImageChef.Server/Models/DeviceItem.cs new file mode 100644 index 000000000..a25e5296b --- /dev/null +++ b/DiscImageChef.Server/Models/DeviceItem.cs @@ -0,0 +1,11 @@ +namespace DiscImageChef.Server.Models +{ + public class DeviceItem + { + public string Manufacturer { get; set; } + public string Model { get; set; } + public string Revision { get; set; } + public string Bus { get; set; } + public int ReportId { get; set; } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Models/MediaItem.cs b/DiscImageChef.Server/Models/MediaItem.cs new file mode 100644 index 000000000..bbda49afc --- /dev/null +++ b/DiscImageChef.Server/Models/MediaItem.cs @@ -0,0 +1,9 @@ +namespace DiscImageChef.Server.Models +{ + public class MediaItem + { + public string Type { get; set; } + public string SubType { get; set; } + public long Count { get; set; } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Statistics.aspx b/DiscImageChef.Server/Statistics.aspx deleted file mode 100644 index 3f5a827dc..000000000 --- a/DiscImageChef.Server/Statistics.aspx +++ /dev/null @@ -1,412 +0,0 @@ -<%@ Page Language="C#" Inherits="DiscImageChef.Server.Statistics" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Statistics.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders statistics and links to reports. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef Statistics - - - - - -

- Welcome to - - - DiscImageChef - - Server version - -

-
-
-
- - - - - - - - -
- DiscImageChef has run on - - - - times. -
-
-
-
- - - - - - - - -
- DiscImageChef version - - - has been used - times. -
-
-
-
-

Commands run:

-

- analyze command has been run - times
- benchmark command has been run - times
- checksum command has been run - times
- compare command has been run - times
- convert-image command has been run - times
- create-sidecar command has been run - times
- decode command has been run - times
- device-info command has been run - times
- device-report command has been run - times
- dump-media command has been run - times
- entropy command has been run - times
- extract-files command has been run - times
- formats command has been run - times
- image-info command has been run - times
- list-devices command has been run - times
- list-encodings command has been run - times
- ls command has been run - times
- media-info command has been run - times
- media-scan command has been run - times
- printhex command has been run - times
- verify command has been run - times -

-
-
-

Filters found:

- - - - - - - - - - - - - -
FilterTimes
- - - -
-
-
-

Media image formats found:

- - - - - - - - - - - - - -
Media image formatTimes
- - - -
-
-
-

Partition schemes found:

- - - - - - - - - - - - - -
Partition schemeTimes
- - - -
-
-
-

Filesystems found:

- - - - - - - - - - - - - -
Filesystem nameTimes
- - - -
-
-
-

Media types found in images:

- - - - - - - - - - - - - - - -
Physical typeLogical typeTimes
- - - - - -
-
-
-

Media types found in devices:

- - - - - - - - - - - - - - - -
Physical typeLogical typeTimes
- - - - - -
-
-
-

Found devices:

- - - - - - - - - - - - - - - - - - - -
ManufacturerModelRevisionBusReport
- - - - - - - - - -
-
-
-
- - - \ No newline at end of file diff --git a/DiscImageChef.Server/Statistics.aspx.designer.cs b/DiscImageChef.Server/Statistics.aspx.designer.cs deleted file mode 100644 index b87616b3e..000000000 --- a/DiscImageChef.Server/Statistics.aspx.designer.cs +++ /dev/null @@ -1,105 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System.Web.UI.HtmlControls; -using System.Web.UI.WebControls; - -namespace DiscImageChef.Server { - - - public partial class Statistics { - - protected HtmlGenericControl body; - - protected Label lblVersion; - - protected HtmlGenericControl content; - - protected HtmlGenericControl divOperatingSystems; - - protected Repeater repOperatingSystems; - - protected HtmlGenericControl divVersions; - - protected Repeater repVersions; - - protected HtmlGenericControl divCommands; - - protected Label lblAnalyze; - - protected Label lblBenchmark; - - protected Label lblChecksum; - - protected Label lblCompare; - - protected Label lblConvertImage; - - protected Label lblCreateSidecar; - - protected Label lblDecode; - - protected Label lblDeviceInfo; - - protected Label lblDeviceReport; - - protected Label lblDumpMedia; - - protected Label lblEntropy; - - protected Label lblExtractFiles; - - protected Label lblFormats; - - protected Label lblImageInfo; - - protected Label lblListDevices; - - protected Label lblListEncodings; - - protected Label lblLs; - - protected Label lblMediaInfo; - - protected Label lblMediaScan; - - protected Label lblPrintHex; - - protected Label lblVerify; - - protected HtmlGenericControl divFilters; - - protected Repeater repFilters; - - protected HtmlGenericControl divMediaImages; - - protected Repeater repMediaImages; - - protected HtmlGenericControl divPartitions; - - protected Repeater repPartitions; - - protected HtmlGenericControl divFilesystems; - - protected Repeater repFilesystems; - - protected HtmlGenericControl divVirtualMedia; - - protected Repeater repVirtualMedia; - - protected HtmlGenericControl divRealMedia; - - protected Repeater repRealMedia; - - protected HtmlGenericControl divDevices; - - protected Repeater repDevices; - } -} diff --git a/DiscImageChef.Server/TODO.aspx b/DiscImageChef.Server/TODO.aspx deleted file mode 100644 index 2da70ce74..000000000 --- a/DiscImageChef.Server/TODO.aspx +++ /dev/null @@ -1,69 +0,0 @@ -<%@ Page Language="C#" %> -<%@ Register TagPrefix="velyo" Namespace="Velyo.AspNet.Markdown" Assembly="Velyo.AspNet.Markdown" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : TODO.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders TODO.md. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef's TODO - - - - - -

- Return to main page.
- DiscImageChef list of things to do: -

-
- -
- - \ No newline at end of file diff --git a/DiscImageChef.Server/ViewReport.aspx b/DiscImageChef.Server/ViewReport.aspx deleted file mode 100644 index 0aedbfbee..000000000 --- a/DiscImageChef.Server/ViewReport.aspx +++ /dev/null @@ -1,369 +0,0 @@ -<%@ Page Language="C#" Inherits="DiscImageChef.Server.ViewReport" %> -<%-- -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : ViewReport.aspx -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Renders a device report. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2018 Natalia Portillo -// ****************************************************************************/ ---%> - - - - - - DiscImageChef Device Report - - - - - -DiscImageChef Report for - - - -
-
- USB characteristics:
- Manufacturer: -
- Product: -
- Vendor ID: - -
- Product ID: - - -
-
-
- FireWire characteristics:
- Manufacturer: -
- Product: -
- Vendor ID: -
- Product ID: - -
-
-
- PCMCIA characteristics:
- Manufacturer: -
- Product: -
- Manufacturer code: -
- Card code: -
- Compliance: - - - - - - : -
-
-
- -
-
-
- - ATA - characteristics: -
-
- - - - - : -
-
-
-
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
-
- SCSI characteristics:
- Vendor: -
- Product: -
- Revision: -
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
SCSI mode sense pages: - - - - - - - - - - - - - -
ModeContents
- - - -
-
-
-
SCSI extended vital product data pages: - - - - - - - - - - - - - -
EVPDContents
- - - -
-
-
-
SCSI CD-ROM capabilities:
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
-
SCSI MMC features:
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
-
SCSI Streaming device capabilities:
- Block size granularity: -
- Maximum block length: - bytes
- Minimum block length: - bytes
- - -
- - Information for supported density with primary code - and secondary code - -
- Drive can write this density: -
- Duplicate density: -
- Default density: -
- Density has - bits per mm, with - tracks in a - mm width tape - Name: -
- Organization: -
- Description: -
- Maximum capacity: - megabytes
-
-
- - -
- - Information for supported media with type code - -
- Drive can write this density: -
- Media is - meters long in a - mm width tape - Name: -
- Organization: -
- Description: -
-
-
-
-
-
-
Tested media:
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
-
- MultiMediaCard device:
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
-
-
- SecureDigital device:
- - - <%# Container.DataItem?.ToString() ?? string.Empty %>
-
-
-
- - \ No newline at end of file diff --git a/DiscImageChef.Server/ViewReport.aspx.designer.cs b/DiscImageChef.Server/ViewReport.aspx.designer.cs deleted file mode 100644 index 18398b2f0..000000000 --- a/DiscImageChef.Server/ViewReport.aspx.designer.cs +++ /dev/null @@ -1,125 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System.Web.UI.HtmlControls; -using System.Web.UI.WebControls; - -namespace DiscImageChef.Server { - - - public partial class ViewReport { - - protected HtmlGenericControl content; - - protected Label lblManufacturer; - - protected Label lblModel; - - protected Label lblRevision; - - protected HtmlGenericControl divUsb; - - protected Label lblUsbManufacturer; - - protected Label lblUsbProduct; - - protected Label lblUsbVendor; - - protected Label lblUsbVendorDescription; - - protected Label lblUsbProductId; - - protected Label lblUsbProductDescription; - - protected HtmlGenericControl divFirewire; - - protected Label lblFirewireManufacturer; - - protected Label lblFirewireProduct; - - protected Label lblFirewireVendor; - - protected Label lblFirewireProductId; - - protected HtmlGenericControl divPcmcia; - - protected Label lblPcmciaManufacturer; - - protected Label lblPcmciaProduct; - - protected Label lblPcmciaManufacturerCode; - - protected Label lblPcmciaCardCode; - - protected Label lblPcmciaCompliance; - - protected Repeater repPcmciaTuples; - - protected HtmlGenericControl divAta; - - protected Label lblAtapi; - - protected Label lblAtaDeviceType; - - protected Repeater repAtaTwo; - - protected Repeater repAtaOne; - - protected HtmlGenericControl divScsi; - - protected Label lblScsiVendor; - - protected Label lblScsiProduct; - - protected Label lblScsiRevision; - - protected Repeater repScsi; - - protected HtmlGenericControl divScsiModeSense; - - protected Repeater repModeSense; - - protected HtmlGenericControl divScsiEvpd; - - protected Repeater repEvpd; - - protected HtmlGenericControl divScsiMmcMode; - - protected Repeater repScsiMmcMode; - - protected HtmlGenericControl divScsiMmcFeatures; - - protected Repeater repScsiMmcFeatures; - - protected HtmlGenericControl divScsiSsc; - - protected Label lblScsiSscGranularity; - - protected Label lblScsiSscMaxBlock; - - protected Label lblScsiSscMinBlock; - - protected Repeater repScsiSscDensities; - - protected Repeater repScsiSscMedias; - - protected HtmlGenericControl divTestedMedia; - - protected Repeater repTestedMedia; - - protected HtmlGenericControl divMMC; - - protected Repeater repMMC; - - protected HtmlGenericControl divSD; - - protected Repeater repSD; - } -} diff --git a/DiscImageChef.Server/Views/Home/Changelog.cshtml b/DiscImageChef.Server/Views/Home/Changelog.cshtml new file mode 100644 index 000000000..c577fa711 --- /dev/null +++ b/DiscImageChef.Server/Views/Home/Changelog.cshtml @@ -0,0 +1,66 @@ +@{ + ViewBag.Title = "DiscImageChef"; +} +@{ + /*************************************************************************** + The Disc Image Chef +---------------------------------------------------------------------------- + + Filename : Changelog.aspx + Author(s) : Natalia Portillo + + Component : DiscImageChef Server. + +--[ Description ] ---------------------------------------------------------- + + Renders Changelog.md. + +--[ License ] -------------------------------------------------------------- + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . + +---------------------------------------------------------------------------- + Copyright © 2011-2018 Natalia Portillo +****************************************************************************/ +} + + + + + + + @ViewBag.Title + + + + + +

+ @Html.ActionLink("Return to main page.", "Index")
+ DiscImageChef list of changes: +

+
@Html.Raw(ViewBag.Markdown)
+ + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/DONATING.cshtml b/DiscImageChef.Server/Views/Home/DONATING.cshtml new file mode 100644 index 000000000..896569b2b --- /dev/null +++ b/DiscImageChef.Server/Views/Home/DONATING.cshtml @@ -0,0 +1,66 @@ +@{ + ViewBag.Title = "DiscImageChef"; +} +@{ + /*************************************************************************** + The Disc Image Chef +---------------------------------------------------------------------------- + + Filename : DONATING.aspx + Author(s) : Natalia Portillo + + Component : DiscImageChef Server. + +--[ Description ] ---------------------------------------------------------- + + Renders DONATING.md. + +--[ License ] -------------------------------------------------------------- + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . + +---------------------------------------------------------------------------- + Copyright © 2011-2018 Natalia Portillo +****************************************************************************/ +} + + + + + + @ViewBag.Title + + + + + + +

+ @Html.ActionLink("Return to main page.", "Index")
+ DiscImageChef list of things to be donated: +

+
@Html.Raw(ViewBag.Markdown)
+ + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/Index.cshtml b/DiscImageChef.Server/Views/Home/Index.cshtml new file mode 100644 index 000000000..dfc34ed3e --- /dev/null +++ b/DiscImageChef.Server/Views/Home/Index.cshtml @@ -0,0 +1,71 @@ +@{ + ViewBag.Title = "DiscImageChef"; +} +@{ + /*************************************************************************** + The Disc Image Chef +---------------------------------------------------------------------------- + + Filename : Default.aspx + Author(s) : Natalia Portillo + + Component : DiscImageChef Server. + +--[ Description ] ---------------------------------------------------------- + + Renders README.md. + +--[ License ] -------------------------------------------------------------- + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . + +---------------------------------------------------------------------------- + Copyright © 2011-2018 Natalia Portillo +****************************************************************************/ +} + + + + + + + @ViewBag.Title + + + + + +

+ Welcome to + + + DiscImageChef + + Server version @ViewBag.lblVersion +

+
@Html.Raw(ViewBag.Markdown)
+ + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Home/TODO.cshtml b/DiscImageChef.Server/Views/Home/TODO.cshtml new file mode 100644 index 000000000..4915aa059 --- /dev/null +++ b/DiscImageChef.Server/Views/Home/TODO.cshtml @@ -0,0 +1,66 @@ +@{ + ViewBag.Title = "DiscImageChef"; +} +@{ + /*************************************************************************** + The Disc Image Chef +---------------------------------------------------------------------------- + + Filename : Changelog.aspx + Author(s) : Natalia Portillo + + Component : DiscImageChef Server. + +--[ Description ] ---------------------------------------------------------- + + Renders Changelog.md. + +--[ License ] -------------------------------------------------------------- + + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . + +---------------------------------------------------------------------------- + Copyright © 2011-2018 Natalia Portillo +****************************************************************************/ +} + + + + + + + @ViewBag.Title + + + + + +

+ @Html.ActionLink("Return to main page.", "Index")
+ DiscImageChef list of things to do: +

+
@Html.Raw(ViewBag.Markdown)
+ + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Report/View.cshtml b/DiscImageChef.Server/Views/Report/View.cshtml new file mode 100644 index 000000000..dfe7637de --- /dev/null +++ b/DiscImageChef.Server/Views/Report/View.cshtml @@ -0,0 +1,250 @@ +@using DiscImageChef.CommonTypes.Metadata + + + + + DiscImageChef Device Report + + + + + + +DiscImageChef Report for +@ViewBag.lblManufacturer +@ViewBag.lblModel +@ViewBag.lblRevision + +@if(ViewBag.UsbItem != null) +{ +
+
+ USB characteristics:
+ Manufacturer: @ViewBag.UsbItem.Manufacturer
+ Product: @ViewBag.UsbItem.Product
+ Vendor ID: @ViewBag.UsbItem.VendorDescription
+ Product ID: @ViewBag.UsbItem.ProductDescription +
+} + +@if(ViewBag.FireWireItem != null) +{ +
+
+ FireWire characteristics:
+ Manufacturer: @ViewBag.FireWire.Manufacturer
+ Product: @ViewBag.FireWire.Product
+ Vendor ID: @ViewBag.FireWire.VendorDescription
+ Product ID: @ViewBag.FireWire.ProductDescription +
+} + +@if(ViewBag.PcmciaItem != null) +{ +
+
+ PCMCIA characteristics:
+ Manufacturer: @ViewBag.PcmciaItem.Manufacturer
+ Product: @ViewBag.PcmciaItem.ProductName
+ Manufacturer code: @ViewBag.PcmciaItem.VendorDescription
+ Card code: @ViewBag.PcmciaItem.CardCode
+ Compliance: @ViewBag.PcmciaItem.Compliance
+ @if(ViewBag.repPcmciaTuples != null) + { + foreach(KeyValuePair kvp in ViewBag.repPcmciaTuples) + { + @kvp.Key: @kvp.Value
+ } + } +
+} + +@if(ViewBag.AtaItem != null) +{ +
+
+ + @ViewBag.AtaItem characteristics: +
+ @ViewBag.lblAtaDeviceType
+ @foreach(KeyValuePair kvp in ViewBag.repAtaTwo) + { + @kvp.Key: @kvp.Value
+ } +
+ @foreach(string item in ViewBag.repAtaOne) + { + @Html.Raw(item)
+ } +
+} +@if(ViewBag.repScsi != null) +{ +
+
+ SCSI characteristics:
+ Vendor:@ViewBag.lblScsiVendor
+ Product:@ViewBag.lblScsiProduct
+ Revision:@ViewBag.lblScsiRevision
+ @foreach(string item in ViewBag.repScsi) + { + @Html.Raw(item)
+ } + @if(ViewBag.repModeSense != null) + { +
+
SCSI mode sense pages: + + + + + + @foreach(KeyValuePair kvp in ViewBag.repModeSense) + { + + + + + } +
ModeContents
+ @kvp.Key + + @Html.Raw(kvp.Value) +
+
+ } + @if(ViewBag.repEvpd != null) + { +
+
SCSI extended vital product data pages: + + + + + + @foreach(KeyValuePair kvp in ViewBag.repEvpd) + { + + + + + } +
EVPDContents
+ @kvp.Key + + @Html.Raw(kvp.Value) +
+
+ } + @if(ViewBag.repScsiMmcMode != null) + { +
+
SCSI CD-ROM capabilities:
+ @foreach(string item in ViewBag.repScsiMmcMode) + { + @Html.Raw(item)
+ } +
+ } + @if(ViewBag.repScsiMmcFeatures != null) + { +
+
SCSI MMC features:
+ @foreach(string item in ViewBag.repScsiMmcFeatures) + { + @Html.Raw(item)
+ } +
+ } + @if(ViewBag.divScsiSscVisible == true) + { +
+
SCSI Streaming device capabilities:
+ Block size granularity: @ViewBag.lblScsiSscGranularity
+ Maximum block length: @ViewBag.lblScsiSscMaxBlock bytes
+ Minimum block length: @ViewBag.lblScsiSscMinBlock bytes
+ @if(ViewBag.repScsiSscDensities != null) + { + foreach(SupportedDensity density in ViewBag.repScsiSscDensities) + { + +
+ + Information for supported density with primary code @($"{density.PrimaryCode:X2h}") and secondary code @($"{density.SecondaryCode:X2h}") +
+ Drive can write this density: @density.Writable
+ Duplicate density: @density.Duplicate
+ Default density: @density.DefaultDensity
+ Density has @density.BitsPerMm bits per mm, with @density.Tracks tracks in a @density.Width mm width tape + Name: @density.Name
+ Organization: @density.Organization
+ Description: @density.Description
+ Maximum capacity: @density.Capacity megabytes
+
+ } + } + @if(ViewBag.repScsiSscMedias != null) + { + foreach(SscSupportedMedia media in ViewBag.repScsiSscMedias) + { + +
+ + Information for supported media with type code @($"{media.MediumType:X2h}") +
+ Media is @media.Length m long in a @media.Width mm width tape + Name: @media.Name
+ Organization: @media.Organization
+ Description: @media.Description
+
+ } + } +
+ } +
+} +@if(ViewBag.repTestedMedia != null) +{ +
+
Tested media:
+ @foreach(string item in ViewBag.repTestedMedia) + { + @Html.Raw(item)
+ } +
+} +@if(ViewBag.repMMC != null) +{ +
+
+ MultiMediaCard device:
+ @foreach(string item in ViewBag.repMMC) + { + @Html.Raw(item)
+ } +
+} +@if(ViewBag.repSD != null) +{ +
+
+ SecureDigital device:
+ @foreach(string item in ViewBag.repSD) + { + @Html.Raw(item)
+ } +
+} + + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Stats/Index.cshtml b/DiscImageChef.Server/Views/Stats/Index.cshtml new file mode 100644 index 000000000..05f5fcc79 --- /dev/null +++ b/DiscImageChef.Server/Views/Stats/Index.cshtml @@ -0,0 +1,315 @@ +@using DiscImageChef.CommonTypes.Metadata +@using DiscImageChef.Server.Models +@using Filter = DiscImageChef.Server.Models.Filter +@{ + ViewBag.Title = "DiscImageChef Statistics"; +} + + + + + + + @ViewBag.Title + + + + + + + +

+ Welcome to + + + DiscImageChef + + Server version @ViewBag.Version +

+
+
+@if(ViewBag.repOperatingSystems != null) +{ +
+ + @foreach(NameValueStats os in ViewBag.repOperatingSystems) + { + + + + } +
+ DiscImageChef has run on @os.name @os.Value times. +
+
+
+} +@if(ViewBag.repVersions != null) +{ +
+ + @foreach(NameValueStats version in ViewBag.repVersions) + { + + + + } +
+ DiscImageChef version @version.name has been used @version.Value times. +
+
+
+} +
+

Commands run:

+

+ analyze command has been run @ViewBag.lblAnalyze times
+ benchmark command has been run @ViewBag.lblBenchmark times
+ checksum command has been run @ViewBag.lblChecksum times
+ compare command has been run @ViewBag.lblCompare times
+ convert-image command has been run @ViewBag.lblConvertImage times
+ create-sidecar command has been run @ViewBag.lblCreateSidecar times
+ decode command has been run @ViewBag.lblDecode times
+ device-info command has been run @ViewBag.lblDeviceInfo times
+ device-report command has been run @ViewBag.lblDeviceReport times
+ dump-media command has been run @ViewBag.lblDumpMedia times
+ entropy command has been run @ViewBag.lblEntropy times
+ extract-files command has been run @ViewBag.lblExtractFiles times
+ formats command has been run @ViewBag.lblFormats times
+ image-info command has been run @ViewBag.lblImageInfo times
+ list-devices command has been run @ViewBag.lblListDevices times
+ list-encodings command has been run @ViewBag.lblListEncodings times
+ ls command has been run @ViewBag.lblLs times
+ media-info command has been run @ViewBag.lblMediaInfo times
+ media-scan command has been run @ViewBag.lblMediaScan times
+ printhex command has been run @ViewBag.lblPrintHex times
+ verify command has been run @ViewBag.lblVerify times +

+
+@if(ViewBag.repFilters != null) +{ +
+

Filters found:

+ + + + + + @foreach(Filter filter in ViewBag.repFilters) + { + + + + + } +
FilterTimes
+ @filter.Name + + @($"{filter.Count}") +
+
+} +@if(ViewBag.repMediaImages != null) +{ +
+

Media image formats found:

+ + + + + + @foreach(MediaFormat format in ViewBag.repMediaImages) + { + + + + + } +
Media image formatTimes
+ @format.Name + + @($"{format.Count}") +
+
+} +@if(ViewBag.repPartitions != null) +{ +
+

Partition schemes found:

+ + + + + + @foreach(Partition partition in ViewBag.repPartitions) + { + + + + + } +
Partition schemeTimes
+ @partition.Name + + @($"{partition.Count}") +
+
+} +@if(ViewBag.repFilesystems != null) +{ +
+

Filesystems found:

+ + + + + + @foreach(Filesystem filesystem in ViewBag.repFilesystems) + { + + + + + } +
Filesystem nameTimes
+ @filesystem.Name + + @($"{filesystem.Count}") +
+
+} +@if(ViewBag.repVirtualMedia != null) +{ +
+

Media types found in images:

+ + + + + + + @foreach(MediaItem media in ViewBag.repVirtualMedia) + { + + + + + + } +
Physical typeLogical typeTimes
+ @media.Type + + @media.SubType + + @($"{media.Count}") +
+
+} +@if(ViewBag.repRealMedia != null) +{ +
+

Media types found in devices:

+ + + + + + + @foreach(MediaItem media in ViewBag.repRealMedia) + { + + + + + + } +
Physical typeLogical typeTimes
+ @media.Type + + @media.SubType + + @($"{media.Count}") +
+
+} +@if(ViewBag.repDevices != null) +{ +
+

Found devices:

+ + + + + + + + + @foreach(DeviceItem device in ViewBag.repDevices) + { + + + + + + + + } +
ManufacturerModelRevisionBusReport
+ @device.Manufacturer + + @device.Model + + @device.Revision + + @device.Bus + + @if(device.ReportId != 0) + { + @Html.ActionLink("Yes", "View", "Report", new {id = device.ReportId}, new {target = "_blank"}) + } + else + { No } +
+
+} +
+
+ + + \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Web.config b/DiscImageChef.Server/Views/Web.config new file mode 100644 index 000000000..538cf368e --- /dev/null +++ b/DiscImageChef.Server/Views/Web.config @@ -0,0 +1,43 @@ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DiscImageChef.Server/docs/Changelog.md b/DiscImageChef.Server/docs/Changelog.md new file mode 100644 index 000000000..235150633 --- /dev/null +++ b/DiscImageChef.Server/docs/Changelog.md @@ -0,0 +1,857 @@ +# [4.5.1.1692] - 2018-07-19 +## Fixed +### - Alcohol 120% disc image +- Correct writing images of Compact Disc >= 60 min +- Correct writing MODE2 tracks to image +- Correct writing TOC to image +- Generation of multisession images +- Generation of pregaps changing tracks + +# [4.5.0.1663] - 2018-06-24 +## Added +### - Alcohol 120% disc image +- 010editor template. +- Support for creating images. + +### - Apple New Disk Image Format +- Support RLE compressed images. + +### - Blindwrite 4 disc image +- 010editor template. +- Information about why this format cannot support writing. + +### - Blindwrite 5 disc image +- 010editor template. +- Information about why this format cannot support writing. + +### - DART disk image +- Support RLE compressed images. + +### - Decoders +- Added Blu-ray DI decoders. +- Support decoding 2048 bytes PFI. + +### - Devices +- On Linux try to open in read/write and exclusive mode, if not retry in readonly. +- On Linux use direct SG_IO. +- Workaround some Blu-ray drives not reporting correct size on READ DISC STRUCTURE. + +### - DiscJuggler disc image +- Information about why this format cannot support writing. + +### - Dumping +- Added support for CD drives that don't return a TOC. +- Added support for CD drives that don't support READ CD command. +- Added support for Compact Disc that don't report tracks. +- Add support for dumping media in any of the now supported writable formats. +- Dump ISRC. +- Dump MCN. +- Fix reading PW subchannels. +- Separate trimming from error retry. +- When dumping CDs in persistent mode, try disabling L-EC check if drive doesn't support TB bit, or doesn't return data with TB bit enabled. +- When dumping, print bad sectors to dump log. + +### - FAT filesystem +- Add list of known boot sector hashes. +- Support Human68k FAT16 BPB. + +### - Filesystems +- Detecting High Performance Optical File System (HPOFS). +- Detecting Microsoft Resilient filesystem (ReFS). +- Detecting PC-FX executable tracks. +- Detecting Xia filesystem. + +### - Apple 2IMG disk image +- Support for creating images. + +### - Anex86 disk image +- Support for creating images. + +### - Apple II interleaved disk image +- Support for creating images. + +### - Apple Universal Disk Image Format +- Support for creating images. +- Support RLE compressed images. + +### - Apridisk disk image +- Support for creating images. + +### - Basic Lisa Utility disk image +- Support for creating images. + +### - cdrdao disc image +- Support for creating images. + +### - CDRWin cuesheet disc image +- Support for creating images. + +### - CisCopy disk image +- Support for creating images. + +### - CloneCD disc image +- Support for creating images. + +### - Digital Research DISKCOPY disk image +- Support for creating images. + +### - DiskCopy 4.2 disk image +- Support for creating images. + +### - IBM SaveDskF disk image +- Support for creating images. + +### - MaxiDisk disk image +- Support for creating images. + +### - NHDr0 disk image +- Support for creating images. + +### - Parallels disk image +- Support for creating images. + +### - QEMU Copy-On-Write disk image +- Support for creating images. + +### - QEMU Copy-On-Write v2 disk image +- Support for creating images. + +### - QEMU Enhanced Disk image +- Support for creating images. + +### - RAW (sector by sector) disk image +- Added geometry and size for ZIP100 and ZIP250. +- Support 2448 bytes/sector and 2352 bytes/sector CD images. +- Support media tags. + +### - Ray Arachelian's disk image +- Support for creating images. + +### - RS-IDE disk image +- Support for creating images. + +### - T98 Hard Disk Image +- Support for creating images. + +### - Virtual98 disk image +- Support for creating images. + +### - VirtualBox disk image +- Added image type and flags. +- Support for creating images. + +### - VirtualPC disk image +- Support for creating images. + +### - VMware disk image +- Support for creating images. + +## Fixes +### - Apple DOS filesystem +- Use Apple II character set encoding. + +### - Apple ProDOS filesystem +- Use Apple IIc character set encoding. + +### - BlindWrite 4 disc image +- Fix incorrect pregap calculation preventing images from showing correct data. + +### - CICM metadata +- Can now get dump hardware information from images. + +### - cdrdao disc image +- Fix audio track endian. +- Fix when disc catalog number uses whole ASCII and not only numeric digits. + +### - CDRWin disc image +- Fix when disc catalog number uses whole ASCII and not only numeric digits. + +### - CloneCD disc image +- Fix when disc catalog number uses whole ASCII and not only numeric digits. + +### - Checksums +- Correct CD ECC. +- Correct CD EDC. +- Fix CRC16 returning a 32-bit value. +- Fix CRC64 endian. +- Fix Fletcher-16. +- Fix Fletcher-32. + +### - Create sidecar +- Add filesystems only to the appropriate partition and track. +- Fix CD Lead-in, TOC and XGD tags. +- Fix diameter setting. +- Fix SCSI MODE SENSE. +- Fix USB descriptors. + +### - DART disk image +- Fixed endian. + +### - Devices +- Fix sending READ LONG commands to ATA devices. +- Fixed crashing with some rogue SCSI MMC firmwares. + +### - Dumping +- Correctly detect CD-i, CD+ and CD-ROM XA. +- Correctly detect Mode 2 Form 1 and Form 2. +- Do not retry when retry passes are zero. +- Do not try to read multisession lead-out/lead-in as they result in errors that are not really there. +- Get correct track flags. +- Retry only the number of times requested. +- Return drive to previous error correction status. +- Send error recovery MODE before retrying sectors. + +### - HDCopy disk image +- Fix sector calculation. + +### - Image comparison +- Fix when sessions are null. + +### - Image verification +- Corrected status printing. + +### - ISO9660 filesystem +- Do not try to read past partition if El Torito indicates image goes beyond limits. +- Fix when root directory is outside of device. +- Skip null terminated strings in ISO9660 fields. + +### - Lisa filesystem +- Corrected character set encoding. + +### - Macintosh filesystem +- Corrected character set encoding. + +### - PC-98 Partition Table +- Prevent some FAT BPBs to false positive as PC-98 partition tables. + +### - RT-11 filesystem +- Use Radix-50 character set encoding. + +### - System V filesystem +- Fix partition bounds. + +### - VirtualPC disk image +- Corrected reading non-allocated blocks. + +## Changes +- Added command to convert disc images. +- Added command to get information about an image and its contents. +- Added D/CAS-25, D/CAS-85 and D/CAS-103 formats. +- Added IRC notifications for Travis CI. +- Added measured dimensions from an UMD. +- Added media types for NEO GEO CD, PC-FX. +- Added new image format designed to store as much information about media as a drive returns: dicformat. +- Added numeric values to media types. +- Added project to create test filesystems on 16-bit OS/2. +- Added project to create test filesystems on 32-bit OS/2. +- Added project to create test filesystems on DOS. +- Added project to create test filesystems on Mac OS. +- Added size of 640MiB magneto-optical disk. +- Added support for writing disc images. +- Compliant with GDPR. +- Corrected floptical geometry to data according to IRIX. +- Do not assume pointers are 32-bit in several Windows device calls. +- Fixed when statistics settings are null. +- Minimum .NET Framework version is now 4.6.1. +- Sort verbs list. +- Support newest XDG Base Directory Specification for Linux. + +# [4.0.1.0] - 2018-01-06 +## Fixes +### Apple DOS and ProDOS interleaved disk images +- Fixed interleaving values. + +### Apple Nibble disk image +- Fixed detection of DOS vs ProDOS sector order. + +### Apple 2IMG disk image +- Fixed deinterleaving of DOS and ProDOS sector order. +- Fixed denibblizing images. + +### Apple ProDOS filesystem +- Fixed detection on Apple II disks. + +### UCSD Pascal filesystem +- Added support for Apple II variants (two physical sectors per logical sector and little endian fields). + +# [4.0.0.0] - 2017-12-25 +## Added +### - Advanced Disc Filing System +- Added support for ADFS-S, ADFS-M, ADFS-L, ADFS-D, ADFS-E, ADFS-E+, ADFS-F, ADFS-F+ and ADFS-G. + +### - Apple Partition Map +- Added support for decoding Driver Description Map. +- Added support for maps without Driver Description Map. +- Added support for old partition table. + +### - Commands +- Added separate application to debug commands sent to devices. +- list-devices: Lists devices that can be used for device dependent commands. +- list-encodings: Lists supported character encodings. + +### - Create Sidecar command +- Added support for hashing DiscFerret flux images. +- Added support for hashing KryoFlux STREAM flux images. +- Added support for hashing SuperCardPro flux images. +- Added support for tape dumps where each tape-file is a separate dumped file. +- Calculate checksum of contents not only of image file. +- Consider each optical disc track as a separate partition. +- Store superblock modification time on sidecar. +- Support tracks. +- Use dump drive information from images that support it. + +### - Decoders +- Xbox DMI. +- Xbox Security Sectors. + +### - Devices +- MMC. +- PCMCIA block devices. +- SCSI Streaming Devices (aka "tapes"). +- SecureDigital. + +### - Device commands +- Add ATA and SCSI commands support for FreeBSD. +- Add ATA commands support for Windows. +- Add retrieval of USB information on Windows. +- Add SecureDigital/MMC commands support for Windows. + +### - Disc images. +- Alcohol 120%. +- Anex86. +- Apple DOS interleaved (.do). +- Apple New Disk Image Format (aka NDIF, aka img, aka DiskCopy 6). +- Apple Nibble (aka NIB). +- Apple ProDOS interleaved (.po). +- Apple Universal Disk Image Format (aka UDIF, aka dmg). +- BlindWrite 4. +- BlindWrite 5. +- CisCopy (aka DC-File or DCF). +- CloneCD. +- CopyQM. +- CPCEMU Disk File. +- CPCEMU Extended Disk File. +- D64. +- D71. +- D81. +- Digital Research's DiskCopy. +- DiscJuggler. +- HD-Copy. +- IBM SaveDskF. +- IMD. +- MAME Compressed Hunks of Data (aka CHD). +- Parallels Hard Disk Image (aka HDD). +- Partclone disk images +- Partimage disk images +- QEMU Copy-On-Write (aka QCOW). +- QEMU Copy-On-Write v2. +- QEMU Enhanced Disk (aka QED). +- Quasi88 (.D77/.D88). +- Ray Arachelian's Disk IMage (.DIM). +- RS-IDE hard disk images. +- Spectrum floppy disk image (.FDI) +- T98. +- VHDX. +- Virtual98. +- VMware. +- X68k .DIM. + +### - DiskCopy 4.2 disk image +- Added support for invalid images that use little-endian values. +- Added support for images created by macOS that don't have a format byte set. +- Use resource fork to get DiskCopy version used to create them. + +### - Dumping +- Added the ability to resume a partially done dump, even on a separate drive. +- Added the ability to skip dumping the Lead-in. +- Allow creation of a separate subchannel file. +- Create dump log. +- Dumping optical media creates an Alcohol 120% descriptor file. +- Raw dump of DVD with Matshita recorders. +- XGD with Kreon drives. + +### - ext2/3/4 filesystem +- Added new superblock fields. +- Added support for devices with sectors bigger than 512 bytes. + +### - FAT filesystem +- Added DEC Rainbow's hard-wired BPB. +- Added support for volumes with 256 bytes/sector. +- Added support for ACT Apricot BPB. +- Gets volume label, creation time and modification time from root directory if available. + +### - Filesystems +- Apple DOS. +- CP/M. +- Detecting AO-DOS. +- Detecting AtheOS. +- Detecting CD-i. +- Detecting Commodore 1540/1541/1571/1581. +- Detecting cram. +- Detecting Cray UNICOS. +- Detecting dump(8) (Old historic BSD, AIX, UFS and UFS2 types). +- Detecting ECMA-67. +- Detecting exFAT. +- Detecting Extent File System (aka SGI EFS). +- Detecting F2FS. +- Detecting FAT+. +- Detecting fossil. +- Detecting HAMMER. +- Detecting High Sierra Format. +- Detecting HP Logical Interchange Format. +- Detecting IBM JFS. +- Detecting Locus. +- Detecting MicroDOS file system. +- Detecting NILFS2. +- Detecting OS-9 Random Block File (aka RBF). +- Detecting Professional File System (aka PFS). +- Detecting QNX 4. +- Detecting QNX 6. +- Detecting Reiser. +- Detecting Reiser4. +- Detecting RT-11. +- Detecting SmartFileSystem (aka SFS, aka Standard File System). +- Detecting Squash. +- Detecting Universal Disk Format (aka UDF). +- Detecting Veritas. +- Detecting VMware. +- Detecting Xbox. +- Detecting XFS. +- Detecting Zettabyte File System (aka ZFS). +- UCSD Pascal. + +### - Filters +- AppleDouble. +- Apple PCExchange. +- AppleSingle. +- BZIP2. +- GZIP. +- LZIP. +- MacBinary. +- XZ. + +### - GUID Partition Table +- New type GUIDs. + +### - ISO9660 filesystem +- Added detection of AAIP extensions. +- Added detection of Apple extensions. +- Added detection of EFI Platform ID for El Torito. +- Added detection of RRIP extensions. +- Added detection of SUSP extensions. +- Added detection of XA extensions. +- Added detection of ziso extensions. + +### - Lisa filesystem +- Full read-only support. + +### - Media types +- DDS, DDS-2, DDS-3, DDS-4. +- HiFD. +- IOMEGA Clik! (aka PocketZip). +- IOMEGA JAZ. +- LS-120, LS-240, FD32MB. +- NEC floppies. +- Old DEC hard disks +- SHARP floppies. +- XGD3. + +### - Partitions +- Acorn FileCore. +- ACT Apricot. +- BSD disklabels. +- DEC disklabels. +- DragonFly BSD. +- Human68k. +- MINIX subpartitions. +- NEC PC-9800. +- Plan9 partition table. +- Rio Karma. +- SGI Disk Volume Headers. +- UNIX hardwired partition tables. +- UNIX VTOC. +- XENIX partition table. + +### - SCSI decoding +- Handling of EVPDs smaller than length field. +- Handling of modes 02h, 04h and 1Ch smaller than expected. +- Prettyfying of mode 0Bh. + +### - SmartFileSystem +- Added support for version 2. + +### - Statistics +- Added version and operating system statistics. + +### - Sun disklabel +- Added bound checks. +- Added support for 16-entries VTOC. +- Added support for pre-VTOC disklabels. +- Corrected structures for 8-entries VTOC. + +### - System V filesystem +- Added COHERENT offsets. +- Check for it starting on second cylinder. +- Corrected cluster size calculation. +- Corrected detection between Release 2 and Release 4. +- Corrected Release 2 superblock parameters. +- Enlarged NICFREE for Version 7. + +### TeleDisk images +- Added support for Advanced Compression. +- Added support for floppy lead-out. +- Added variable sectors per track support. + +## Fixes +### - AmigaDOS filesystem +- Corrected checksum calculation. +- Corrected cluster size calculation. +- Corrected root block location. +- Corrected support for AROS i386 variant that has a PC bootblock before the AmigaDOS bootblock itself. +- Detection on hard disks or with clusters bigger than 1 sector. +- Tested FFS2. + +### - Apple Partition Map +- Added bound checks. +- Added support for decoding Driver Description Map. +- Added support for maps without Driver Description Map. +- Added support for old partition table. +- Corrected partition start when map it's not on start of device. +- Corrected support for misaligned maps, like on CDs. +- Cut partitions that span outside the device. + +### - cdrdao +- Audio track matching. +- Corrected images that start with comments. +- Prevent reading binary files. + +### - CDRWin +- CD-Text detection. +- CD+G data return. +- Fixed composer parsing. +- Prevent reading binary files. + +### - CP/M filesystem +- Corrected cluster count calculation. +- Corrected directory location on CP/M-86. +- Corrected sector reading. +- Skip media types that were never used as a CP/M disk. + +### - Create Sidecar command +- Corrected creation when path is absolute. + +### - Device commands +- Do not send SCSI INQUIRY to non-SCSI paths on Linux. + +### - Device reports +- Call ATA READ LONG last, as it confuses some drives. +- Try SCSI READ LONG (10) until max block size (65535). + +### - DiskCopy 4.2 +- Corrected track order for Lisa and Macintosh Twiggy. + +### - Dreamcast GDI images +- Prevent reading binary files. + +### - Dumping +- Calculation of streaming device dumping speed. +- Corrected dumping CD-R and CD-RW. +- Optical media with 2048 bytes/sector now get ".iso" file extension. +- Retry when SCSI devices return reset status. +- Streaming Devices now store block size changes in metadata sidecar. +- Wait for SCSI devices to exit ASC 28h (MEDIUM CHANGE) status. + +### - ext2/3/4 filesystem +- Use os type as XML system identifier. + +### - FAT filesystem +- Behaviour with some non-compliant media descriptors. +- Corrected 5.25" MD1DD detection. +- Corrected boot code detection. +- Corrected misaligned volumes on optical media. +- Rewritten to better detect Atari, MSX, *-DOS and ANDOS variants. +- Use OEM name as XML system identifier. + +### - Guid Partition Table +- Added bound checks. +- Corrected misaligned tables on optical media. +- Corrected when table is smaller than one sector. + +### - HFS filesystem +- Corrected detection of a PowerPC only bootable volume (no boot sector). +- Corrected misaligned volumes on optical media. +- Corrected volume serial number case. + +### - HFS+ filesystem +- Corrected misaligned volumes on optical media. +- Corrected misalignment of fields in Volume Header. +- Use last mount version as XML system identifier. + +### - HPFS filesystem +- Corrected cluster size. +- Detect boot code. +- Show NT flags. +- Use OEM name as XML system identifier. + +### - ISO9660 filesystem +- Complete rewrite. +- Check that date fields start with a number. + +### - Master Boot Record partitioning scheme +- Check real presence of a GPT. +- Corrected infinite looping on extended partitions. +- Remove disklabels support. +- Support misaligned MBRs on optical media. +- Support NEC extensions. +- Support OnTrack extensions. + +### - MINIX filesystem +- Added support for v1 and v2 created on MINIX 3. +- Corrected misaligned volumes on optical media. + +### - Nero Burning ROM +- Corrected track handling. +- Corrected typo on parsing v2 images. +- Disc types. +- Do not identify positively if footer version is unknown. +- Lead-In handling. +- Mode2 RAW sectors. +- Session count. + +### - NeXT partition table +- Added missing fields. +- Corrected offsets. +- Cut partitions that span outside the device. + +### - ODS filesystem +- Corrected cluster size calculation. +- Corrected misaligned volumes on optical media. + +### - ProDOS filesystem +- Corrected cluster size calculation. +- Corrected misaligned volumes on optical media. +- Volume size. + +### - Rigid Disk Block partition scheme +- Corrected AMIX mappings. + +### - SCSI decoding +- Handling of EVPDs smaller than length field. +- Handling of modes 02h, 04h and 1Ch smaller than expected. +- Prevented overflow on MMC FEATURES decoding. +- Prevented overflow on SCSI MODE PAGE decoding. + +### - SmartFileSystem +- Added support for version 2. + +### - Sun disklabel +- Added bound checks. +- Corrected structures for 8-entries VTOC. + +### - System V filesystem +- Check for it starting on second cylinder. +- Corrected cluster size calculation. +- Corrected detection between Release 2 and Release 4. +- Corrected Release 2 superblock parameters. +- Enlarged NICFREE for Version 7. + +### - UFS filesystem +- Corrected superblock locations. +- Move superblock to a single structure and marshal it, corrects detection of several variants. + +## Changes +- Added a public changelog. +- Added a side application to create device reports under Linux without a .NET environment. +- Added operating system version statistics. +- Added partitioning scheme name to partition structures. +- Added several internal tests to prevent regression on changes. +- Added support for different character encodings. +- Added support for filters. +- Added support for nested partitioning schemes. +- Added support for propagating disk geometry, needed by PC-98 partitions and old MBRs. +- Better support for decoding multibyte encodings from C, Pascal and space-padded strings. +- Changed handling of compressed files, using temporary files and caching. +- Corrected casting on big-endian marshalling that was failing on some .NET Framework versions. +- Corrected filter list reuse. +- Disabled EDC check on CDs because it is not working (TODO). +- Filesystems now have access to full partition structure. +- Filters no longer return their own extension when requested for filename. +- Moved Claunia.RsrcFork to NuGet. +- Priam tags. +- Support drive firmware inside disc images. +- Support subchannel with only Q channel. + +# [3.0.0.0] - 2016-07-19 +## Added +### - Commands +- benchmark: Tests speed for checksum algorithms. +- create-sidecar: Creates an XML sidecar with metadata. +- decode: Decodes and prints a disk tag present on the image. +- device-info: Prints device information. +- dump-media: Dumps media to a disk image. +- entropy: Calculates disk entropy. +- media-info: Prints media information. +- scan-media: Scans media for errors. + +### - Checksums +- Adler-32 +- SpamSum + +### - Devices +- ATA on Linux. +- ATA on Windows (untested). +- FireWire on Linux. +- SCSI on Linux. +- SCSI on Windows (untested). +- USB on Linux. + +### - Disc images +- Apple 2IMG. +- CDRDAO. +- Dreamcast GDI. +- VirtualPC. + +### - Fast File System (FFS) +- Atari UNIX variant. + +### - Filesystems +- Acorn ADFS. +- AmigaDOS. +- Apple File System, aka APFS. +- Apple ProDOS. +- btrfs. +- Nintendo Gamecube. +- Nintendo Wii. + +### - Partitions +- Amiga Rigid Disk Block (aka RDB). +- Atari. +- Sun. +- (U)EFI GPT. + +## Changes +### - PrintHex command +- Allow to print several sectors. + +## Fixes +### - Be filesystem +- Endianness. +- Support for Be CDs. + +### - CDRWin disk image +- Behaviour on .NET Framework. +- Detection of CD-ROM XA. +- Flags. +- Partition calculations. + +### - Fast File System (FFS) +- False positives with 7th Edition. + +### - ISO9660 +- Dreamcast IP.BIN decoding. +- Sega CD IP.BIN decoding. + +### - System V Filesystem +- Big endian support + +# [2.20] - 2014-08-28 +## Added +### - Checksums +- Reed Solomon. + +## Fixes +### - Apple Partition Map +- Disks with 2048 bytes/sector but a 512 bytes/sector map. + +### - HFS +- Disks with 2048 bytes/sector but a 512 bytes/sector filesystem. + +# [2.10] - 2014-08-25 +## Added +### - Checksums +- CD EDC and ECC. +- CRC16. + +### - Commands +- Verify: Verifies disk image contents, if supported. + +### - Disc images +- Nero Burning ROM. + +# [2.0] - 2014-07-03 +## Added +### - Commands +- analyze: Gives informatio about disk image contents as well as detecting partitions and filesystems. +- checksum: Generates CRC32, CRC64, RIPEMD160, MD5, SHA1, SHA256, SHA384 and SHA512 checksums of disk image contents. +- compare: Compares two media images. +- printhex: Prints a hexadecimal output of a sector. + +### - Disc images +- RAW (sector by sector). + +### - Media types +- BD-R. +- BD-RE XL. +- FDFORMAT. + +## Fixes +### - FAT filesystem +- Workaround FAT12 without BIOS Parameter Block. + +### - MBR partitions +- Do not search for them on disks with less than 512 bytes/sector. + +### - ODS-11 filesystem +- Do not search for them on disks with less than 512 bytes/sector. + +# [1.10] - 2014-04-21 +## Added +### - Disc images +- Sydex TeleDisk. + +# [1.0] - 2014-04-17 +## Added +### - Filesystems +- Detecting BeFS. +- Detecting ext. +- Detecting ext2. +- Detecting ext3. +- Detecting ext4. +- Detecting FAT12. +- Detecting FAT16. +- Detecting FAT32. +- Detecting FFS. +- Detecting HFS+. +- Detecting HFS. +- Detecting HPFS. +- Detecting ISO9660. +- Detecting LisaFS. +- Detecting MFS. +- Detecting MinixFS. +- Detecting NTFS. +- Detecting ODS-11. +- Detecting Opera. +- Detecting PCEngine. +- Detecting SolarFS. +- Detecting System V. +- Detecting UFS. +- Detecting UFS2. +- Detecting UnixWare boot. + +### - Disc images +- Apple DiskCopy 4.2. +- CDRWin. + +### - Partitions +- Apple Partition Map (aka APM). +- Master Boot Record (aka MBR). +- NeXT disklabels. + +[4.5.1.1692]: https://github.com/claunia/DiscImageChef/releases/tag/v4.5.1.1692 +[4.5.0.1663]: https://github.com/claunia/DiscImageChef/releases/tag/v4.5.0.1663 +[4.0.1.0]: https://github.com/claunia/DiscImageChef/releases/tag/v4.0.1.0 +[4.0.0.0]: https://github.com/claunia/DiscImageChef/releases/tag/v4.0.0.0 +[3.0.0.0]: https://github.com/claunia/DiscImageChef/releases/tag/v3.0.0.0 +[2.20]: https://github.com/claunia/DiscImageChef/releases/tag/v2.2 +[2.10]: https://github.com/claunia/DiscImageChef/releases/tag/v2.1 +[2.0]: https://github.com/claunia/DiscImageChef/releases/tag/v2.0 diff --git a/DiscImageChef.Server/docs/DONATING.md b/DiscImageChef.Server/docs/DONATING.md new file mode 100644 index 000000000..0349792f6 --- /dev/null +++ b/DiscImageChef.Server/docs/DONATING.md @@ -0,0 +1,174 @@ +Hardware donations +================== + +This is a list of hardware that I'm searching but is too rare or too expensive for me to get them. +The reason I want this hardware is because having it is the only way to add enhanced support for them (e.g. media detection, ECC support, raw dumping, etc.). +After adding enhanced support all drives will be given to the Canary Islands Computer Museum. + +- 3.5" magneto-optical media: 540MiB, 1.3GiB +- 5.25" magneto-optical drive and media +- 8" shugart drive +- ADR drive and tapes +- AIT drive and tapes +- Apple twiggy and media +- Caleb UHD144 drive +- Castlewood Orb 2.2 and 5.7 +- DLT drive and tapes +- DiscFerret +- HD-DVD media +- Host-aware and host-controller SAS and SATA zoned hard disks +- Insite floptical drive +- Iomega Bernoulli +- Iomega Ditto drive and tapes +- Iomega JAZ and JAZ 2 +- Iomega REV +- Iomega ZIP750 drive +- LD-ROM drive and media +- LTO drive and tapes +- LV-ROM drive and media +- Mammoth drive and tapes +- Panasonic Blu-ray recorder +- Plasmon UDO and UDO2 drives and media +- SCSI floppy drive (e.g. Teac FD235JS806-U) +- SLR drive and tapes +- Sony Hi-MD and media +- Sony HiFD +- Sony MD-DATA and media +- Sony Professional Disc for DATA +- Stringy floppy +- Syquest EZ135 drive and media +- Syquest EZFlyer drive and media +- Syquest Quest drive and media +- Syquest SQ2542 drive and media +- Syquest SQ306RD drive and SQ100 media +- Syquest SQ3105 drive and SQ310 media +- Syquest SQ312RD drive and SQ200 media +- Syquest SQ319RD drive and SQ300 media +- Syquest SQ3270 drive and SQ327 media +- Syquest SQ5110 drive and SQ800 media +- Syquest SQ5200C drive and SQ2000 media +- Syquest SQ555 drive and SQ400 media +- Syquest SparQ drive and media +- Syquest SyJet drive and media +- T9840, T9940, T10000 drive and tapes +- Travan drive and tapes +- Triton drive and media +- VXA drive and tapes + + +Software donations +================== +This is a list of software whose physical media has some characteristics that needs +to be investigated to allow correct dumping of such characteristics. Usually those +are copy protections. + +- CD-V +- CD-i Ready + - A Christmas Songbook + - Accelerator + - Alien Gate + - Beyond Limits + - Escape + - Lucky Luke + - Louis Armstrong + - Dark Fables of Aesop + - More Dark Fables of Aesop + - Mozart + - Opera Imaginaire + - Pavarotti + - Steel Machine + - The Apprentice + - Dimo's Quest + - The Worlds of... +- SafeDisc + - Age of Wonders II: The Wizard's Throne + - Beowulf + - Black & White 2 + - Brothers in Arms: Road to Hill 30 + - Call of Duty: World at War + - Carmageddon II: Carpocalypse Now + - Close Combat: Invasion Normandy + - Codename: Eagle + - Command & Conquer: Generals + - FIFA Football 2002 + - Football Manager 2007 +- SecuROM + - Arabian Nights + - Arcania: Gothic 4 + - Boiling Point: Road to Hell + - Caesar IV + - Cars 2 + - Clive Barker's Jericho + - Colin McRae Rally 04 + - Colin McRae Rally 2.0 + - Colin McRae Rally 3 + - Command & Conquer: Red Alert 3 - Uprising + - Commandos: Strike Force + - Devil May Cry 4 + - Die Hard: Nakatomi Plaza + - Disney Planes + - Divinity II: Developer's Cut +- StarForce + - Anno 1701 + - Black Mirror 3 + - BloodRayne 2 + - Chronostorm: Siberian Border + - Codename: Outbreak + - Dead to Rights + - Disciples III: Renaissance + - Game of Thrones + - Gothic 3 + - Gothic 3: Forsaken Gods + - Mass Effect + - Mount & Blade + - Pac-Man World 2 +- Tages + - Act of War: High Treason + - Anno 1701 + - Beyond Good & Evil + - Codename: Panzers - Cold War + - Darkstar One + - Desperados 2: Cooper's Revenge + - Driver: Parallel Lines + - Faery: Legends of Avalon + - Fahrenheit + - Fantasy Wars + - Glory of the Roman Empire + - Gothic 3 + - Hard to Be a God + - Helldorado + - Moto Racer 3 + - Nail'd + - Nostradamus: The Last Prophecy + - Rag Doll Kung Fu + - Rayman Origins + - RoboCop (2003) + - Runaway 2: The Dream of the Turtle + - S.T.A.L.K.E.R.: Shadow of Chernobyl + - Secret Files: Tunguska + - Silverfall + - SpellForce 2: Shadow Wars + - Still Life 2 + - The Chronicles of Riddick: Assault on Dark Athena + - War Front: Turning Point + - XIII +- Solidshield + - A-Train 8 + - Anno 2070 + - Assassin's Creed: Brotherhood + - Crysis 2 + - Dead Mountaineer's Hotel + - Dead Space 2 + - Hard to Be a God + - Helldorado + - I Am Alive + - Jack Keane + - James Cameron's Avatar: The Game + - Medal of Honor: Airborne + - Need for Speed: Hot Pursuit + - ObsCure II + - Risen + - Shift 2 Unleashed + - Still Life 2 + - Warfare + - X3: Terran Conflict \ No newline at end of file diff --git a/DiscImageChef.Server/docs/README.md b/DiscImageChef.Server/docs/README.md new file mode 100644 index 000000000..fcbb9d598 --- /dev/null +++ b/DiscImageChef.Server/docs/README.md @@ -0,0 +1,254 @@ +DiscImageChef v4.5.99.1693 + +Disc Image Chef (because "swiss-army-knife" is used too much) + +Copyright © 2011-2018 Natalia Portillo + +[![Build status](https://dev.azure.com/DiscImageChef/DiscImageChef/_apis/build/status/DiscImageChef-.NET%20Desktop-CI)](https://dev.azure.com/DiscImageChef/DiscImageChef/_build/latest?definitionId=4) +[![Build Status](https://travis-ci.org/claunia/DiscImageChef.svg?branch=master)](https://travis-ci.org/claunia/DiscImageChef) +[![Build status](https://ci.appveyor.com/api/projects/status/vim4c8h028pn5oys?svg=true)](https://ci.appveyor.com/project/claunia/discimagechef) +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef?ref=badge_shield) + +You can see statistics and device reports [here](http://discimagechef.claunia.com/Statistics.aspx) + +DiscImageChef is a fully featured media dump management solution. You usually know media dumps +as disc images, disk images, tape images, etc. + +With DiscImageChef you can analyze a media dump, extract files from it (for supported +filesystems), compare two of them, create them from real media using the appropriate drive, +create a sidecar metadata with information about the media dump, and a lot of other features +that commonly would require you to use separate applications. + +To see last changes, check the [changelog](Changelog.md). +To see list of pending things to do, check the [TODO list](TODO.md). + +If you want to contribute in any way please read the [contributing guide](CONTRIBUTING.md). + +System requirements +=================== +DiscImageChef should work under any operating system where there is [Mono](http://www.mono-project.com/) +or [.NET Framework](https://www.microsoft.com/net/download). +It has been tested using Mono 5.0 and .NET Framework 4.6.1. However recommended versions are +Mono 5.8 and .NET Framework 4.7.1. .NET Core is unsupported. + +Usage +===== + +DiscImageChef.exe + +And read help. + +Or read the [wiki](https://github.com/claunia/DiscImageChef/wiki). + +Features +======== +* Analyzes a disk image getting information about the disk itself and analyzes partitions and filesystems inside them +* Can checksum the disks (and if optical disc, separate tracks) user-data (tags and metadata coming soon) +* Can compare two disk images, even different formats, for different sectors and/or metadata +* Can list and extract contents from filesystems that support that +* Can read several disk image formats. +* Can read several known sector by sector formats with variable bytes per sector. +* Can read standard sector by sector copies for optical and magnetic discs with constant bytes per sector. +* Can verify sectors or disk images if supported by the underlying format + +Supported disk image formats (read-only) +======================================== +* Apple Disk Archival/Retrieval Tool (DART) +* Apple II nibble images (NIB) +* BlindWrite 4 TOC files (.BWT/.BWI/.BWS) +* BlindWrite 5/6 TOC files (.B5T/.B5I and .B6T/.B6I) +* CopyQM +* CPCEMU Disk file and Extended Disk File +* Dave Dunfield IMD +* DiscJuggler images +* Dreamcast GDI +* HD-Copy disk images +* MAME Compressed Hunks of Data (CHD) +* Microsoft VHDX +* Nero Burning ROM (both image formats) +* Partclone disk images +* Partimage disk images +* Quasi88 disk images (.D77/.D88) +* Spectrum floppy disk image (.FDI) +* TeleDisk +* X68k DIM disk image files (.DIM) + +Supported disk image formats (read and write) +============================================= +* Alcohol 120% Media Descriptor Structure (.MDS/.MDF) +* Anex86 disk images (.FDI for floppies, .HDI for hard disks) +* Any 512 bytes/sector disk image format (sector by sector copy, aka raw) +* Apple 2IMG (used with Apple // emulators) +* Apple DiskCopy 4.2 +* Apple ][ Interleaved Disk Image +* Apple Universal Disk Image Format (UDIF), including obsolete (previous than DiskCopy 6) versions +* Apridisk disk image formats (for ACT Apricot disks) +* Basic Lisa Utility +* CDRDAO TOC sheets +* CDRWin cue/bin cuesheets, including ones with ISOBuster extensions +* CisCopy disk image (aka DC-File, .DCF) +* CloneCD +* DataPackRat's d2f/f2d disk image format ("WC DISK IMAGE") +* Digital Research DiskCopy +* DiscImageChef format +* IBM SaveDskF +* MAXI Disk disk images (HDK) +* Most known sector by sector copies of floppies with 128, 256, 319 and 1024 bytes/sector. +* Most known sector by sector copies with different bytes/sector on track 0. +* Parallels Hard Disk Image (HDD) version 2 +* QEMU Copy-On-Write versions 1, 2 and 3 (QCOW and QCOW2) +* QEMU Enhanced Disk (QED) +* Ray Arachelian's Disk IMage (.DIM) +* RS-IDE hard disk images +* Sector by sector copies of Microsoft's DMF floppies +* T98 hard disk images (.THD) +* T98-Next hard disk images (.NHD) +* Virtual98 disk images +* VirtualBox Disk Image (VDI) +* Virtual PC fixed size, dynamic size and differencing (undo) disk images +* VMware VMDK and COWD images +* XDF disk images (as created by IBM's XDFCOPY) + +Supported partitioning schemes +============================== +* Acorn Linux and RISCiX partitions +* ACT Apricot partitions +* Amiga Rigid Disk Block (RDB) +* Apple Partition Map +* Atari AHDI and ICDPro +* BSD disklabels +* BSD slices inside MBR +* DEC disklabels +* DragonFly BSD 64-bit disklabel +* EFI GUID Partition Table (GPT) +* Human68k (Sharp X68000) partitions table +* Microsoft/IBM/Intel Master Boot Record (MBR) +* Minix subpartitions inside MBR +* NEC PC9800 partitions +* NeXT disklabel +* Plan9 partition table +* Rio Karma partitions +* SGI volume headers +* Solaris slices inside MBR +* Sun disklabel +* UNIX VTOC and disklabel +* UNIX VTOC inside MBR +* Xbox 360 hard coded partitions +* XENIX partition table + +Supported file systems for read-only operations +=============================================== +* Apple DOS file system +* Apple Lisa file system +* Apple Macintosh File System (MFS) +* CP/M file system +* U.C.S.D Pascal file system + +Supported file systems for identification and information only +============================================================== +* 3DO Opera file system +* Acorn Advanced Disc Filing System +* Alexander Osipov DOS (AO-DOS for Electronika BK-0011) file system +* Amiga Fast File System v2, untested +* Amiga Fast File System, with international characters, directory cache and multi-user patches +* Amiga Original File System, with international characters, directory cache and multi-user patches +* Apple File System (preliminary detection until on-disk layout is stable) +* Apple Hierarchical File System (HFS) +* Apple Hierarchical File System+ (HFS+) +* Apple ProDOS / SOS file system +* AtheOS file system +* BeOS filesystem +* BSD Fast File System (FFS) / Unix File System (UFS) +* BSD Unix File System 2 (UFS2) +* B-tree file system (btrfs) +* CD-i file system +* Coherent UNIX file system +* Commodore 1540/1541/1571/1581 filesystems +* Cram file system +* DEC Files-11 (only checked with On Disk Structure 2, ODS-2) +* DEC RT-11 file system +* dump(8) (Old historic BSD, AIX, UFS and UFS2 types) +* ECMA-67: 130mm Flexible Disk Cartridge Labelling and File Structure for Information Interchange +* Flash-Friendly File System (F2FS) +* Fossil file system (from Plan9) +* HAMMER file system +* High Performance Optical File System (HPOFS) +* High Sierra Format +* HP Logical Interchange Format +* IBM Journaling File System (JFS) +* ISO9660 +* Linux extended file system +* Linux extended file system 2 +* Linux extended file system 3 +* Linux extended file system 4 +* Locus file system +* MicroDOS file system +* Microsoft 12-bit File Allocation Table (FAT12), including Atari ST extensions +* Microsoft 16-bit File Allocation Table (FAT16) +* Microsoft 32-bit File Allocation Table (FAT32), including FAT+ extension +* Microsoft Extended File Allocation Table (exFAT) +* Microsoft/IBM High Performance File System (HPFS) +* Microsoft New Technology File System (NTFS) +* Microsoft Resilient File System (ReFS) +* Minix v2 file system +* Minix v3 file system +* NEC PC-Engine executable +* NEC PC-FX executable +* NILFS2 +* Nintendo optical filesystems (GameCube and Wii) +* OS-9 Random Block File +* Professional File System +* QNX4 and QNX6 filesystems +* Reiser file systems +* SGI Extent File System (EFS) +* SGI XFS +* SmartFileSystem +* SolarOS file system +* Squash file system +* UNICOS file system +* Universal Disk Format (UDF) +* UNIX System V file system +* UNIX Version 7 file system +* UnixWare boot file system +* Veritas file system +* VMware file system (VMFS) +* Xbox filesystems +* Xenix file system +* Xia filesystem +* Zettabyte File System (ZFS) + +Supported checksums +=================== +* Adler-32 +* CRC-16 +* CRC-32 +* CRC-64 +* Fletcher-16 +* Fletcher-32 +* MD5 +* RMD160 +* SHA-1 +* SHA-2 (256, 384 and 512 bits) +* SpamSum (fuzzy hashing) + +Supported filters +================= +* Apple PCExchange (FINDER.DAT & RESOURCE.FRK) +* AppleDouble +* AppleSingle +* BZip2 +* GZip +* LZip +* MacBinary I, II, III +* XZ + +Partially supported disk image formats +====================================== +These disk image formats cannot be read, but their contents can be checksummed on sidecar creation +* DiscFerret +* KryoFlux STREAM +* SuperCardPro + + +## License +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fclaunia%2FDiscImageChef?ref=badge_large) \ No newline at end of file diff --git a/DiscImageChef.Server/docs/TODO.md b/DiscImageChef.Server/docs/TODO.md new file mode 100644 index 000000000..1a4f4fb34 --- /dev/null +++ b/DiscImageChef.Server/docs/TODO.md @@ -0,0 +1,83 @@ +* Add checksum support for Apple NIB images. (https://github.com/claunia/DiscImageChef/issues/105) +* Add checksum support for NDIF images. (https://github.com/claunia/DiscImageChef/issues/88) +* Add checksum support for partclone images. (https://github.com/claunia/DiscImageChef/issues/89) +* Add checksum support for partimage images. (https://github.com/claunia/DiscImageChef/issues/90) +* Add detection of bootable UDF filesystems. (https://github.com/claunia/DiscImageChef/issues/91) +* Add filter for 7-Zip archives. (https://github.com/claunia/DiscImageChef/issues/92) +* Add filter for ZIP archives. (https://github.com/claunia/DiscImageChef/issues/93) +* Add flux decoding for DiscFerret images. (https://github.com/claunia/DiscImageChef/issues/49) +* Add flux decoding for KryoFlux images. (https://github.com/claunia/DiscImageChef/issues/50) +* Add flux decoding for SuperCardPro images. (https://github.com/claunia/DiscImageChef/issues/99) +* Add interface for floppy bitstream decoding. (https://github.com/claunia/DiscImageChef/issues/94) +* Add raw dump for Plextor recorders. (https://github.com/claunia/DiscImageChef/issues/100) +* Add support for 82077 floppy controllers. (https://github.com/claunia/DiscImageChef/issues/101) +* Add support for AIX partitioning scheme. (https://github.com/claunia/DiscImageChef/issues/7) +* Add support for CD-Text in Nero images. (https://github.com/claunia/DiscImageChef/issues/104) +* Add support for compressed Ciscopy images. (https://github.com/claunia/DiscImageChef/issues/127) +* Add support for compressed DART images. (https://github.com/claunia/DiscImageChef/issues/68) +* Add support for compressed MAME CHD version 5 images. (https://github.com/claunia/DiscImageChef/issues/106) +* Add support for compressed MAME CompactDisc images. (https://github.com/claunia/DiscImageChef/issues/107) +* Add support for compressed NDIF images. (https://github.com/claunia/DiscImageChef/issues/68) +* Add support for compressed SaveDskF images. (https://github.com/claunia/DiscImageChef/issues/108) +* Add support for compressed UDIF images. (https://github.com/claunia/DiscImageChef/issues/70) +* Add support for compressed VMware images. (https://github.com/claunia/DiscImageChef/issues/109) +* Add support for CSS encrypted DVD dumping. (https://github.com/claunia/DiscImageChef/issues/110) +* Add support for decoding Apple GCR bitstreams. (https://github.com/claunia/DiscImageChef/issues/95) +* Add support for decoding Commodore GCR bitstreams. (https://github.com/claunia/DiscImageChef/issues/96) +* Add support for decoding FM bitstreams. (https://github.com/claunia/DiscImageChef/issues/97) +* Add support for decoding MFM bitstreams. (https://github.com/claunia/DiscImageChef/issues/98) +* Add support for detecting FireWire devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/111) +* Add support for detecting FireWire devices in Windows. (https://github.com/claunia/DiscImageChef/issues/125) +* Add support for detecting USB devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/112) +* Add support for differencing QCOW2 images. (https://github.com/claunia/DiscImageChef/issues/142) +* Add support for differencing QCOW images. (https://github.com/claunia/DiscImageChef/issues/143) +* Add support for differencing QED images. (https://github.com/claunia/DiscImageChef/issues/144) +* Add support for DiscFerret devices. (https://github.com/claunia/DiscImageChef/issues/140) +* Add support for dumping CD Lead-In in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/113) +* Add support for encrypted NDIF images. (https://github.com/claunia/DiscImageChef/issues/149) +* Add support for encrypted QCOW2 images. (https://github.com/claunia/DiscImageChef/issues/145) +* Add support for encrypted QCOW images. (https://github.com/claunia/DiscImageChef/issues/146) +* Add support for encrypted VMware images. (https://github.com/claunia/DiscImageChef/issues/147) +* Add support for KryoFlux devices. (https://github.com/claunia/DiscImageChef/issues/141) +* Add support for Linear Media PCMCIA devices. (https://github.com/claunia/DiscImageChef/issues/148) +* Add support for MAME CHD images of PCMCIA devices. (https://github.com/claunia/DiscImageChef/issues/150) +* Add support for NetApp WAFL filesystem. (https://github.com/claunia/DiscImageChef/issues/61) +* Add support for NetWare 286 filesystem. (https://github.com/claunia/DiscImageChef/issues/117) +* Add support for NetWare 386 filesystem. (https://github.com/claunia/DiscImageChef/issues/118) +* Add support for Novell Storage Services filesystem. (https://github.com/claunia/DiscImageChef/issues/119) +* Add support for NVMe devices. (https://github.com/claunia/DiscImageChef/issues/151) +* Add support for OCFS2 filesystem. (https://github.com/claunia/DiscImageChef/issues/153) +* Add support for packed subchannel in BlindWrite 4 images. (https://github.com/claunia/DiscImageChef/issues/154) +* Add support for packed subchannel in BlindWrite 5 images. (https://github.com/claunia/DiscImageChef/issues/155) +* Add support for Parallel ATA devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/114) +* Add support for PCMCIA devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/115) +* Add support for PCMCIA devices in Windows. (https://github.com/claunia/DiscImageChef/issues/126) +* Add support for reading resource fork in macOS. (https://github.com/claunia/DiscImageChef/issues/156) +* Add support for reading resource fork in Windows. (https://github.com/claunia/DiscImageChef/issues/157) +* Add support for SecureDigital and MultiMediaCard devices in FreeBSD. (https://github.com/claunia/DiscImageChef/issues/116) +* Add support for SuperCardPro devices. (https://github.com/claunia/DiscImageChef/issues/139) +* Add support for XPACK images. (https://github.com/claunia/DiscImageChef/issues/45) +* Checksum disk tags +* Checksum long sectors +* Checksum sector tags +* Compare sector tags +* Finish support for reading sectors of variable bytes/sector images +* Graphical User Interface +* Handle UDIF image comments. (https://github.com/claunia/DiscImageChef/issues/137) +* Implement Apple KenCode compression algorithm. (https://github.com/claunia/DiscImageChef/issues/122) +* Implement Apple LZFSE compression algorithm. (https://github.com/claunia/DiscImageChef/issues/124) +* Implement Apple LZH compression algorithm. (https://github.com/claunia/DiscImageChef/issues/121) +* Implement COLUMBIA ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/133) +* Implement CYLINDERS ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/132) +* Implement dumping GameCube discs. (https://github.com/claunia/DiscImageChef/issues/135) +* Implement dumping Wii discs. (https://github.com/claunia/DiscImageChef/issues/136) +* Implement EAGLE ordering in CP/M filesystem. (https://github.com/claunia/DiscImageChef/issues/131) +* Implement ODS checksum. (https://github.com/claunia/DiscImageChef/issues/130) +* Implement StuffIt compression algorithm. (https://github.com/claunia/DiscImageChef/issues/123) +* Offer the option to see differing values +* Optimize and multithread image comparison +* Optimize current checksum multithreading +* Support AAP extensions in MBR. (https://github.com/claunia/DiscImageChef/issues/159) +* Support IBM boot manager in MBR. (https://github.com/claunia/DiscImageChef/issues/128) +* Support MMC feature codes FF33h +* Support SCSI mode pages 18h, 1Dh, 20h, 31h, 32h \ No newline at end of file diff --git a/DiscImageChef.Server/packages.config b/DiscImageChef.Server/packages.config index 66304c880..a18b7f6ae 100644 --- a/DiscImageChef.Server/packages.config +++ b/DiscImageChef.Server/packages.config @@ -3,6 +3,7 @@ + @@ -20,6 +21,5 @@ - \ No newline at end of file diff --git a/DiscImageChef.sln.DotSettings b/DiscImageChef.sln.DotSettings index 5dfe170be..8240f94d8 100644 --- a/DiscImageChef.sln.DotSettings +++ b/DiscImageChef.sln.DotSettings @@ -1,4 +1,5 @@  + False <?xml version="1.0" encoding="utf-16"?> <Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns"> <TypePattern DisplayName="Non-reorderable types"> @@ -178,5 +179,6 @@ </Patterns> True True + True True True \ No newline at end of file