/// <summary> /// Получает значение параметра из ini-файла. /// Если такого параметра нет, то он создается с переданным /// значением по умолчанию /// </summary> private object GetAdditionalParamFromINI(iniFile iniSettings, string section, string key, Type typeOfValue, string defVal) { try { return(IniReadValue(iniSettings, section, key, typeOfValue, true)); } catch { iniSettings.IniWriteValue(section, key, defVal); return(IniReadValue(iniSettings, section, key, typeOfValue)); } }
/// <summary> /// Проверяет существование файла ini с настройками. /// При необходимости создает его. /// <PARAM name="runPath">Путь исполняемого файла</PARAM> /// </summary> private bool CheckMainINI(string runPath) { bool iniOK = false; string fileName = runPath + "settings.ini"; iniFile iniSettings = new iniFile(fileName); if (File.Exists(fileName)) { try { this.botToken = (string)IniReadValue(iniSettings, "Main", "BotToken", typeof(string)); this.interval = (int)IniReadValue(iniSettings, "Main", "Interval", typeof(int)); this.debug = (bool)IniReadValue(iniSettings, "Debug", "Enabled", typeof(bool)); this.safeMode1C = (bool)GetAdditionalParamFromINI(iniSettings, "SafeMode1C", "Enabled", typeof(bool), "1"); this.buttonsShowStart = (bool)GetAdditionalParamFromINI(iniSettings, "Buttons", "ShowStartButton", typeof(bool), "0"); this.buttonsHideKeyboard = (bool)GetAdditionalParamFromINI(iniSettings, "Buttons", "HideButtonsAfterMessage", typeof(bool), "1"); this.buttonsNumRows = (int)GetAdditionalParamFromINI(iniSettings, "Buttons", "NumRowsOfButtons", typeof(int), "2"); this.buttonsUsePic = (bool)GetAdditionalParamFromINI(iniSettings, "Buttons", "UsePictures", typeof(bool), "1"); this.allowUsers = GetWhiteListOfUsers((string)GetAdditionalParamFromINI(iniSettings, "WhiteList", "Users", typeof(string), "")); this.screenOwners = GetWhiteListOfUsers((string)GetAdditionalParamFromINI(iniSettings, "WhiteList", "ScreenOwners", typeof(string), "")); this.oscriptPath = (string)GetAdditionalParamFromINI(iniSettings, "Environment", "OneScriptPath", typeof(string), ""); try { // Старая версия ini-файла с одним прокси string host = (string)IniReadValue(iniSettings, "Proxy", "Server", typeof(string), true); if ((bool)GetAdditionalParamFromINI(iniSettings, "Proxy", "UseProxy", typeof(bool), "1")) { ProxyClient proxy = null; if ((int)GetAdditionalParamFromINI(iniSettings, "Proxy", "Type", typeof(int), "0") == 0) { proxy = new HttpProxyClient(); } else { proxy = new Socks5ProxyClient(); } proxy.Host = host; proxy.Port = (int)GetAdditionalParamFromINI(iniSettings, "Proxy", "Port", typeof(int), "0"); proxy.Username = (string)GetAdditionalParamFromINI(iniSettings, "Proxy", "Username", typeof(string), ""); proxy.Password = (string)GetAdditionalParamFromINI(iniSettings, "Proxy", "Password", typeof(string), ""); this.proxies.Add(proxy); } } catch { // Новая версия, где может быть несколько прокси int countProxies = (int)GetAdditionalParamFromINI(iniSettings, "Proxy", "CountProxy", typeof(int), "0"); int idxProxy = 0; while (idxProxy < countProxies) { ProxyClient proxy = null; if ((int)GetAdditionalParamFromINI(iniSettings, "Proxy", "Type" + (idxProxy + 1), typeof(int), "0") == 0) { proxy = new HttpProxyClient(); } else { proxy = new Socks5ProxyClient(); } proxy.Host = (string)GetAdditionalParamFromINI(iniSettings, "Proxy", "Server" + (idxProxy + 1), typeof(string), ""); proxy.Port = (int)GetAdditionalParamFromINI(iniSettings, "Proxy", "Port" + (idxProxy + 1), typeof(int), "0"); proxy.Username = (string)GetAdditionalParamFromINI(iniSettings, "Proxy", "Username" + (idxProxy + 1), typeof(string), ""); proxy.Password = (string)GetAdditionalParamFromINI(iniSettings, "Proxy", "Password" + (idxProxy + 1), typeof(string), ""); this.proxies.Add(proxy); idxProxy++; } } if (!String.IsNullOrEmpty(botToken)) { if (this.interval == 0) { this.interval = 1; } iniOK = true; } else { Logger.Write("Settings.ini: не заполнен токен бота", true); } } catch (Exception e) { Logger.Write("Ошибка Settings.ini: " + e.Message, true); } } else { try { iniSettings.IniWriteValue("Main", "BotToken", ""); iniSettings.IniWriteValue("Main", "Interval", "1"); iniSettings.IniWriteValue("Proxy", "UseProxy", "0"); iniSettings.IniWriteValue("Proxy", "Server", ""); iniSettings.IniWriteValue("Proxy", "Port", ""); iniSettings.IniWriteValue("Proxy", "Username", ""); iniSettings.IniWriteValue("Proxy", "Password", ""); iniSettings.IniWriteValue("Proxy", "Type", "0"); iniSettings.IniWriteValue("Debug", "Enabled", "0"); iniSettings.IniWriteValue("SafeMode1C", "Enabled", "1"); iniSettings.IniWriteValue("Buttons", "ShowStartButton", "0"); iniSettings.IniWriteValue("Buttons", "HideButtonsAfterMessage", "1"); iniSettings.IniWriteValue("Buttons", "NumRowsOfButtons", "2"); iniSettings.IniWriteValue("WhiteList", "Users", ""); iniSettings.IniWriteValue("OneScriptPath", "Environment", ""); Logger.Write("Создан файл настроек \"settings.ini\""); } catch { Logger.Write("Не удалось создать файл \"settings.ini\"", true); } } return(iniOK); }