logo

Работа с файлами конфигурации

Файлы конфигурации позволяют настраивать параметры системы без перекомпиляции. Кроме того, используя файлы конфигурации, администраторы могут задавать политики, влияющие на выполнение приложений на определенных компьютерах. Файл конфигурации состоит из элементов, которые являются логическими структурами данных, задающими сведения о конфигурации. Файл конфигурации системы по умолчанию находится в той же папке, где хранится сама система, в папке UserConfig и называется configuration.config.

Рассмотрим элементы файла конфигурации возможные действия с ними.

Файл конфигурации принципиально важен для функционирования системы. Все изменения вносятся на свой страх и риск; ошибки в файле конфигурации приводят к неработоспособности системы и могут иметь необратимые последствия.

Файл конфигурации системы ELMA редакция Стандарт

Работа с базой данных

В теге <configuration> содержатся все сведения о конфигурации системы:

  • в строке <add name="MainDB" connectionString="Data Source=(local);Initial Catalog=pervaya;Integrated Security=true;"/> задается база данных, к которой осуществляется подключение;
  • параметр Integrated Security отвечает за проверку подлинности Windows (встроенная безопасность). Если данный параметр имеет значение true, то авторизация на MS SQL Server производится под той учетной записью, от имени которой запущен сервер ELMA. Если параметр Integrated Security имеет значение false, то авторизация на MS SQL Server производится под учетной записью, которая указана в конфигурационном файле ELMA следующим образом (приведен пример строки подключения): <add name="MainDB" connectionString="Data Source=(local);Initial Catalog=ELMA3;Integrated Security=false;User ID=UserName;Password=pass"/>;
  • параметру Data Source задается имя сервера. Параметру Initial Catalog присваивается название базы данных, работающей на MS SQL;
  • в данном случае имя файла базы pervaya, если у Вас несколько баз, то достаточно изменить название файла базы в параметре Initial Catalog и перезапустить веб-сервер ELMA.

В строке <main connectionStringName="MainDB" type="EleWise.ELMA.Extensions.MSSQL.MSSQLProvider, EleWise.ELMA.Extensions.MSSQL" backupEnabled="false" commandTimeOut="1000"/> содержится информация о том, нужно ли создавать резервную копию при запуске сервера, а также задается время ожидания отклика MS SQL сервера:

  • в параметре commandTimeOut задается время ожидания сервера MS SQL. Этому параметру может быть присвоено любое значение в секундах, по умолчанию время ожидания равняется 30 секундам. Более подробно о настройке ожидания отклика сервера Вы можете прочитать в соответствующей статье;
  • параметр backupEnabled отвечает за резервное копирование, ему могут быть присвоены разные значения:

    1. Присвоено значение false – бэкап (резервная копия) не создается при запуске сервера. Когда резервное копирование отключено, путь для бэкапов можно опустить.
    2. Параметр изменен на backupPath – то есть backupEnabled опущен, используется значение по умолчанию (true), бэкап создается. Параметр backupPath определяет путь, куда сохраняется бэкап. Если ему присвоено пустое значение – бэкап базы сохраняется в папку в соответствии с настройками MS SQL Server. По умолчанию это ~\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup.
    3. Параметру backupPath присвоен путь – это значит, что бэкап сохранится в папку, имеющую указанный путь.

Работа с файловым хранилищем

В строке <add name="FSProvider" type="EleWise.ELMA.Runtime.Providers.Impl.FileSystemFileStoreProvider, EleWise.ELMA.SDK" filesPath="Files"/> можно задать альтернативный путь до папки Files, по умолчанию эта папка находится в папке с системой, в папке UserConfig. В параметр filesPath можно прописать полный путь до папки Files и файлы будут сохраняться в папку по этому пути, например, C:\ELMA3-Standart\Files.

