Example #1
0
 /// <summary>
 ///     Loads saved statistics from disk
 /// </summary>
 public static void LoadStats()
 {
     if (File.Exists(Path.Combine(Settings.Settings.StatsPath, "Statistics.xml")))
     {
         AllStats     = new Stats();
         CurrentStats = new Stats
         {
             OperatingSystems =
                 new List <OsStats>
             {
                 new OsStats
                 {
                     name    = DetectOS.GetRealPlatformID().ToString(),
                     Value   = 1,
                     version = DetectOS.GetVersion()
                 }
             },
             Versions = new List <NameValueStats> {
                 new NameValueStats {
                     name = Version.GetVersion(), Value = 1
                 }
             }
         };
         XmlSerializer xs = new XmlSerializer(AllStats.GetType());
         StreamReader  sr = new StreamReader(Path.Combine(Settings.Settings.StatsPath, "Statistics.xml"));
         AllStats = (Stats)xs.Deserialize(sr);
         sr.Close();
     }
     else if (Settings.Settings.Current.Stats != null)
     {
         AllStats     = new Stats();
         CurrentStats = new Stats
         {
             OperatingSystems =
                 new List <OsStats>
             {
                 new OsStats
                 {
                     name    = DetectOS.GetRealPlatformID().ToString(),
                     Value   = 1,
                     version = DetectOS.GetVersion()
                 }
             },
             Versions = new List <NameValueStats> {
                 new NameValueStats {
                     name = Version.GetVersion(), Value = 1
                 }
             }
         };
     }
     else
     {
         AllStats     = null;
         CurrentStats = null;
     }
 }
