Описание
В меню кассы доступен раздел Внешние приложения, позволяющий прямо из интерфейса кассы осуществлять запуск разнообразных внешних приложений и пользовательских скриптов.
Внимание! Выход во внешние приложения доступен только для версии кассы не ниже 1.28.1!
Опция сutecom позволяет быстро и удобно произвести диагностику COM-портов без необходимости использования консоли.
Xterm обеспечивает доступ к кассовой клавиатуре, который может пригодиться в случае отсутствия или отказа основной.
Через RDP можно предоставить доступ к удаленному компьютеру, работающему под управлением Windows:
Клавиатурная касса | Touch-касса |
---|---|
Настройка
Настройки выхода во внешние приложения осуществляются в файле /home/ukm5/mint/bin/conf/applications/external_apps/external_apps.conf, права - 644, размещенном непосредственно на кассе. В данном файле хранятся названия кнопок и скриптов для запуска приложений, а также их параметры.
launcherPossition = 1400 # Очередность расположения кнопки на экране name = "Внешние приложения" # Надпись на кнопке (может быть длиной от 1 до 30 символов) app_list : [ { name : "cutecom", # Название кнопки на экране "Внешние приложения" command : """start_cutecom.sh""" # Полное имя скрипта с его расположением (при параметре isExclusive = true указываем только название скрипта в папке /home/ukm5/mint/bin/ext_apps/) isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском (по умолчанию - false, если отсутствует - тоже false) } { name : "xterm", # Название кнопки на экране "Внешние приложения" command : """/home/ukm5/mint/bin/ext_apps/start_xterm.sh""" # Полное имя скрипта с его расположением } { name : "freerdp", # Название кнопки на экране "Внешние приложения" command : """start_xterm.sh""" # Полное имя скрипта с его расположением (при параметре isExclusive = true указываем только название скрипта в папке /home/ukm5/mint/bin/ext_apps/) isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском (по умолчанию - false, если отсутствует - тоже false) } ]
Настройка и запуск протокола RDP
Успешный выход во внешние системы на базе Windows, осуществляемый через протокол RDP, требует выполнения трех обязательных условий:
1. Выход во внешние приложения должен быть разрешен настройками кассового сервера.
2. На кассе должны быть установлены необходимые драйверы.
3. На сервере Windows должны быть в наличии нужные драйверы.
Настройки на кассовом сервере
На кассовом сервере по адресу: Магазин – Типы касс, где нужно выбрать тип кассы и нажать кнопку Настройки:
В появившемся иерархическом древе необходимо найти конфигурационный файл external_apps.conf (applications\external_apps\external_apps.conf), где в список приложений app_list нужно добавить следующую конфигурацию:
{ name : "FreeRDP", # Наименование кнопки во Внешних приложениях command : """start_freerdp.sh""" # Название скрипта в папке /home/ukm5/mint/bin/ext_apps/ на кассе isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском }
Например:
Имя скрипта start_freerdp.sh следует заменить на другое, чтобы в ходе будущих обновлений этот скрипт-пример не затёрся.
Лог запуска пишется в файл /home/ukm5/mint/bin/logs/application.log. - ГДЕ ОН ЖИВЕТ?
Пример удачного запуска скрипта RDP:
18:24:05.514 DEBUG [WebView ] - received handled message ClientMessage({"event":"SelectExternalApp","data":{"id":2}}) from Actor[akka://MainActorSystem/deadLetters] [[ru.servplus.pos.webview.WebView]] 18:24:05.514 DEBUG [WebView ] - Входящее сообщение от клиента. [[ru.servplus.pos.webview.WebView]] 18:24:05.514 DEBUG [AppBuilder ] - received handled message RestartLogoutTimer from Actor[akka://MainActorSystem/user/View#-641267022] [[ru.servplus.pos.appbuilder.AppBuilder]] 18:24:05.514 DEBUG [ExternalAppsUI ] - received handled message SpecificAppMessage(SelectExternalApp,{"id":2}) from Actor[akka://MainActorSystem/user/View#-641267022] [[ru.servplus.pos.external_apps.ExternalAppsUI]] 18:24:05.519 DEBUG [ExternalApps ] - processing Event(SelectExternalApp(2),Data(ArrayBuffer(ExtApp(0,Cutecom,start_cutecom.sh,true), ExtApp(1,Xterm,/home/ukm5/mint/bin/ext_apps/start_xterm.sh,false), ExtApp(2,FreeRDP,start_freerdp.sh,true)),Cfg(ArrayBuffer(ExternalAppCfg(Cutecom,start_cutecom.sh,true), ExternalAppCfg(Xterm,/home/ukm5/mint/bin/ext_apps/start_xterm.sh,false), ExternalAppCfg(FreeRDP,start_freerdp.sh,true)),/home/ukm5/mint/bin/.ext_app),ru.servplus.pos.external_apps.DefaultDependencyFactory@13f861f)) from Actor[akka://MainActorSystem/user/External_apps_UI#-1988751806] in state Idle [[ru.servplus.pos.external_apps.ExternalApps]] 18:24:05.519 DEBUG [ExternalApps ] - Пользователь выбрал внешнее приложение с id: 2 [[ru.servplus.pos.external_apps.ExternalApps]] 18:24:05.522 DEBUG [ExternalApps ] - Запуск команды: start_freerdp.sh [[ru.servplus.pos.external_apps.ExternalApps]] 18:24:05.526 DEBUG [ExternalAppsUI ] - received handled message Success from Actor[akka://MainActorSystem/user/External_apps_BL#1684747269] [[ru.servplus.pos.external_apps.ExternalAppsUI]] 18:24:05.526 DEBUG [WebView ] - received handled message Success from Actor[akka://MainActorSystem/user/External_apps_UI#-1988751806] [[ru.servplus.pos.webview.WebView]] 18:24:05.527 DEBUG [WebView$ ] - Сообщение для клиента: {"event":"Success","data":null} [[ru.servplus.pos.webview.WebView$]]
Настройки на кассе
В настройках на самой кассе необходимо отредактировать скрипт запуска RDP start_freerdp_example.sh:
#!/bin/bash MINT_DIR="/home/ukm5/mint/bin" # Папка исполняемых файлов УКМ5 кассы NAME=$(tail $MINT_DIR/.ext_app) # Имя скрипта LOGFILE=$MINT_DIR/logs/service-$NAME.log # Лог файл LOGIN='Admin' # Логин пользователя Windows PASSWORD='One1' # Пароль пользователя Windows IP_ADDR='' # IP адрес или доменное имя подключения RDP PORT='3389' # Порт подключения RDP RDPFILE='/home/ukm5/mint/bin/ext_apps/1c.rdp' # Файл подключения RDP с Windows RDP фермы #COM_01='/serial:COM1,/dev/ttyS0,Serial,permissive' # Пример проброса COM порта #COM_07='/serial:COM7,/dev/ttyACM0,Serial,permissive' # Пример проброса USB-COM порта (работает на основании драйвера в ubuntu, сканер работает плохо) COM_1='' # COM порты COM_2='' # COM_3='' # COM_4='' # COM_5='' # COM_6='' # COM_7='' # COM_8='' # COM_9='' # #PRINTER_00='/printer' # PRINTER='' # Принтер result() # Функция выхода из скрипта при критической ошибке запуска { if [ $? -ne 0 ]; then echo "ERROR" exit 1 fi } result_with_restart() # Функция перезапуска кассового модуля при завершении скрипта с ошибкой { if [ $? -ne 0 ]; then echo "ERROR" echo echo "==== starting mint service" systemctl start mint result echo "==== mint service started" echo echo "==== starting UI" export DISPLAY=:0 su ukm5 -c "$MINT_DIR/start_chrome.sh >/dev/null 2>&1 &" echo "==== UI started" exit 1 fi } echo "==== $0 started $(date) ===========" # Запуск RDP echo echo "==== stopping mint service" # Останавливаем mint systemctl stop mint result_with_restart echo "==== mint service stopped" echo echo "==== starting freerdp" # Запускаем RDP export DISPLAY=:0 #/opt/freerdp-nightly/bin/xfreerdp /u:$LOGIN /p:$PASSWORD /v:$IP_ADDR:$PORT /cert-ignore $COM_1 $COM_2 $COM_3 $COM_4 $COM_5 $COM_6 $COM_7 $COM_8 $COM_9 $PRINTER /multitouch /f +compression >> $LOGFILE /opt/freerdp-nightly/bin/xfreerdp $RDPFILE /u:$LOGIN /p:$PASSWORD /cert-ignore >> $LOGFILE #без multitouch - 1С с ними не работает result_with_restart echo "==== UI started" echo echo "==== starting mint service" # Запускаем mint после выхода/дисконнекта RDP systemctl start mint result echo "==== mint service started" echo echo "==== $0 completed $(date) =========" exit 0
ЧТО ЭТО? xfreerdp позволяет подключаться по разным параметрам, также есть возможность использовать файл формата .rdp.
Минимальный состав параметров для подключения к RDP-ферме | |
---|---|
Количество бит на цвет – 16 или 32 | session bpp:i:32 |
Порт подключения к серверу RDP | server port:i:3389 |
Включить сглаживание скриптов | allow font smoothing:i:1 |
IP- или доменный адрес сервера RDP | full address:s:rdcb-rzhavki.apkholding.ru |
Минимальный состав параметров для подключения к RDP RemoteApplication-ферме | |
---|---|
Количество бит на цвет - 16 или 32 | session bpp:i:32 |
Включить режим открытия удалённого приложения | remoteapplicationmode:i:1 |
Порт подключения к серверу RDP | server port:i:3389 |
Включить сглаживание скриптов | allow font smoothing:i:1 |
IP- или доменный адрес сервера RDP | full address:s:rdcb-rzhavki.apkholding.ru |
Полный адрес расположения удалённого приложения | remoteapplicationprogram:s:C:\Program Files (x86)\1cv8\common\1cestart.exe |
Имя удалённого приложения | remoteapplicationname:s:1C V8_DEV_PASHAEV_R_FL_UT_UKM - НОРМАЛЬНО В ОТКРЫТОМ ДОСТУПЕ? |
Строка запуска удалённого приложения с параметрами | remoteapplicationcmdline:s:ENTERPRISE /S"DEV-16-AS-001\V8_DEV_PASHAEV_R_FL_UT_UKM" /N"IntKassa" /P"kassa82" /RunModeOrdinaryApplication |
Название коллекции удалённых приложений | loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.RDS-Rzhavki-KKM |
Свежую версию xfreerdp можно взять на сайте:
https://ci.freerdp.com/job/freerdp-nightly-binaries/
Руководство по работе с xfreerdp и описание всех параметров располагается здесь:
https://wiki.yola.ru/_media/freerdp/freerdp-user-manual.pdf
Описание всех параметров файла формата .rdp можно найти по адресу:
https://docs.microsoft.com/ru-ru/windows-server/remote/remote-desktop-services/clients/rdp-files
Настройки на сервере Windows во внешней системе
???