При использовании сетевого пути в качестве файлового хранилища необходимо указывать полный сетевой путь до папки, например, \\server\folder. При этом необходимо убедиться, что пользователь, под именем которого запускается сервер ELMA, имеет права на доступ по указанному пути.

Файл конфигурации системы ELMA редакция Экспресс

В теге <configuration> содержатся все сведения о конфигурации системы.

Работа с базой данных

В строке <add name="MainDB" connectionString="Data Source=127.0.0.1;Initial Catalog={CONFIGDIR}\ekon.fdb;User ID=sysdba;Password=masterkey;Port=3056;Dialect=3;ServerType=0"/> задаются параметры подключения к базе данных:

  • параметр Data Source содержит информацию о пути до сервера (его адресе);
  • параметру Initial Catalog присваивается название базы данных Firebird, при этом в фигурных скобках указывается директория, в которой хранится файл базы данных (вместо CONFIGDIR может быть указан путь до файла базы данных);
  • параметр User ID содержит имя пользователя базы данных, а параметр Password – пароль пользователя;
  • параметр Port несет информацию о порте подключения к Firebird;
  • параметр ServerType указывает на тип сервера. Для функционирования системы ServerType должен быть равен 0.

Работа с файловым хранилищем

В строке <add name="FSProvider" type="EleWise.ELMA.Runtime.Providers.Impl.FileSystemFileStoreProvider, EleWise.ELMA.SDK" filesPath="Files"/> можно задать альтернативный путь до папки Files, по умолчанию эта папка находится в папке с системой – UserConfig. В параметр filesPath можно прописать полный путь до папки Files, и файлы будут сохраняться в папку по этому пути. Например: C:\ELMA3- Express\Files.

При использовании сетевого пути в качестве файлового хранилища необходимо указывать полный сетевой путь до папки, например, \\server\folder. При этом необходимо убедиться, что пользователь, под именем которого запускается сервер ELMA, имеет права на доступ по указанному пути.

Аналогичным образом можно осуществить перенос папки Preview на другой сервер, прописав полный путь до неё. В параметр filesPath необходимо прописать сетевой путь до папки Preview, в которой будут сохраняться все превью-файлы.

Работа с файлом connection.config

Файл connection.config для редакции системы Экспресс и Стандарт не имеет существенных различий, поэтому рассмотрим работу с ним на примере редакции Стандарт.

В файле connection.config задается путь до файла конфигурации. В строке <add name="ConfigurationFile" connectionString="C:\ELMA3-Standart\UserConfig\configuration.config"/> можно прописать новый полный путь до файла конфигурации в параметре connectionString.

Работа с файлами Settings.config и Web.config

Рассмотрим работу с файлами Settings.config и Web.config, которые располагаются в папке …\<Общая папка с файлами системы ELMA>\Web.

В generic класс EntityManager<T, IdT> добавлено создание кэша. Кэш создается для каждого из потомков EntityManager. Этот кэш хранит связку Uid и Id. Кэш заполняется при загрузке данных из БД и снижает количество запросов по Uid.

Время жизни записи (связки Uid с Id) в кэше по умолчанию 10 минут. Оно продлевается при обращении к записи. Его можно поменять. Для этого нужно в файле Settings.config задать параметр (значение указывается в минутах): <add key="UidCacheExpiration" value="10" />.

Также можно задать дополнительные настройки кэша в файле Web.config по его имени. Описание настроек можно найти на официальном сайте Microsoft.

Для выполнения настроек используется имя кэша. Оно формируется как полное имя класса, реализующего интерфейс сущности, с которой работает менеджер, и Uid: InterfaceActivator.TypeOf<T>().FullName и Uid.

Например, для класса UserManager : EntityManager<IUser, long> имя кэша будет следующим: EleWise.ELMA.Security.Models.UserUid.

Шифрование секций файла конфигурации

В версиях системы 3.11.60, 3.12.50, 3.13.40, 4.0.0 реализована возможность шифрования секций файла конфигурации. Это позволит исключить публикацию в явном виде конфиденциальных данных, указанных в секциях файла.

