コード例 #1
0
ファイル: Global.cs プロジェクト: devel0/worked-hours-tracker
        public Global(ILogger <Global> logger)
        {
            this.logger = logger;

            if (!File.Exists(Global.AppConfigPathfilename))
            {
                Config = new Config();
                Config.Save(logger);
            }
            else
            {
                // check mode 600
                if (!LinuxHelper.IsFilePermissionSafe(AppConfigPathfilename, 384))
                {
                    throw new Exception($"invalid file permission [{AppConfigPathfilename}] must set to 600");
                }

                var attrs = File.GetAttributes(AppConfigPathfilename);
                Config = JsonConvert.DeserializeObject <Config>(File.ReadAllText(AppConfigPathfilename));
            }

            if (string.IsNullOrEmpty(Config.DBHostname) || Config.DBPassword == "pass")
            {
                Config.DBHostname = "hostname";
                Config.DBPort     = 5432;
                Config.DBName     = "worked_hours_tracker";
                Config.DBUsername = "******";
                Config.DBPassword = "******";
                Config.Save(logger);

                throw new Exception($"please configure [{AppConfigPathfilename}] setting DBHostname, DBPort, DBName, DBUsername, DBPassword (see README.md)");
            }
        }
コード例 #2
0
ファイル: Config.cs プロジェクト: devel0/worked-hours-tracker
 public void Save(ILogger logger)
 {
     try
     {
         if (File.Exists(Global.AppConfigPathfilename))
         {
             File.Copy(Global.AppConfigPathfilename, Global.AppConfigPathfilenameBackup, true);
         }
     }
     catch (Exception ex)
     {
         logger.LogError($"unable to backup config file [{Global.AppConfigPathfilename}] to [{Global.AppConfigPathfilenameBackup}] : {ex.Message}");
     }
     File.WriteAllText(Global.AppConfigPathfilename, JsonConvert.SerializeObject(this, Formatting.Indented));
     // save with mode 600
     LinuxHelper.SetFilePermission(Global.AppConfigPathfilename, 384);
 }