...
Блок кода | ||||
---|---|---|---|---|
| ||||
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) } ] |
В файле external_apps.conf (applications\external_apps\external_apps.conf) задаются только названия кнопок, адреса запуска скриптов, а также дополнительный параметр остановки кассового модуля. Непосредственно скрипты запуска внешних приложений располагаются на самой кассе.
На кассе можно пользоваться следующими горячими клавишами:
- Right ALT+TAB – переключение между открытыми приложениями;
- Right ALT+F4 – закрытие активного приложения в фокусе;
- Right Alt-Space – открытие пользовательского меню для активного окна.
- Список остальных горячих клавиш можно найти здесь.
Настройка и запуск протокола RDP (для доступа к серверу Windows)
Успешный выход во внешние системы на базе ОС Windows, осуществляемый через протокол RDP, требует выполнения трех обязательных условий:
1. На сервере Windows должен быть настроен доступ по RDP. Осуществление этих настроек полностью возлагается на пользователя и в данном руководстве не описано.
...
Блок кода | ||||
---|---|---|---|---|
| ||||
{ name : "FreeRDP", # НаименованиеНазвание кнопки вона Внешнихэкране приложениях"Внешние приложения" command : """start_freerdp.sh""" # Название скрипта в папке /home/ukm5/mint/bin/ext_apps/ на кассе isExclusive = true # Запуск скрипта с выключением кассового модуля и последующим его запуском } |
...
В файле external_apps.conf (applications\external_apps\external_apps.conf) на кассовом сервере задается только наименование кнопки в разделе кассового меню Внешние приложения, а также название скрипта запуска приложения, который будет размещен в папке / \home/\ukm5/\mint/\bin/\ext_apps/\ непосредственно на кассе. Кроме того, здесь же указывается дополнительный параметр остановки кассового модуля (когда запуск скрипта производится с выключением кассового модуля и последующим его запуском вновь).
...
Лог запуска пишется в файл /home/ukm5/mint/bin/logs/application.log. Живет на касссе
работа и ошибки самого скрипта – в скрипта будет фиксироваться в файле application.log (home\ukm5\mint\bin\logs\application.log), расположенном на кассе. Работа скрипта и возможные ошибки в ее ходе будут отражены в файле service-имя_скрипта.log.
...
(home\ukm5\mint\bin\logs\service-имя_скрипта.log), также расположенному на кассе.
Якорь | ||||
---|---|---|---|---|
|
Непосредственно сам файл скрипта необходимо разместить на кассе в папке \home\ukm5\mint\bin\ext_apps\ в файле формата BASH или SHELL, с правами запуска 766. Написание скриптов запуска внешних приложений полностью возлагается на пользователя. Все внешние скрипты должны располагаться в папке
В настройках на кассе необходимо скопировать скрипт запуска RDP start_freerdp.sh и сделать из него свой, подобный, например:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
#!/bin/bash MINT_DIR="/home/ukm5/mint/bin |
...
Функция (необходимо расположить в начале скрипта):
result()
{
if [ $? -ne 0 ]; then
echo "ERROR"
exit 1
fi
}
result_with_restart()
{
if [ $? -ne 0 ]; then
echo "ERROR"
...
exit 1
fi
}
Эту часть нужно разместить в конце скрипта:
result_with_restart
echo "==== UI started"
echo
echo "==== starting mint service"
systemctl start mint
result
echo "==== mint service started"
...
exit 0
Чтобы работа и ошибки самого скрипта отразились в логе, надо добавить в начало скрипта:
MINT_DIR="/home/ukm5/mint/bin"
NAME=$(tail $MINT_DIR/.ext_app)
LOGFILE=$MINT_DIR/logs/service-$NAME.log
И у каждой команды, от к-рой требуется вывод сообщения в лог, добавить >> $LOGFILE.
Логи пишутся в папку /home/ukm5/mint/bin/logs/: лог запуска скрипта пишется в application.log, работа и ошибки самого скрипта – в service-имя_скрипта.log.
Горячие клавиши:
- Right ALT+TAB – переключение между открытыми приложениями;
- Right ALT+F4 – закрытие активного приложения в фокусе.
- Остальные - в офиц. док-ции Openbox
...
В настройках на самой кассе необходимо скопировать скрипт запуска RDP start_freerdp.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-адрес Папкаили исполняемыхдоменное файловимя УКМ5подключения кассыRDP NAME=$(tail $MINT_DIR/.ext_app)PORT='3389' # Порт Имяподключения скриптаRDP LOGFILE=$MINT_DIR/logs/service-$NAME.logRDPFILE='/home/ukm5/mint/bin/ext_apps/1c.rdp' # Файл подключения RDP с #Windows Лог файл LOGIN='Admin'RDP-фермы #COM_01='/serial:COM1,/dev/ttyS0,Serial,permissive' # Пример проброса COM-порта #COM_07='/serial:COM7,/dev/ttyACM0,Serial,permissive' # Пример проброса USB-COM-порта (работает на основании драйвера в Ubuntu, сканер работает плохо) COM_1='' # Логин пользователя Windows PASSWORD='One1' # Пароль пользователя Windows IP_ADDRCOM-порты COM_2='' # IP адрес# или доменное имя подключения RDP PORT COM_3='3389' # Порт подключения# RDP RDPFILE='/home/ukm5/mint/bin/ext_apps/1c.rdp COM_4='' # Файл подключения RDP с Windows RDP фермы #COM_01='/serial:COM1,/dev/ttyS0,Serial,permissive' # Пример проброса COM порта #COM_07='/serial:COM7,/dev/ttyACM0,Serial,permissive' # Пример проброса USB-COM порта (работает на основании драйвера в ubuntu, сканер работает# плохо) COM_15='' # COM порты COM_26='' # COM_37='' # COM_48='' # COM_59='' # COM#PRINTER_600='/printer' # PRINTER='' # COM_7='' # Принтер result() # COM_8='' # Функция выхода из скрипта при критической ошибке запуска { if [ $? -ne 0 ]; then echo "ERROR" # COM_9='' exit 1 fi } result_with_restart() # Функция перезапуска кассового модуля # #PRINTER_00='/printer' при завершении скрипта с ошибкой { if [ $? -ne 0 ]; then echo "ERROR" echo echo "==== starting mint #service" PRINTER='' systemctl start mint result echo "==== mint service started" echo echo "==== starting UI" export DISPLAY=:0 # Принтер su ukm5 result() -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" if [ $? -ne 0 ]; then echo "ERROR" exit 1 # fiОстанавливаем }mint result_with_restart() systemctl stop mint result_with_restart echo "==== mint service stopped" echo echo "==== starting freerdp" # Функция перезапуска кассового модуля при завершении скрипта с ошибкой { if# [Запускаем $?RDP -neexport 0 ]; then echo "ERROR" echo echo "==== starting mint service" systemctl start mint result 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 "==== mint serviceUI started" echo echo "==== starting mint UIservice" export DISPLAY=:0 su ukm5 -c "$MINT_DIR/start_chrome.sh >/dev/null 2>&1 &" # Запускаем echo "==== UI started" exit 1 fi } mint после выхода/дисконнекта RDP systemctl start mint result echo "==== mint service started" echo echo "==== $0 startedcompleted $(date) ===========" # Запуск RDP echo echo "==== stopping mint service" # Останавливаем mint systemctl stop mintexit 0 |
Написание скриптов запуска внешних приложений полностью возлагается на пользователя. Если после завершения работы кассового модуля и завершения работы пользовательского скрипта необходимо вновь возобновить работу кассового модуля, то в пользовательском скрипте должны быть прописаны следующие команды:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
result() { if [ $? -ne 0 ]; then echo "ERROR" exit 1 fi } result_with_restart echo "==== mint service stopped() { if [ $? -ne 0 ]; then echo "ERROR" echo echo "==== starting freerdp" # Запускаем RDPmint service" systemctl start mint result echo "==== mint service started" echo echo "==== starting UI" 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_restartsu ukm5 -c "$MINT_DIR/start_chrome.sh >/dev/null 2>&1 &" echo "==== UI started" exit 1 fi } |
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
result_with_restart echo "==== UI started" echo echo "==== starting mint service" systemctl start mint result echo "==== mint UIservice started" echo echo "==== $0 starting mint service" # Запускаем mint после выхода/дисконнекта RDP systemctl start mint result echo "==== mint service started" echo echo "==== $0 completed $(date) =========" exit 0completed $(date) =========" exit 0 Чтобы работа и ошибки самого скрипта отразились в логе, надо добавить в начало скрипта: MINT_DIR="/home/ukm5/mint/bin" NAME=$(tail $MINT_DIR/.ext_app) LOGFILE=$MINT_DIR/logs/service-$NAME.log |
Также, в строке каждой команды, от которой требуется вывод сообщения в лог, необходимо добавить запись >> $LOGFILE.
Логи пишутся в папку /home/ukm5/mint/bin/logs/, расположенную на кассе: лог запуска скрипта фиксируется в файле application.log; работа и ошибки самого скрипта – в файле service-имя_скрипта.log.
Приложение xfreerdp позволяет подключаться по разным параметрам, ; также есть возможность использовать файл формата .rdp.
Минимальный состав параметров для подключения к RDP-ферме | |
---|---|
Количество бит на цвет – 16 или 32 | session bpp:i:32 |
Порт подключения к серверу RDP | server port:i:3389 |
Включить сглаживание скриптов | allow font smoothing:i:1 |
IP- или доменный адрес сервера RDP | full address:s:example.domain.ru |
...
Руководство по работе с 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.