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)"); } }
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); }