Перед выполнением настроек создайте копию оригинального файла, к разделам которого будет применяться шифрование секций. Сохраните его в безопасном месте, например на съёмном носителе.

Затем откройте файл Settings.config, который расположен в папке …\<Общая папка с файлами системы ELMA>\Web, и задайте в нём следующие настройки:

  • ProtectSettingsSection — включите или отключите шифрование секций;
  • ProtectSettingsSection.{Название секции} — укажите секцию для шифрования;
  • ProtectSectionProvider — укажите название провайдера шифрования. По умолчанию задан провайдер RsaProtectedConfigurationProvider, но можно его изменить на другого. Про особенности работы провайдера RsaProtectedConfigurationProvider читайте в статье «Microsoft ASP.NET 2.0», стр. 160.

Например, в файле configuration.config, который расположен в папке …\<Общая папка с файлами системы ELMA>\UserConfig, активируйте шифрование секции connectionStrings, содержащей пароль от БД. Для этого выполните следующие действия:

  1. Создайте копию файла configuration.config и сохраните её отдельно.
  2. В файле Settings.config выполните настройки шифрования:
<add key="ProtectSettingsSection" value="true"/>

<add key="ProtectSettingsSection.connectionStrings" value="true"/>
  1. Если после этого запустить систему, то шифрованная секция connectionStrings в файле configuration.config будет выглядеть так:
	<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
  <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
   xmlns="http://www.w3.org/2001/04/xmlenc#">
   <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
     <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
     <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
      <KeyName>Rsa Key</KeyName>
     </KeyInfo>
     <CipherData>
      <CipherValue>YhDa1Zb/yC8WeVpOCEG8LSoWIeb4VZUrhA3qlCV36DJ/899c0rKWzuP3P7yH6O+RjtiXIuUBH7fLahHcHwz2QhvVsztHYkhun5SX3vCRqIro4PAr3PTezqHg/37Zwzw9YUlzFBoQWcU/GY2Yki1RzaYvpXU/NEBYDp2MChhvEBhgUrvKxA+uqwyIxM3RDTnuA0ikA+g7LgwzQpe1z6Ah2qEeP9/j9dHfvlVj40jiZZbkl9Eca56Cv1EICdHPi3r2nQEVJjQWJ89iD9uea7qdvvxwfdvJs/3kdf3eMLX9M33irhpyHbeu8wBggM2lp2QBVXTS7OpcOsA==</CipherValue>
     </CipherData>
    </EncryptedKey>
   </KeyInfo>
   <CipherData>
    <CipherValue>Y7Bf5NG3w1AMr837vx+EkxHhQa3HGp/jMWLORjnhd0zJSljpt/MbjnpFF04/b+WJLXR5FFCX3bg8i/3am/QcYph+p1I36tequDfsVQgPZpBIntpLNDYT1o8pX6oMjV/zT+IuOsvPOs0Zy8KAb/US6TQS0xoid0DCwfMsFgn7TE9KFuzbFnKLzDyxZ3qm7MQWtE37PjQPs8yDmlSzT4gd8orsyhANUoeQE/cfzON53r0Xk99+++DuR</CipherValue>
   </CipherData>
  </EncryptedData>
 </connectionStrings>

Чтобы использовать шифрование для фермы, нужно импортировать контейнер с закрытыми ключами на все узлы фермы. Про организацию работы на web-ферме читайте в статье «Microsoft ASP.NET 2.0», стр. 162.

Дешифрование

При шифровании секретный ключ генерируется в системных папках сервера и затем используется при дешифровании.

Если требуется дешифровать файл конфигурации на удалённом сервере, нужно передать ключ дешифрования на удалённый сервер. Это можно сделать с помощью генерации RSA Key Container, который нужно создать в файле конфигурации. Подробнее об этом читайте в документации Microsoft.