Example #2
0
        public static void Main(string[] args)
        {
            Console.Clear();

            Console.Write(
                "\u001b[32m                             .                ,,\n" +
                "\u001b[32m                          ;,.                  '0d.\n" +
                "\u001b[32m                        oc                       oWd                      \u001b[31m" +
                @"________/\\\\\\\\\___/\\\\\\\\\\\_________/\\\\\\\\\___/\\\\____________/\\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                      ;X.                         'WN'                    \u001b[31m" +
                @" _____/\\\////////___\/////\\\///_______/\\\////////___\/\\\\\\________/\\\\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                     oMo                           cMM:                   \u001b[31m" +
                @"  ___/\\\/________________\/\\\________/\\\/____________\/\\\//\\\____/\\\//\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                    ;MM.                           .MMM;                  \u001b[31m" +
                @"   __/\\\__________________\/\\\_______/\\\______________\/\\\\///\\\/\\\/_\/\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                    NMM                             WMMW                  \u001b[31m" +
                @"    _\/\\\__________________\/\\\______\/\\\______________\/\\\__\///\\\/___\/\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                   'MMM                             MMMM;                 \u001b[31m" +
                @"     _\//\\\_________________\/\\\______\//\\\_____________\/\\\____\///_____\/\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                   ,MMM:                           dMMMM:                 \u001b[31m" +
                @"      __\///\\\_______________\/\\\_______\///\\\___________\/\\\_____________\/\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                   .MMMW.                         :MMMMM.                 \u001b[31m" +
                @"       ____\////\\\\\\\\\___/\\\\\\\\\\\_____\////\\\\\\\\\__\/\\\_____________\/\\\_" +
                "\n\u001b[0m" +
                "\u001b[32m                    XMMMW:    .:xKNMMMMMMN0d,    lMMMMMd                  \u001b[31m" +
                @"        _______\/////////___\///////////_________\/////////___\///______________\///__" +
                "\n\u001b[0m" +
                "\u001b[32m                    :MMMMMK; cWMNkl:;;;:lxKMXc .0MMMMMO                   \u001b[37;1m          MARECHAI\u001b[0m\n" +
                "\u001b[32m                   ..KMMMMMMNo,.             ,OMMMMMMW:,.                 \u001b[37;1m          Master repository of computing history artifacts information\u001b[0m\n" +
                "\u001b[32m            .;d0NMMMMMMMMMMMMMMW0d:'    .;lOWMMMMMMMMMMMMMXkl.            \u001b[37;1m          Version \u001b[0m\u001b[33m{0}\u001b[37;1m-\u001b[0m\u001b[31m{1}\u001b[0m\n" +
                "\u001b[32m          :KMMMMMMMMMMMMMMMMMMMMMMMMc  WMMMMMMMMMMMMMMMMMMMMMMWk'\u001b[0m\n" +
                "\u001b[32m        ;NMMMMWX0kkkkO0XMMMMMMMMMMM0'  dNMMMMMMMMMMW0xl:;,;:oOWMMX;       \u001b[37;1m          Running under \u001b[35;1m{2}\u001b[37;1m, \u001b[35m{3}-bit\u001b[37;1m in \u001b[35m{4}-bit\u001b[37;1m mode.\u001b[0m\n" +
                "\u001b[32m       xMMWk:.           .c0MMMMMW'      OMMMMMM0c'..          .oNMO      \u001b[37;1m          Using \u001b[33;1m{5}\u001b[37;1m version \u001b[31;1m{6}\u001b[0m\n" +
                "\u001b[32m      OMNc            .MNc   oWMMk       'WMMNl. .MMK             ;KX.\u001b[0m\n" +
                "\u001b[32m     xMO               WMN     ;  .,    ,  ':    ,MMx               lK\u001b[0m\n" +
                "\u001b[32m    ,Md                cMMl     .XMMMWWMMMO      XMW.                :\u001b[0m\n" +
                "\u001b[32m    Ok                  xMMl     XMMMMMMMMc     0MW,\u001b[0m\n" +
                "\u001b[32m    0                    oMM0'   lMMMMMMMM.   :NMN'\u001b[0m\n" +
                "\u001b[32m    .                     .0MMKl ;MMMMMMMM  oNMWd\u001b[0m\n" +
                "\u001b[32m                            .dNW cMMMMMMMM, XKl\u001b[0m\n" +
                "\u001b[32m                                 0MMMMMMMMK\u001b[0m\n" +
                "\u001b[32m                                ;MMMMMMMMMMO                              \u001b[37;1m          Proudly presented to you by:\u001b[0m\n" +
                "\u001b[32m                               'WMMMMKxMMMMM0                             \u001b[34;1m          Natalia Portillo\u001b[0m\n" +
                "\u001b[32m                              oMMMMNc  :WMMMMN:\u001b[0m\n" +
                "\u001b[32m                           .dWMMM0;      dWMMMMXl.                        \u001b[37;1m          Thanks to all contributors, collaborators, translators, donators and friends.\u001b[0m\n" +
                "\u001b[32m               .......,cd0WMMNk:           c0MMMMMWKkolc:clodc'\u001b[0m\n" +
                "\u001b[32m                 .';loddol:'.                 ':oxkkOkkxoc,.\u001b[0m\n" +
                "\u001b[0m\n", Version.GetVersion(),
                      #if DEBUG
                "DEBUG"
                      #else
                "RELEASE"
                      #endif
                , DetectOS.GetPlatformName(DetectOS.GetRealPlatformID()),
                Environment.Is64BitOperatingSystem ? 64 : 32, Environment.Is64BitProcess ? 64 : 32,
                DetectOS.IsMono ? "Mono" : ".NET Core",
                DetectOS.IsMono ? Version.GetMonoVersion() : Version.GetNetCoreVersion());

            Console.WriteLine("\u001b[31;1mUpdating MySQL database without Entity Framework if it exists...\u001b[0m");
            Database = new Mysql();

            IConfigurationBuilder builder       = new ConfigurationBuilder().AddJsonFile("appsettings.json");
            IConfigurationRoot    configuration = builder.Build();
            string connectionString             = configuration.GetConnectionString("DefaultConnection");

            if (connectionString is null)
            {
                Console.WriteLine("\u001b[31;1mCould not find a correct connection string...\u001b[0m");
            }
            else
            {
                string   server = null, user = null, database = null, password = null;
                ushort   port   = 0;
                string[] pieces = connectionString.Split(";");

                foreach (string piece in pieces)
                {
                    if (piece.StartsWith("server=", StringComparison.Ordinal))
                    {
                        server = piece.Substring(7);
                    }
                    else if (piece.StartsWith("user="******"password="******"database=", StringComparison.Ordinal))
                    {
                        database = piece.Substring(9);
                    }
                    else if (piece.StartsWith("port=", StringComparison.Ordinal))
                    {
                        string portString = piece.Substring(5);

                        ushort.TryParse(portString, out port);
                    }
                }

                if (server is null ||
                    user is null ||
                    database is null ||
                    password is null ||
                    port == 0)
                {
                    Console.WriteLine("\u001b[31;1mCould not find a correct connection string...\u001b[0m");
                }
Example #3
0
        /// <summary>
        ///     Initializes the dump log
        /// </summary>
        /// <param name="outputFile">Output log file</param>
        /// <param name="dev">Device</param>
        public DumpLog(string outputFile, Device dev)
        {
            if (string.IsNullOrEmpty(outputFile))
            {
                return;
            }

            logSw = new StreamWriter(outputFile, true);

            logSw.WriteLine("Start logging at {0}", DateTime.Now);

            PlatformID platId  = DetectOS.GetRealPlatformID();
            string     platVer = DetectOS.GetVersion();
            AssemblyInformationalVersionAttribute assemblyVersion =
                Attribute.GetCustomAttribute(typeof(DumpLog).Assembly, typeof(AssemblyInformationalVersionAttribute)) as
                AssemblyInformationalVersionAttribute;

            logSw.WriteLine("################# System information #################");
            logSw.WriteLine("{0} {1} ({2}-bit)", DetectOS.GetPlatformName(platId, platVer), platVer,
                            Environment.Is64BitOperatingSystem ? 64 : 32);
            if (DetectOS.IsMono)
            {
                logSw.WriteLine("Mono {0}", Version.GetMonoVersion());
            }
            else
            {
                logSw.WriteLine(".NET Framework {0}", Environment.Version);
            }

            logSw.WriteLine();

            logSw.WriteLine("################# Program information ################");
            logSw.WriteLine("DiscImageChef {0}", assemblyVersion?.InformationalVersion);
            logSw.WriteLine("Running in {0}-bit", Environment.Is64BitProcess ? 64 : 32);
            #if DEBUG
            logSw.WriteLine("DEBUG version");
            #endif
            logSw.WriteLine("Command line: {0}", Environment.CommandLine);
            logSw.WriteLine();

            logSw.WriteLine("################# Device information #################");
            logSw.WriteLine("Manufacturer: {0}", dev.Manufacturer);
            logSw.WriteLine("Model: {0}", dev.Model);
            logSw.WriteLine("Firmware revision: {0}", dev.Revision);
            logSw.WriteLine("Serial number: {0}", dev.Serial);
            logSw.WriteLine("Removable device: {0}", dev.IsRemovable);
            logSw.WriteLine("Device type: {0}", dev.Type);
            logSw.WriteLine("CompactFlash device: {0}", dev.IsCompactFlash);
            logSw.WriteLine("PCMCIA device: {0}", dev.IsPcmcia);
            logSw.WriteLine("USB device: {0}", dev.IsUsb);
            if (dev.IsUsb)
            {
                logSw.WriteLine("USB manufacturer: {0}", dev.UsbManufacturerString);
                logSw.WriteLine("USB product: {0}", dev.UsbProductString);
                logSw.WriteLine("USB serial: {0}", dev.UsbSerialString);
                logSw.WriteLine("USB vendor ID: {0:X4}h", dev.UsbVendorId);
                logSw.WriteLine("USB product ID: {0:X4}h", dev.UsbProductId);
            }

            logSw.WriteLine("FireWire device: {0}", dev.IsFireWire);
            if (dev.IsFireWire)
            {
                logSw.WriteLine("FireWire vendor: {0}", dev.FireWireVendorName);
                logSw.WriteLine("FireWire model: {0}", dev.FireWireModelName);
                logSw.WriteLine("FireWire GUID: 0x{0:X16}", dev.FireWireGuid);
                logSw.WriteLine("FireWire vendor ID: 0x{0:X8}", dev.FireWireVendor);
                logSw.WriteLine("FireWire product ID: 0x{0:X8}", dev.FireWireModel);
            }

            logSw.WriteLine();
            logSw.WriteLine("######################################################");

            logSw.WriteLine();
            logSw.WriteLine("################ Dumping progress log ################");
            logSw.Flush();
        }
Example #4
0
        /// <summary>
        ///     Saves statistics to disk
        /// </summary>
        public static void SaveStats()
        {
            if (AllStats == null)
            {
                return;
            }

            if (AllStats.OperatingSystems != null)
            {
                long count = 0;

                OsStats old = null;
                foreach (OsStats nvs in AllStats.OperatingSystems.Where(nvs =>
                                                                        nvs.name == DetectOS
                                                                        .GetRealPlatformID().ToString() &&
                                                                        nvs.version == DetectOS.GetVersion()))
                {
                    count = nvs.Value + 1;
                    old   = nvs;
                    break;
                }

                if (old != null)
                {
                    AllStats.OperatingSystems.Remove(old);
                }

                count++;
                AllStats.OperatingSystems.Add(new OsStats
                {
                    name    = DetectOS.GetRealPlatformID().ToString(),
                    Value   = count,
                    version = DetectOS.GetVersion()
                });
            }
            else if (CurrentStats != null)
            {
                AllStats.OperatingSystems = CurrentStats.OperatingSystems;
            }

            if (AllStats.Versions != null)
            {
                long count = 0;

                NameValueStats old = null;
                foreach (NameValueStats nvs in AllStats.Versions.Where(nvs => nvs.name == Version.GetVersion()))
                {
                    count = nvs.Value + 1;
                    old   = nvs;
                    break;
                }

                if (old != null)
                {
                    AllStats.Versions.Remove(old);
                }

                count++;
                AllStats.Versions.Add(new NameValueStats {
                    name = Version.GetVersion(), Value = count
                });
            }
            else if (CurrentStats != null)
            {
                AllStats.Versions = CurrentStats.Versions;
            }

            FileStream fs = new FileStream(Path.Combine(Settings.Settings.StatsPath, "Statistics.xml"),
                                           FileMode.Create);
            XmlSerializer xs = new XmlSerializer(AllStats.GetType());

            xs.Serialize(fs, AllStats);
            fs.Close();

            if (CurrentStats != null)
            {
                string partial = $"PartialStats_{DateTime.UtcNow:yyyyMMddHHmmssfff}.xml";

                fs = new FileStream(Path.Combine(Settings.Settings.StatsPath, partial), FileMode.Create);
                xs = new XmlSerializer(CurrentStats.GetType());
                xs.Serialize(fs, CurrentStats);
                fs.Close();
            }

            if (Settings.Settings.Current.Stats != null && Settings.Settings.Current.Stats.ShareStats)
            {
                SubmitStats();
            }
        }