Развертывание BPMSoft .NET 8 на Microsoft Windows

Средний
Инструкция подходит для развертывания в своем окружении, соответствующем системным требованиям BPMSoft. При развертывании BPMSoft в инфраструктуре других облачных провайдеров необходимо учитывать особенности и возможные ограничения инфраструктуры и предоставляемых доступов. Для уточнения деталей или при возникновении вопросов рекомендуем обратиться к документации или поддержке облачного провайдера.

Подготовка к развертыванию BPMSoft

Перед развертыванием системы необходимо выполнить следующие шаги:

Для проверки соответствия сервера системным можно воспользоваться Утилитой диагностики BPMSoft.

Проверка обязательных компонентов Microsoft Windows

Для корректной установки и работы BPMSoft требуется проверить, что установлены:

  • Компонент Microsoft Visual C++ 2015-2022 Redistributable;
  • Компоненты Web Server IIS.
Для промышленной эксплуатации система должна быть развернута на Microsoft Windows Server. Операционные системы «Windows» используются только для разработки конфигурации.

Список обязательных компонентов и их элементов представлен в таблице ниже.

Таблица 1 — Список обязательных компонентов и их элементов

Название компонента Расположение Элементы компонента
Common HTTP Features Web Server (IIS) → Web Server
  • Static Content;
  • Default Document;
  • HTTP Errors;
  • HTTP Redirection.
Application Development Web Server (IIS) → Web Server
  • ASP.Net 4.7;
  • .Net Extensibility 4.8;
  • ISAPI Extensions;
  • ISAPI Filters;
  • WebSocket Protocol.
Microsoft .Net Framework 4.7 Advanced Services и выше (Windows 8, Windows 10, Windows Server 2012, Windows Server 2016). —
  • ASP.NET 4.7;
  • WCF Services;
  • HTTP Activation;
  • Message Queuing (MSMQ) Activation;
  • Named Pipe Activation;
  • TCP Activation;
  • TCP Port Sharing.
Health and Diagnostics

Web Server (IIS) → Web Server

  • HTTP Logging;
  • Logging Tools;
  • Request Monitor;
  • Custom Logging.
Security Web Server (IIS) → Web Server
  • Basic Authentication;
  • Request Filtering;
  • IP and Domain Restriction.

Проверка обязательных компонентов для операционной системы Microsoft Windows Server

Для корректной установки и работы BPMSoft на Microsoft Windows Server требуется проверить наличие установки обязательных компонентов и при их отсутствии установить недостающие. Для этого требуется выполнить следующие действия.

  1. Откройте «Control Panel» и выберите «Turn Windows features on or off».

Рисунок 1 — Окно «Control Panel»

Рисунок 1 - Окно Control Panel

  1. В открывшемся окне «Add Roles and Features Wizard» на вкладке «Installation Type» выберите «Role-based or feature-based installation».

Рисунок 2 — Вкладка «Installation Type» окна «Add Roles and Features Wizard»

Рисунок 2 — Вкладка Installation Type окна Add Roles and Features Wizard

  1. На вкладке «Server Selection» выберите сервер, для которого будут установлены требуемые компоненты.

Рисунок 3 — Вкладка «Server Selection» окна «Add Roles and Features Wizard»

Рисунок 3 — Вкладка Server Selection окна Add Roles and Features Wizard

  1. На вкладке «Server Role» выберите компоненты, как показано на рисунке 4.
Примечание. Компонент «Windows Authentication» является опциональным при установке компонентов сервера и необходим для поддержки работы NTLM-аутентификации. Подробнее: Аутентификация Windows

Рисунок 4 — Вкладка «Server Role» окна «Add Roles and Features Wizard»

Рисунок 4 — Вкладка Server Role окна Add Roles and Features Wizard

  1. На вкладке «Features» выберите функции, если это необходимо.

Рисунок 5 — Вкладка «Features» окна «Add Roles and Features Wizard»

