276 lines
11 KiB
C#
276 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Nini.Config;
|
|
using SafeMobileLib;
|
|
using System.Net;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Net.Security;
|
|
using System.IO;
|
|
|
|
namespace AppServer
|
|
{
|
|
public class Config
|
|
{
|
|
private IConfigSource source = null;
|
|
private string CFG_FILE = "appConfig.ini";
|
|
|
|
public string DB_IP, DB_schema, DB_user, DB_passwd, DB_port;
|
|
public string smtpServer = "";
|
|
public string pop3Server = "";
|
|
public Int32 pop3Port = 995;
|
|
public Int32 smtpPort = 465;
|
|
public bool popSSLState = true;
|
|
public bool smtpSSLState = true;
|
|
public bool enableEmailService = false;
|
|
public string emailAddress, emailPassword;
|
|
public Int64 lastEmailTime = 0;
|
|
|
|
public bool autoupdate = true;
|
|
public bool isDevelop = false;
|
|
|
|
public int regPort;
|
|
|
|
public int RecordingsPort;
|
|
public int RecordingsAudioPort;
|
|
|
|
public string msgBusIP;
|
|
public int msgBusPort;
|
|
|
|
public bool watchdog = false;
|
|
public bool enableRestarting = false;
|
|
|
|
public string gatewayType = "";
|
|
|
|
public int websocketTimer;
|
|
public string websocketUrl;
|
|
public string websocketUser;
|
|
public string websocketPass;
|
|
|
|
private Int32 _VoicePort = 17234;
|
|
public string LocalIPAddress { get; private set; } = null;
|
|
private void LoadConfig()
|
|
{
|
|
|
|
try
|
|
{
|
|
if (!File.Exists(CFG_FILE))
|
|
{
|
|
Utils.WriteLine("Config file didn't exist. Creating it...", ConsoleColor.Yellow);
|
|
try
|
|
{
|
|
using (FileStream fs = File.Create(CFG_FILE)) { }
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Utils.WriteLine("Application ended!!!! " + CFG_FILE + " could not be created");
|
|
Console.WriteLine("Press any key to exit...");
|
|
Console.ReadKey();
|
|
System.Environment.Exit(0);
|
|
}
|
|
}
|
|
|
|
|
|
source = new IniConfigSource(CFG_FILE);
|
|
|
|
if (source.Configs["Registration"] == null)
|
|
source.Configs.Add("Registration");
|
|
|
|
regPort = GetInt32Value("Registration", "port", 5680); // Convert.ToInt32(source.Configs["Registration"].Get("port"));
|
|
|
|
|
|
if (source.Configs["RecordingsServer"] == null)
|
|
source.Configs.Add("RecordingsServer");
|
|
|
|
RecordingsPort = GetInt32Value("RecordingsServer", "port", 5678); // Convert.ToInt32(source.Configs["RecordingsServer"].Get("port"));
|
|
RecordingsAudioPort = GetInt32Value("RecordingsServer", "portAudio", 15679); // Convert.ToInt32(source.Configs["RecordingsServer"].Get("portAudio"));
|
|
|
|
|
|
|
|
if (source.Configs["Database"] == null)
|
|
source.Configs.Add("Database");
|
|
|
|
DB_IP = GetStringValue("Database", "IP", "127.0.0.1");// source.Configs["Database"].Get("IP");
|
|
DB_schema = GetStringValue("Database", "Schema", "safedispatchdb"); // source.Configs["Database"].Get("Schema");
|
|
DB_user = GetStringValue("Database", "User", "postgres"); // source.Configs["Database"].Get("User");
|
|
DB_passwd = GetStringValue("Database", "Passwd", "wizdemo26"); //source.Configs["Database"].Get("Passwd");
|
|
DB_port = GetStringValue("Database", "Port", "5432"); // source.Configs["Database"].Get("Port");
|
|
|
|
|
|
if (source.Configs["MessageBus"] == null)
|
|
source.Configs.Add("MessageBus");
|
|
|
|
msgBusIP = GetStringValue("MessageBus", "ip", "224.30.0.1"); // source.Configs["MessageBus"].Get("ip");
|
|
msgBusPort = GetInt32Value("MessageBus", "port", 17233); // Convert.ToInt32(source.Configs["MessageBus"].Get("port"));
|
|
|
|
|
|
if (source.Configs["VoiceMessageBus"] == null)
|
|
source.Configs.Add("VoiceMessageBus");
|
|
|
|
VoicePort = GetInt32Value("VoiceMessageBus", "port", 17234); //Int32.Parse(source.Configs["VoiceMessageBus"].Get("port"));
|
|
LocalIPAddress = GetStringValue("MessageBus", "localIP", "");
|
|
|
|
|
|
|
|
if (source.Configs["Update"] == null)
|
|
source.Configs.Add("Update");
|
|
|
|
autoupdate = GetBooleanValue("Update", "autoupdate", true);
|
|
|
|
if (source.Configs["Update"].Contains("develop"))
|
|
isDevelop = source.Configs["Update"].GetBoolean("develop");
|
|
|
|
GetStringValue("Update", "Version", "1.0.0.2");
|
|
GetBooleanValue("Update", "Enable", true);
|
|
|
|
|
|
if (source.Configs["Config"] == null)
|
|
source.Configs.Add("Config");
|
|
|
|
watchdog = GetBooleanValue("Config", "watchdog", false);
|
|
enableRestarting = GetBooleanValue("Config", "enableRestarting", false);
|
|
gatewayType = GetStringValue("Config", "Gateway", "");
|
|
|
|
if (source.Configs["Websocket"] == null)
|
|
source.Configs.Add("Websocket");
|
|
|
|
websocketTimer = GetInt32Value("Websocket", "WebsocketTimer_ms", 5000);
|
|
websocketUrl = GetStringValue("Websocket", "WebsocketUrl", "");
|
|
websocketUser = GetStringValue("Websocket", "WebsocketUser", "");
|
|
websocketPass = GetStringValue("Websocket", "WebsocketPassword", "");
|
|
|
|
|
|
DBemailServiceManager DB = new DBemailServiceManager(DB_IP, DB_schema, DB_user, DB_passwd, DB_port);
|
|
ServicePointManager.ServerCertificateValidationCallback =
|
|
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
|
|
EmailService es = DB.GetEmailServiceSettings();
|
|
if (es != null)
|
|
{
|
|
enableEmailService = es.Enable;
|
|
emailAddress = es.EmailAddress;
|
|
emailPassword = es.Pass;
|
|
lastEmailTime = es.LastEmailTime;
|
|
pop3Server = es.PopServer;
|
|
smtpServer = es.SmtpServer;
|
|
pop3Port = es.PopPort;
|
|
smtpPort = es.SmtpPort;
|
|
popSSLState = es.IsPopSSL;
|
|
smtpSSLState = es.IsSmtpSSL;
|
|
}
|
|
|
|
if (enableEmailService)
|
|
SM.Debug("EmailService\n emailAddress=" + emailAddress + "\n " + pop3Server+":" + pop3Port + "\n " + smtpServer+":"+smtpPort);
|
|
else
|
|
SM.Debug("Email Service is not enabled");
|
|
MainForm.SendPOLLafterSMS = DB.GetPollSMSServiceSettings();
|
|
|
|
|
|
// Save the INI file
|
|
source.Save();
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("LoadSetup() Exception: " + ex.Message);
|
|
}
|
|
SM.Debug("LoadSetup file OK !");
|
|
}
|
|
public Config()
|
|
{
|
|
LoadConfig();
|
|
}
|
|
|
|
public int VoicePort {
|
|
get { return _VoicePort; }
|
|
private set { _VoicePort = value; }
|
|
}
|
|
|
|
private void SaveCFGFile(string file)
|
|
{
|
|
try
|
|
{
|
|
source = new IniConfigSource(CFG_FILE);
|
|
|
|
//DataBase
|
|
source.Configs["Database"].Set("IP", DB_IP);
|
|
source.Configs["Database"].Set("Schema", DB_schema);
|
|
source.Configs["Database"].Set("User", DB_user);
|
|
source.Configs["Database"].Set("Passwd", DB_passwd);
|
|
source.Configs["Database"].Set("Port", DB_port);
|
|
|
|
// Save the INI file
|
|
source.Save();
|
|
//UpdateFields();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("SaveCFGFile() Exception: " + ex.Message);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Get an int value from the configuration file. The desired value is identifiec by
|
|
/// the key and the header under which is placed is pointed by the header. Also a default
|
|
/// value can be set in case the value doesn't exist and needs to be created before
|
|
/// beeing returned
|
|
/// </summary>
|
|
/// <param name="header">Header unde which the desired config parameter is placed</param>
|
|
/// <param name="key">The Key that designates the desired config parameter</param>
|
|
/// <param name="defaultValue">A default value that will be used and returned in case the
|
|
/// config file doesn't have a value for the parameter</param>
|
|
/// <returns>Parameter value from the config file, or the default value in case it doesn't
|
|
/// exist</returns>
|
|
private Int32 GetInt32Value(String header, String key, Int32 defaultValue)
|
|
{
|
|
if (!source.Configs[header].Contains(key))
|
|
source.Configs[header].Set(key, defaultValue);
|
|
|
|
return source.Configs[header].GetInt(key);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Get a string value from the configuration file. The desired value is identifiec by
|
|
/// the key and the header under which is placed is pointed by the header. Also a default
|
|
/// value can be set in case the value doesn't exist and needs to be created before
|
|
/// beeing returned
|
|
/// </summary>
|
|
/// <param name="header">Header unde which the desired config parameter is placed</param>
|
|
/// <param name="key">The Key that designates the desired config parameter</param>
|
|
/// <param name="defaultValue">A default value that will be used and returned in case the
|
|
/// config file doesn't have a value for the parameter</param>
|
|
/// <returns>Parameter value from the config file, or the default value in case it doesn't
|
|
/// exist</returns>
|
|
private String GetStringValue(String header, String key, String defaultValue)
|
|
{
|
|
if (!source.Configs[header].Contains(key))
|
|
source.Configs[header].Set(key, defaultValue);
|
|
|
|
return source.Configs[header].GetString(key);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Get a boolean value from the configuration file. The desired value is identifiec by
|
|
/// the key and the header under which is placed is pointed by the header. Also a default
|
|
/// value can be set in case the value doesn't exist and needs to be created before
|
|
/// beeing returned
|
|
/// </summary>
|
|
/// <param name="header">Header unde which the desired config parameter is placed</param>
|
|
/// <param name="key">The Key that designates the desired config parameter</param>
|
|
/// <param name="defaultValue">A default value that will be used and returned in case the
|
|
/// config file doesn't have a value for the parameter</param>
|
|
/// <returns>Parameter value from the config file, or the default value in case it doesn't
|
|
/// exist</returns>
|
|
private Boolean GetBooleanValue(String header, String key, Boolean defaultValue)
|
|
{
|
|
if (!source.Configs[header].Contains(key))
|
|
source.Configs[header].Set(key, defaultValue);
|
|
|
|
return source.Configs[header].GetBoolean(key);
|
|
}
|
|
}
|
|
}
|