예제 #1
0
 static void SetDefaultSettings()
 {
     Current = new SetSettings
     {
         TemporaryFolder = Path.GetTempPath(),
         DatabasePath    =
             Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepodbmgr.db"),
         RepositoryPath =
             Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "osrepo"),
         UnArchiverPath       = null,
         CompressionAlgorithm = AlgoEnum.GZip,
         UseAntivirus         = false,
         UseClamd             = false,
         ClamdHost            = null,
         ClamdPort            = 3310,
         ClamdIsLocal         = false,
         UseVirusTotal        = false,
         VirusTotalKey        = null
     };
 }
예제 #2
0
        public static void LoadSettings()
        {
            Current         = new SetSettings();
            PlatformID ptId = DetectOS.GetRealPlatformID();

            FileStream   prefsFs = null;
            StreamReader prefsSr = null;

            try
            {
                switch(ptId)
                {
                    case PlatformID.MacOSX:
                    case PlatformID.iOS:
                    {
                        string preferencesPath =
                            Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library",
                                         "Preferences");
                        string preferencesFilePath =
                            Path.Combine(preferencesPath, "com.claunia.museum.osrepodbmgr.plist");

                        if(!File.Exists(preferencesFilePath))
                        {
                            SetDefaultSettings();
                            SaveSettings();
                        }

                        prefsFs                        = new FileStream(preferencesFilePath, FileMode.Open);
                        NSDictionary parsedPreferences = (NSDictionary)BinaryPropertyListParser.Parse(prefsFs);
                        if(parsedPreferences != null)
                        {
                            Current.TemporaryFolder = parsedPreferences.TryGetValue("TemporaryFolder", out NSObject obj)
                                                          ? ((NSString)obj).ToString()
                                                          : Path.GetTempPath();

                            Current.DatabasePath = parsedPreferences.TryGetValue("DatabasePath", out obj)
                                                       ? ((NSString)obj).ToString()
                                                       : Path
                                                          .Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                                                   "osrepodbmgr.db");

                            Current.RepositoryPath = parsedPreferences.TryGetValue("RepositoryPath", out obj)
                                                         ? ((NSString)obj).ToString()
                                                         : Path
                                                            .Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                                                     "osrepo");

                            Current.UnArchiverPath = parsedPreferences.TryGetValue("UnArchiverPath", out obj)
                                                         ? ((NSString)obj).ToString()
                                                         : null;

                            if(parsedPreferences.TryGetValue("CompressionAlgorithm", out obj))
                            {
                                if(!Enum.TryParse(((NSString)obj).ToString(), true, out Current.CompressionAlgorithm))
                                    Current.CompressionAlgorithm = AlgoEnum.GZip;
                            }
                            else Current.CompressionAlgorithm = AlgoEnum.GZip;

                            Current.UseAntivirus = parsedPreferences.TryGetValue("UseAntivirus", out obj) &&
                                                   ((NSNumber)obj).ToBool();

                            Current.UseClamd = parsedPreferences.TryGetValue("UseClamd", out obj) &&
                                               ((NSNumber)obj).ToBool();

                            Current.ClamdHost = parsedPreferences.TryGetValue("ClamdHost", out obj)
                                                    ? ((NSString)obj).ToString()
                                                    : null;

                            if(parsedPreferences.TryGetValue("ClamdPort", out obj))
                                Current.ClamdPort  = (ushort)((NSNumber)obj).ToLong();
                            else Current.ClamdPort = 3310;

                            Current.ClamdIsLocal = parsedPreferences.TryGetValue("ClamdIsLocal", out obj) &&
                                                   ((NSNumber)obj).ToBool();

                            Current.ClamdIsLocal = parsedPreferences.TryGetValue("UseVirusTotal", out obj) &&
                                                   ((NSNumber)obj).ToBool();

                            Current.ClamdHost = parsedPreferences.TryGetValue("VirusTotalKey", out obj)
                                                    ? ((NSString)obj).ToString()
                                                    : null;

                            prefsFs.Close();
                        }
                        else
                        {
                            prefsFs.Close();

                            SetDefaultSettings();
                            SaveSettings();
                        }
                    }
                        break;
                    case PlatformID.Win32NT:
                    case PlatformID.Win32S:
                    case PlatformID.Win32Windows:
                    case PlatformID.WinCE:
                    case PlatformID.WindowsPhone:
                    {
                        RegistryKey parentKey = Registry
                                               .CurrentUser.OpenSubKey("SOFTWARE")
                                              ?.OpenSubKey("Canary Islands Computer Museum");
                        if(parentKey == null)
                        {
                            SetDefaultSettings();
                            SaveSettings();
                            return;
                        }

                        RegistryKey key = parentKey.OpenSubKey("OSRepoDBMgr");
                        if(key == null)
                        {
                            SetDefaultSettings();
                            SaveSettings();
                            return;
                        }

                        Current.TemporaryFolder = (string)key.GetValue("TemporaryFolder");
                        Current.DatabasePath    = (string)key.GetValue("DatabasePath");
                        Current.RepositoryPath  = (string)key.GetValue("RepositoryPath");
                        Current.UnArchiverPath  = (string)key.GetValue("UnArchiverPath");
                        if(!Enum.TryParse((string)key.GetValue("CompressionAlgorithm"), true,
                                          out Current.CompressionAlgorithm))
                            Current.CompressionAlgorithm = AlgoEnum.GZip;
                        Current.UseAntivirus             = (bool)key.GetValue("UseAntivirus");
                        Current.UseClamd                 = (bool)key.GetValue("UseClamd");
                        Current.ClamdHost                = (string)key.GetValue("ClamdHost");
                        Current.ClamdPort                = (ushort)key.GetValue("ClamdPort");
                        Current.ClamdIsLocal             = (bool)key.GetValue("ClamdIsLocal");
                        Current.UseVirusTotal            = (bool)key.GetValue("UseVirusTotal");
                        Current.VirusTotalKey            = (string)key.GetValue("VirusTotalKey");
                    }
                        break;
                    default:
                    {
                        string configPath =
                            Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config");
                        string settingsPath =
                            Path.Combine(configPath, "OSRepoDBMgr.xml");

                        if(!Directory.Exists(configPath))
                        {
                            SetDefaultSettings();
                            SaveSettings();
                            return;
                        }

                        XmlSerializer xs = new XmlSerializer(Current.GetType());
                        prefsSr          = new StreamReader(settingsPath);
                        Current          = (SetSettings)xs.Deserialize(prefsSr);
                        prefsSr.Close();
                    }
                        break;
                }
            }
            catch
            {
                prefsFs?.Close();
                prefsSr?.Close();

                SetDefaultSettings();
                SaveSettings();
            }
        }