Рисунок 5 — Вкладка «Features» окна «Add Roles and Features Wizard»

Для корректной установки и работы BPMSoft на Microsoft Windows Server 2022 необходим компонент «.NET Framework 4.7 Features». Скачайте и установите его согласно инструкции.
  1. На вкладке «Confirmation» проверьте выбранные для установки компоненты и нажмите «Install».
  2. После завершения установки перезагрузите сервер.

Проверка обязательных компонентов для операционной системы Microsoft Windows 10

Для корректной установки и работы BPMSoft на Microsoft Windows 10 требуется проверить наличие установки обязательных компонентов и при их отсутствии установить недостающие. Для этого требуется выполнить следующие действия:

  1. Откройте «Control Panel» и выберите «Programs».
  2. Далее выберите «Turn Windows features on or off».
  3. В окне «Windows Features» установите недостающие компоненты.

Рисунок 6 — Окно «Windows Features»

Рисунок 6 — Окно Windows Features

Установка сервера кэширования

Для успешного развертывания BPMSoft необходимо установить сервер кэширования. Подробнее: Развертывание сервера кэширования для BPMSoft.

В системных требованиях BPMSoft перечислены поддерживаемые серверы кэширования. Подробнее: Системные требования BPMSoft.

Установка СУБД и восстановление базы данных

Для работы BPMSoft требуется установить одну из СУБД:

  • Microsoft SQL;
  • PostgreSQL.

Для восстановления базы данных и настроек доступа создайте пользователя с правами на управление сервером базы данных, а для подключения к системе создайте пользователя с правами на чтение и редактирование базы данных.

После чего восстановите базу данных из резервной копии, которая находится в папке «db» корневой директории. Подробнее: Развертывание базы данных.

Развертывание BPMSoft .NET 8

При проверке обязательных компонентов для развертывания продукта на платформе .NET 8 необходимо удостовериться, что установлены следующие компоненты:

  • .NET SDK 8.0;
  • .NET Runtime 8.0.
Если планируется развертывание BPMSoft в IIS, то рекомендуется установка .NET Runtime 8.0 версии Hosting Bundle.

Скачать компоненты можно на официальном сайте.

Развертывание системы состоит из следующих шагов:

Настройка ConnectionStrings.config

Для работы BPMSoft требуется правильно заполнить файл «ConnectionStrings.config». Для этого требуется распаковать архив с дистрибутивом системы в директорию, на которую будет настроен Internet Information Services (IIS).

После распаковки системы и настройки базы данных, открыть любым текстовым редактором файл «ConnectionStrings.config», который находится в корне директории с дистрибутивами системы.

Описание параметров для настройки:

  • db — подключение к восстановленной базе данных;
  • redis — подключение к серверу Redis;
  • tempDirectoryPath — путь к временной директории, используемой при установке пакетов;
  • elasticsearchCredentials — данные аутентификации в поисковой системы OpenSearch (далее — Search Engine);
  • influx — взаимодействие с сервером сбора метрик системы;
  • clientPerformanceLoggerServiceUri — взаимодействие с сервисом логирования;
  • messageBroker — взаимодействие с сервисом RabbitMQ.

Обязательные параметры

Строка подключения к базе данных Microsoft SQL Server
Пример заполнения параметра db (с помощью логина и пароля пользователя MS SQL)
<add name="db" connectionString="Data Source=[Имя сервера БД]; Initial Catalog=[Имя БД]; Persist Security Info=True; MultipleActiveResultSets=True; User ID=[Логин пользователя]; Password=[Пароль пользователя]; Pooling = true; Max Pool Size = 250; Connection Timeout=5; Encrypt=False;" />
Примечание. В BPMSoft версии 1.8 были внесены изменения в модуль взаимодействия с базой данных, поэтому необходимо убедиться в корректности используемой строки подключения и ее соответствии официальной документации Microsoft SQL Server.
Строка подключения к базе данных PostgreSQL
Без использования SSL
Пример заполнения параметра db (с помощью логина и пароля пользователя PostgreSQL)
<add name="db" connectionString="Pooling=true; Database=[Имя БД]; Host=[Имя сервера БД]; Port=[Порт]; Username=[Логин пользователя]; Password=[Пароль пользователя]; Timeout=500; CommandTimeout=400; MaxPoolSize=1024;" />
C использованием SSL

Руководство по настройке SSL-подключения к PostgreSQL приведено в статье Развертывание базы данных для BPMSoft.

Пример заполнения параметра db (при подключении к PostgreSQL по SSL)
<add name="db" connectionString="Pooling=true; Database=[Имя БД]; Host=[Адрес сервера БД]; Port=[Порт]; Username=[Имя пользователя]; Timeout=500; CommandTimeout=400; MaxPoolSize=1024; Trust Server Certificate=False; Persist Security Info=true; SslMode=VerifyFull; SSL Certificate=[Путь до client.crt]; SSL Key=[Путь до файла client.key]; Root Certificate=[Путь до файла ca.crt]" />
Строка подключения к серверу кэширования
Пример заполнения параметра redis
<add name="redis" connectionString="host=[Имя сервера];db=[Номер БД сервера кэширования]; port=[Порт сервера кэширования]; maxReadPoolSize=10; maxWritePoolSize=500; useTls=false;" />
Пример заполнения параметра redis с использованием пароля сервера
<add name="redis" connectionString="host=[Имя сервера];db=[Номер БД сервера кэширования]; port=[Порт сервера кэширования]; maxReadPoolSize=10; maxWritePoolSize=500; useTls=false; password=[Пароль сервера кэширования]" />
Пример заполнения параметра redis с использованием TLS (сертификат из файла)
<add name="redis" connectionString="host=[Имя сервера];db=[Номер БД сервера кэширования]; port=[Порт сервера кэширования]; maxReadPoolSize=10; maxWritePoolSize=500; useTls=true; certLocationMode=CertPath; certificatePath=[Путь до файла сертификата]; certificatePassword=[Пароль от сертификата]; sslHost=[Адрес хоста получения сертификата]" />
Пример заполнения параметра redis с использованием TLS (сертификат из хранилища)
<add name="redis" connectionString="host=[Имя сервера];db=[Номер БД сервера кэширования]; port=[Порт сервера кэширования]; maxReadPoolSize=10; maxWritePoolSize=500; useTls=true; certLocationMode=CertStore; storeName=[Наименование хранилища сертификатов]; storeLocation=[Расположение хранилища сертификатов]; certFindType=[Критерий для поиска сертификата]; certFindValue=[Значение для поиска сертификата]" />
Примечание. Подключение к серверу кэширования с помощью пароля сервера и по TLS можно использовать совместно.
Строка подключения к временной директории для загрузки пакетов
Пример заполнения параметра tempDirectoryPath
<add name="tempDirectoryPath" connectionString=[Путь к временной директории] />

Необязательные параметры

