Commit fe055b46 by Michael Brachmann

config loading fixes

parent 32375203
...@@ -48,43 +48,87 @@ var ...@@ -48,43 +48,87 @@ var
implementation implementation
uses uses
Bcl.Json, System.SysUtils, System.IOUtils, System.StrUtils, System.JSON, System.SysUtils, System.IOUtils, System.StrUtils,
Common.Logging; Common.Logging;
procedure LoadServerConfig; procedure LoadServerConfig;
function GetStr(obj: TJSONObject; const key: string): string;
var
v: TJSONValue;
begin
v := obj.GetValue(key);
if Assigned(v) and not (v is TJSONNull) then
Result := v.Value
else
Result := '';
end;
function GetInt(obj: TJSONObject; const key: string; default: Integer): Integer;
var
v: TJSONValue;
begin
v := obj.GetValue(key);
if Assigned(v) and not (v is TJSONNull) then
Result := StrToIntDef(v.Value, default)
else
Result := default;
end;
var var
configFile: string; configFile, s: string;
localConfig: TServerConfig; jsonObj: TJSONObject;
begin begin
Logger.Log(1, '--LoadServerConfig - start'); Logger.Log(1, '--LoadServerConfig - start');
configFile := TPath.ChangeExtension(ParamStr(0), '.json'); configFile := TPath.ChangeExtension(ParamStr(0), '.json');
Logger.Log(1, '-- Config file: ' + configFile); Logger.Log(1, '-- Config file: ' + configFile);
if TFile.Exists(configFile) then if not TFile.Exists(configFile) then
begin
Logger.Log(1, '-- Config file found.');
localConfig := TJson.Deserialize<TServerConfig>(TFile.ReadAllText(configFile));
Logger.Log(1, '-- localConfig loaded from config file');
serverConfig.Free;
Logger.Log(1, '-- serverConfig.Free - called');
serverConfig := localConfig;
Logger.Log(1, '-- serverConfig := localConfig - called');
Logger.Log(1, '');
Logger.Log(1, '--- Server Config Values ---');
Logger.Log(1, '-- url: ' + serverConfig.url + IfThen(serverConfig.url = defaultServerUrl, ' [default]', ' [from config]'));
Logger.Log(1, '-- adminPassword: ' + serverConfig.adminPassword + IfThen(serverConfig.adminPassword = 'whatisthisusedfor', ' [default]', ' [from config]'));
Logger.Log(1, '-- jwtTokenSecret: ' + serverConfig.jwtTokenSecret + IfThen(serverConfig.jwtTokenSecret = 'super_secret0123super_secret4567', ' [default]', ' [from config]'));
Logger.Log(1, '-- webAppFolder: ' + serverConfig.webAppFolder + IfThen(serverConfig.webAppFolder = 'static', ' [default]', ' [from config]'));
Logger.Log(1, '-- memoLogLevel: ' + IntToStr(serverConfig.memoLogLevel));
Logger.Log(1, '-- fileLogLevel: ' + IntToStr(serverConfig.fileLogLevel));
Logger.Log(1, '-- auditEnabled: ' + BoolToStr(serverConfig.auditEnabled, True));
end
else
begin begin
Logger.Log(1, '-- Config file not found.'); Logger.Log(1, '-- Config file not found.');
Logger.Log(1, '--LoadServerConfig - end');
Exit;
end;
Logger.Log(1, '-- Config file found.');
jsonObj := TJSONObject.ParseJSONValue(TFile.ReadAllText(configFile)) as TJSONObject;
if not Assigned(jsonObj) then
begin
Logger.Log(1, '-- Config file could not be parsed as JSON.');
Logger.Log(1, '--LoadServerConfig - end');
Exit;
end;
try
s := GetStr(jsonObj, 'url'); if s <> '' then serverConfig.url := s;
s := GetStr(jsonObj, 'jwtTokenSecret'); if s <> '' then serverConfig.jwtTokenSecret := s;
s := GetStr(jsonObj, 'adminPassword'); if s <> '' then serverConfig.adminPassword := s;
s := GetStr(jsonObj, 'webAppFolder'); if s <> '' then serverConfig.webAppFolder := s;
s := GetStr(jsonObj, 'reportsFolder'); if s <> '' then serverConfig.reportsFolder := s;
s := GetStr(jsonObj, 'rpId'); if s <> '' then serverConfig.rpId := s;
s := GetStr(jsonObj, 'rpName'); if s <> '' then serverConfig.rpName := s;
serverConfig.twilioAccountSid := GetStr(jsonObj, 'twilioAccountSid');
serverConfig.twilioAuthToken := GetStr(jsonObj, 'twilioAuthToken');
serverConfig.twilioFromNumber := GetStr(jsonObj, 'twilioFromNumber');
serverConfig.memoLogLevel := GetInt(jsonObj, 'memoLogLevel', serverConfig.memoLogLevel);
serverConfig.fileLogLevel := GetInt(jsonObj, 'fileLogLevel', serverConfig.fileLogLevel);
finally
jsonObj.Free;
end; end;
Logger.Log(1, '');
Logger.Log(1, '--- Server Config Values ---');
Logger.Log(1, '-- url: ' + serverConfig.url + IfThen(serverConfig.url = defaultServerUrl, ' [default]', ' [from config]'));
Logger.Log(1, '-- adminPassword: ' + serverConfig.adminPassword + IfThen(serverConfig.adminPassword = 'whatisthisusedfor', ' [default]', ' [from config]'));
Logger.Log(1, '-- jwtTokenSecret: ' + serverConfig.jwtTokenSecret + IfThen(serverConfig.jwtTokenSecret = 'super_secret0123super_secret4567', ' [default]', ' [from config]'));
Logger.Log(1, '-- webAppFolder: ' + serverConfig.webAppFolder + IfThen(serverConfig.webAppFolder = 'static', ' [default]', ' [from config]'));
Logger.Log(1, '-- rpId: ' + serverConfig.rpId + IfThen(serverConfig.rpId = 'localhost', ' [default]', ' [from config]'));
Logger.Log(1, '-- memoLogLevel: ' + IntToStr(serverConfig.memoLogLevel));
Logger.Log(1, '-- fileLogLevel: ' + IntToStr(serverConfig.fileLogLevel));
Logger.Log(1, '-- twilioAccountSid: ' + IfThen(serverConfig.twilioAccountSid <> '', '[configured]', '[not set]'));
Logger.Log(1, '-- twilioAuthToken: ' + IfThen(serverConfig.twilioAuthToken <> '', '[configured]', '[not set]'));
Logger.Log(1, '-- twilioFromNumber: ' + serverConfig.twilioFromNumber + IfThen(serverConfig.twilioFromNumber <> '', '', ' [not set]'));
Logger.Log(1, '-------------------------------------------------------------'); Logger.Log(1, '-------------------------------------------------------------');
Logger.Log(1, '--LoadServerConfig - end'); Logger.Log(1, '--LoadServerConfig - end');
end; end;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment