Skip to content

Commit

Permalink
Merge branch 'infina15:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
infina15 authored Feb 8, 2024
2 parents 5e43b0d + 564782d commit 9e989ab
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 8 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![Тестирование](https://github.com/infina15/oproxy/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/infina15/oproxy/actions/workflows/test.yml)
## oproxy - TCP прокси-сервер хранилища конфигураций 1С

Написан на [OneScript](https://github.com/EvilBeaver/OneScript). Вдохновлен [winow](https://github.com/autumn-library/winow)
Expand Down Expand Up @@ -98,6 +99,10 @@ oproxy init
### Запуск сервера в режиме службы (только для Windows)
В дистрибутиве есть менеджер служб [NSSM](https://nssm.cc/) под 64-битную Windows. Располагается в features\nssm64_oproxy.exe. На него настроены команды создания/удаления/прочие действия со службой прокси-сервера.

### Параметр --daemon-name

Все команды по работе с демоном имеют параметр необязательный параметр --daemon-name (по умолчанию OproxyDaemon). С помощью него можно указать свое имя демона, отличное от значения по умолчанию. Данный параметр используется, когда нужно запустить несколько служб одновременно (например на разные версии хранилища).

Команда
```
oproxy create-daemon
Expand Down Expand Up @@ -181,7 +186,7 @@ oproxy start --proxy-port 2555 --storage-server localhost --storage-port 2544 --
HTTPS - тоже не забота прокси, настраивается в веб-сервере.

### Кроссплатформенность и производительность
Протестировано на Windows Server с 1С 8.3.22.2143 и OneScript 1.8.4.5. Потребление ОЗУ ~50-100 МБ, иногда может вырастать чуть больше на тяжелых операциях, но вскоре сборщик мусора эту память освободит. ERP и бухгалтерия работают с той же скоростью, как и напрямую по tcp. Проверено создание хранилища, подключение, отключение, сравнение версий в разных вариациях, выгрузка файла CF из версии хранилища, захват и помещение объектов конфигурации, в том числе и глобальные, и прочее-прочее-прочее...
Протестировано на Windows Server с 1С 8.3.22.2143 и OneScript 1.9.0. Потребление ОЗУ ~50-100 МБ, иногда может вырастать чуть больше на тяжелых операциях, но вскоре сборщик мусора эту память освободит. ERP и бухгалтерия работают с той же скоростью, как и напрямую по tcp. Проверено создание хранилища, подключение, отключение, сравнение версий в разных вариациях, выгрузка файла CF из версии хранилища, захват и помещение объектов конфигурации, в том числе и глобальные, и прочее-прочее-прочее...

Про Linux и MacOS не знаю - буду рад отзывам!

Expand Down
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


Описание.Имя("oproxy")
.Версия("0.0.4")
.Версия("0.0.5")
.Автор("Юрий Камисов")
.АдресАвтора("https://github.com/infina15")
.Описание("TCP прокси-сервер хранилища конфигураций 1С")
Expand Down
7 changes: 6 additions & 1 deletion src/Классы/cli_ЗапускДемона.os
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
&КомандаПриложения(Имя = "start-daemon", Описание = "Запуск службы Windows под названием OproxyDaemon, созданной с помощью команды create-daemon")
&Опция(Имя = "dn daemon-name", Описание = "(необязательный) кастомное имя демона, в случае когда надо настроить несколько демонов. По умолчанию OproxyDaemon.")
&ТСтрока
Перем ИмяДемона Экспорт;

&КомандаПриложения(Имя = "start-daemon", Описание = "Запуск службы Windows под названием OproxyDaemon (или кастомным), созданной с помощью команды create-daemon")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ВыполнениеКоманды
Процедура ЗапуститьДемона() Экспорт
РаботаСДемоном.ИмяДемона = ИмяДемона;
РаботаСДемоном.Запустить();
КонецПроцедуры
7 changes: 6 additions & 1 deletion src/Классы/cli_ОстановкаДемона.os
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
&КомандаПриложения(Имя = "stop-daemon", Описание = "Остановка службы Windows под названием OproxyDaemon, созданной с помощью команды create-daemon")
&Опция(Имя = "dn daemon-name", Описание = "(необязательный) кастомное имя демона, в случае когда надо настроить несколько демонов. По умолчанию OproxyDaemon.")
&ТСтрока
Перем ИмяДемона Экспорт;

&КомандаПриложения(Имя = "stop-daemon", Описание = "Остановка службы Windows под названием OproxyDaemon (или кастомным), созданной с помощью команды create-daemon")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ВыполнениеКоманды
Процедура ОстановитьДемона() Экспорт
РаботаСДемоном.ИмяДемона = ИмяДемона;
РаботаСДемоном.Остановить();
КонецПроцедуры
7 changes: 6 additions & 1 deletion src/Классы/cli_ПерезапускДемона.os
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
&КомандаПриложения(Имя = "restart-daemon", Описание = "Перезапуск службы Windows под названием OproxyDaemon, созданной с помощью команды create-daemon")
&Опция(Имя = "dn daemon-name", Описание = "(необязательный) кастомное имя демона, в случае когда надо настроить несколько демонов. По умолчанию OproxyDaemon.")
&ТСтрока
Перем ИмяДемона Экспорт;

&КомандаПриложения(Имя = "restart-daemon", Описание = "Перезапуск службы Windows под названием OproxyDaemon (или кастомным), созданной с помощью команды create-daemon")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ВыполнениеКоманды
Процедура ПерезапуститьДемона() Экспорт
РаботаСДемоном.ИмяДемона = ИмяДемона;
РаботаСДемоном.Перезапустить();
КонецПроцедуры
7 changes: 6 additions & 1 deletion src/Классы/cli_СозданиеДемона.os
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
&Обязательный
Перем ПутьКФайлуПроверок Экспорт;

&КомандаПриложения(Имя = "cd create-daemon", Описание = "Создание и запуск службы Windows под названием OproxyDaemon. Служба будет запускать прокси с заданными параметрами")
&Опция(Имя = "dn daemon-name", Описание = "(необязательный) кастомное имя демона, в случае когда надо настроить несколько демонов. По умолчанию OproxyDaemon.")
&ТСтрока
Перем ИмяДемона Экспорт;

&КомандаПриложения(Имя = "cd create-daemon", Описание = "Создание и запуск службы Windows под названием OproxyDaemon (или кастомным). Служба будет запускать прокси с заданными параметрами")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

Expand All @@ -30,5 +34,6 @@
АдресСервера,
ПортСервера,
ПутьКФайлуПроверок);
РаботаСДемоном.ИмяДемона = ИмяДемона;
РаботаСДемоном.СоздатьИЗапустить(СтрокаПараметров);
КонецПроцедуры
7 changes: 6 additions & 1 deletion src/Классы/cli_УдалитьДемона.os
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
&КомандаПриложения(Имя = "rd remove-daemon", Описание = "Остановка и удаление службы Windows под названием OproxyDaemon, созданной с помощью команды create-daemon")
&Опция(Имя = "dn daemon-name", Описание = "(необязательный) кастомное имя демона, в случае когда надо настроить несколько демонов. По умолчанию OproxyDaemon.")
&ТСтрока
Перем ИмяДемона Экспорт;

&КомандаПриложения(Имя = "rd remove-daemon", Описание = "Остановка и удаление службы Windows под названием OproxyDaemon (или кастомным), созданной с помощью команды create-daemon")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

&ВыполнениеКоманды
Процедура УдалитьДемона() Экспорт
РаботаСДемоном.ИмяДемона = ИмяДемона;
РаботаСДемоном.Удалить();
КонецПроцедуры
12 changes: 11 additions & 1 deletion src/Модули/РаботаСДемоном.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
#Использовать 1commands

Перем ИмяДемона Экспорт;

Функция ИмяДемона() Экспорт
Возврат "OproxyDaemon";
Результат = "";
Если ЗначениеЗаполнено(ИмяДемона) Тогда
Результат = ИмяДемона;
Иначе
Результат = "OproxyDaemon";
ИмяДемона = Результат;
КонецЕсли;
Возврат Результат;
КонецФункции

Функция ПутьКСервисМенеджеру() Экспорт
Expand Down

0 comments on commit 9e989ab

Please sign in to comment.