Пример заполнения параметра elasticsearchCredentials
<add name="elasticsearchCredentials" connectionString="User=[Имя пользователя Search Engine]; Password=[Пароль пользователя Search Engine];" />
Пример заполнения параметра influx
<add name="influx" connectionString="url=[Адрес сервиса сбора метрик]; user=[Имя пользователя]; password=[Пароль пользователя]; batchIntervalMs=5000" />
Пример заполнения параметра messageBroker без подключения по TLS
<add name="messageBroker" connectionString="amqp://[Имя пользователя MessageBroker]:[Пароль пользователя]@[Адрес сервера]/[Имя виртуального сервера]; useTls=false" />
Пример заполнения параметра messageBroker с подключением по TLS, с использованием сертификата из файла
<add name="messageBroker" connectionString="amqp://[Имя пользователя MessageBroker]:[Пароль пользователя]@[Адрес сервера]/[Имя виртуального сервера]; useTls=true; certLocationMode=CertPath; certPath=[Путь до файла сертификата]; certPassphrase=[Пароль от сертификата]; serverName=[SAN или CN сертификата сервера]" />
Пример заполнения параметра messageBroker с подключением по TLS, с использованием сертификата из хранилища сертификатов
<add name="messageBroker" connectionString="amqp://[Имя пользователя MessageBroker]:[Пароль пользователя]@[Адрес сервера]/[Имя виртуального сервера]; useTls=true; certLocationMode=CertStore; storeName=[наименование хранилища сертификатов]; storeLocation=[расположение хранилища сертификатов]; certFindType=[критерий для поиска сертификата]; certFindValue=[значение для поиска сертификата]; serverName=[SAN или CN сертификата сервера]" />
Пример заполнения параметра clientPerformanceLoggerServiceUri
<add name="clientPerformanceLoggerServiceUri" connectionString="[Адрес сервиса логирования]" />

Если у вас будет подключение к RabbitMQ, то необходимо убедиться, что в файле BPMSoft.WebHost.dll.config установлена настройка operatingMode="Auto":

<serviceBus incomingQueueName="bpmstudio_main" defaultSendAddress="exchange:bpmstudio_exchange" operatingMode="Auto" messageProcessingThreadsCount="10" />

При использовании настройки operatingMode="InMemory" вместо внешнего брокера RabbitMQ очередь сообщений будет храниться в памяти приложения.

Примечание. Если требуется, чтобы система работала по протоколу http, то измените в файле BPMSoft.WebHost.dll.config значение атрибута «CookiesSameSiteMode» на «Lax». Обратите внимание, что в таком случае мобильное приложение не будет работать.

Настройка сайта и пула приложения для системы в IIS

Для работы BPMSoft требуется в Internet Information Services (IIS) создать и настроить соответствующий веб-сайт и пул приложения.

Шаги для создания сайта при развертывании системы:

  1. Откройте IIS. В контекстном меню секции «Sites» выберите «Add Website».
  2. В появившемся окне введите «Site name», выберите путь к корневой директории системы, введите «Port» и «Host name», где будет располагаться приложение.

Рисунок 7 — Добавление сайта в IIS

Рисунок 7 — Добавление сайта в IIS

  1. Нажмите «OK».
  2. Получите цифровой сертификат в формате «.pfx».
Примечание. Если используется самоподписанный сертификат, то подключение мобильного приложения к системе будет невозможно из-за ограничений политики безопасности.
  1. В секции сервера выберите «Server Certificates».
  2. Выберите «Import». В появившемся окне выберите файл сертификата. Укажите пароль и хранилищем сертификатов выберите «Web Hosting».

Рисунок 8 — Окно «Import Certificate»

Рисунок 8 — Окно Import Certificate

  1. Нажмите «ОК».
  2. Перейдите в секцию сайта приложения. Выберите «Bindings».
  3. В появившемся окне нажмите «Add». Выберите «Type» — «https», введите «Host name» и выберите добавленный ранее сертификат.

Рисунок 9 — Добавление «Site Bindings»

Рисунок 9 — Добавление Site Bindings

  1. Нажмите «ОК».
Для пользователя, от имени которого будет запущен пул приложения, требуется предоставить права для чтения, редактирования и удаления вложенных, в корневую директорию, файлов и других директорий системы.
Пул приложения должен быть запущен под пользователем Windows, профиль которого не является временным.

По умолчанию пул приложения запускается от учетной записи «ApplicationPoolIdentity».

Рисунок 10 — Пулы приложений

Рисунок 10 — Пулы приложений

При запуске от учетной записи «ApplicationPoolIdentity» необходимо выдать доступ на корневую папку системы BPMSoft для группы IIS_IUSRS, как показано на рисунке ниже.

Рисунок 11 — Выдача прав на корневую папку системы BPMSoft

Рисунок 11 — Выдача прав на корневую папку системы BPMSoft

С точки зрения безопасности рекомендуется запускать каждое IIS приложение под отдельным сервисным пользователем. Реализовать это можно, например, с помощью локальной учетной записи.

Чтобы назначить пользователя пулу приложений IIS, выполните следующие шаги:

  1. Откройте IIS Manager (inetmgr.exe).
  2. Перейдите на вкладку «Пулы приложений» (Application Pools).
  3. Нажмите правой кнопкой мыши на нужный пул и выберите «Дополнительные настройки» (Advanced Settings).
  4. В разделе «Процесс-модель» (Process Model) найдите строку «Удостоверение» (Identity).
  5. Выберите «Удостоверение» (Identity) и нажмите на кнопку «...» (...).

Рисунок 12 — Настройки в разделе «Process Model»

Рисунок 12 — Настройки в разделе «Process Model»

  1. В открывшемся окне выберите опцию «Custom account» и нажмите «Set».
  2. Введите логин (bpmsoft) и пароль созданного пользователя и нажмите ОК.

Рисунок 13 — Настройка логина и пароля созданного пользователя

Рисунок 13 — Настройка логина и пароля созданного пользователя

После сохранения пользователь, от которого запускается пул приложения, будет изменен.

Рисунок 14 — Измененное значение параметра Identity

Рисунок 14 — Измененное значение параметра Identity

  1. Предоставьте необходимые права доступа к директории (изменение, чтение и выполнение, список содержимого папки, чтение, запись) для локального пользователя bpmsoft без полного доступа.

Рисунок 15 — Выдача прав на корневую папку системы BPMSoft

Рисунок 15 — Выдача прав на корневую папку системы BPMSoft

  1. После изменений перезапустите пул и приложение в IIS. Это обеспечит безопасный запуск сайта под новым пользователем без использования ApplicationPoolIdentity.

Шаги для настройки пула приложения при развертывании системы:

  1. Выберите секцию «Applications Pools» и откройте созданный пул.
  2. В появившемся окне проверьте, что все пункты аналогичны представленным на рисунке ниже.

Рисунок 16 — Проверка полей пула в IIS

Рисунок 16 — Проверка полей пула в IIS

  1. В секции web-сервера выберите «ISAPI and CGI Restrictions» и проверьте, что выбранная версия «ASP.Net» имеет статус «Allowed».

Рисунок 17 — Проверка версии «ASP.Net» в «ISAPI and CGI Restrictions»

Рисунок 17 — Проверка версии ASP.Net в ISAPI and CGI Restrictions

  1. Перейдите в секцию «Advanced Settings», далее в блок «Process Model» и проверьте, что для свойства «Load User Profile» («Загрузить профиль пользователя») установлено значение «true». Включение загрузки профиля необходимо для того, чтобы пользователь приложения (в частности, учетные записи MSA) имел возможность использовать свое домашнее окружение. В таком случае создаются папки по пути C:\Users\<MyMsaAccount>\AppData\Roaming\npm и C:\Users\<MyMsaAccount>\AppData\Roaming\npm-cache.

Рисунок 18 — Проверка загрузки профиля пользователя («Load User Profile»)

Рисунок 18 — Проверка загрузки профиля пользователя (Load User Profile)

В противном случае, если для свойства «Load User Profile» установлено значение «false», то процесс попытается создать данные папки по пути C:\Windows\System32\config\systemprofile\AppData\Roaming\ и может возникнуть ошибка доступа. В качестве альтернативного способа необходимо раздать права на пользователя пула IIS для папки C:\Windows\System32\config\systemprofile\AppData\Roaming.

  1. В секции web-сервера выберите «Handler Mappings». Нажмите «Edit Feature Permissions» и проверьте, что в появившемся окне установлены все признаки.

Рисунок 19 — Проверка полей в «Edit Feature Permissions»

Рисунок 19 — Проверка полей в Edit Feature Permissions

  1. В секции сайта выберите «Authentication». Убедитесь, что для «Windows Authentication» установлено значение «Enabled».
Примечание. После включения параметра «Windows Authentication» необходимо выполнить перезагрузку сайта.
Примечание. Если использование Windows-аутентификации не требуется, то можно не выполнять пункт 6. Тогда потребуется в конфигурационном файле BPMSoft.WebHost.dll.config изменить значение параметра Feature-UseNetcoreDomainAuth на false.
<add key="Feature-UseNetcoreDomainAuth" value="false"/>

Рисунок 20 — Проверка полей в «Authentication» в секции сайта

Рисунок 20 — Проверка полей в «Authentication» в секции сайта

  1. В секции web-сервера выберите «MIME Types». Проверьте, что в списке присутствуют значения «.svg» и «.json». Если такие значение отсутствуют, то нажмите «Add…» и добавьте «.svg» (MIME type: image/svg+xml) и «.json» (MIME type: application/json).

Рисунок 21 — Добавление «MIME Types»

Рисунок 21 — Добавление MIME Types

  1. Перейдите в секцию созданного сайта и перезапустите его с помощью кнопки «Restart».
  2. Откройте сайт, перейдя в браузере по его адресу или с помощью кнопки «Browse» в секции сайта.
При первом входе потребуется сменить пароль системного пользователя. Подробнее: Смена пароля при первом входе.
Примечание. Чтобы ФИО отображалось корректно в отдельных колонках, необходимо в системной настройке «Порядок ФИО» («ContactFieldConverter») изменить значение по умолчанию на «Last name, First name [Middle name]». Подробнее: Страница системной настройки.
Примечание. Для увеличения максимальной длинны наименования объектов в системе, в файле «BPMSoft.WebHost.dll.config», который находится в корневой директории системы, измените значение атрибута «maxEntitySchemaNameLength» (значение по умолчанию «13»).

Настройка сайта для системы с помощью NSSM

Перед данной настройкой выполните действия из разделов Настройка ConnectionStrings.config и Настройка сайта и пула приложения для системы в IIS.

Для настройки BPMSoft с помощью NSSM требуется установить .NET SDK 8 и NSSM.

Настройте сервис для запуска приложений с помощью команд:

nssm install BPMSoft "C:\Program Files\dotnet\dotnet.exe"
nssm set BPMSoft AppParameters [Путь к директории BPMSoft]\BPMSoft.WebHost.dll
nssm set BPMSoft AppDirectory [Путь к директории BPMSoft]
nssm start BPMSoft

Рекомендуем изучить

Дополнительные настройки после развертывания BPMSoft на Windows

Материал был полезен для вас?
Запросить демонстрацию
Купить приложение
Заявка на индивидуальный тренинг
Заявка на обучение в формате тренинга
Заявка на консультацию по обучению
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Вебинар: 10 ноября в 11:00
Разберём, как повысить эффективность управления ИТ-инфраструктурой с помощью ITSM и Service Desk. Обсудим, как сократить операционные затраты и ускорить бизнес-процессы в 2 раза, на реальном опыте ПАО «Трубная металлургическая компания» (ТМК) и Группы Rubytech.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Регистрация на мероприятие
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Предпочитаемый способ связи
Оставить заявку
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Рассчитать стоимость
Предпочитаемый способ связи
Лучшие CRM-системы в России: выводы Фонда «Сколково»
Задать вопрос
Предпочитаемый способ связи
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Заявка на онлайн-консультации по BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Стать образовательным партнёром
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Внимание!
Обнаружена ошибка.
Вы подписаны на новостную рассылку от BPMSoft.
Вы подписаны на новостную рассылку от BPMSoft.
MAX Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее