Pull to refresh

Поднятие хоста инкассации Ликард на Ubuntu

Reading time 8 min
Views 1.5K
Хост инкассации Ликард — это «узкоспециализированное ПО, не имеющее аналогов для Linux, непригодное.....», требовательное к самым разнообразным мелочам. Не достаточно просто поднять XP на виртуальной машине, чтобы можно было вернуть потерянные часы и ночи простоя системы из-за включенной голой небезопасной Windows; держать нечто отдельное для выполнения этих задач в своём тесном home-office, населённом малолетними диверсантами, не приемлимо. Занимательное действо, разыгравшееся под катом как-бы говорит нам о степени прогресса в развитии и повышении дружественности дистрибутива за последний год, и высокой пригодности его для решения подобных задач…



… Не мог же я один наделать столько шума?" (с) Пятачок

1. Что такое Ликард?


Кого бы мне уронить?

Официальную версию можно почерпнуть здесь
Кратко: сеть POS-терминалов на АЗС в странах СНГ и Восточной Европы, развёрнутая для обслуживания фирменных EMV-карт Ликард. Клиенты компании — по большей части крупные грузоперевозчики (дальнобойщики) и нефтегазовый сектор. Терминалы работают в offline-режиме, обмениваясь данными с центрами сбора и передачи данных компании несколько раз в сутки по каналу GPRS, Ethernet либо проводному телефону. Процесс обмена информацией POS-терминала и ЦСиПД — называется инкассацией, а ЦСиПД — хостами инкассации.

2. Определение проблем



Почти везде хосты инкассации расположены в специально оборудованных помещениях, в офисах компании, на выделенных под инкассацию серверах. Но в Восточной Сибири Ликард чаще всего представлен одним сотрудником, осуществляющим инкассацию терминалов, техподдержку операторов АЗС и прочее в режиме home-office, автономно. Необходимое ПО для осуществления инкассации развёрнуто на его домашнем компьютере. Изменений в ситуации не предвидится: объём покупок по топливным картам на порядок меньше, чем даже в Западной Сибири, получаемая с них прибыль (всего 3% от каждой покупки) не покроет затрат на содержание даже небольшого офиса.

Хост инкассации представляет собой композицию специально сконфигурированного железа, закрытого и устаревшего ПО: комплекса обработки входящей и генерации исходящей «почты» терминалов и комплекса инкассации терминалов (загрузка обновлённых справочников из почты, выгрузка файлов транзакций).
Железо — внешний dial-up модем (например, мой Zyxel U-1496E для надёжного соединения на самых зашумлённых линиях), 3G-брелок для инкассации терминалов через GPRS и Ethernet c подключенной услугой внешнего статического IP-адреса (# Huawei E1550), COM-порт (что в настоящее время редкость) для подключения внешного модема или коммуникационного кабеля терминала.
Основа первого комплекса — Microsoft Office 97 (в частности его компонент Access 97) и операционная система Microsoft Windows 2000 (либо XP с доработками реестра). Причём MSO97 — строго специальным образом обновлённый, более современные версии неправильно работают с написанной ещё в 97-м году на VBA базой данных, переработка её с чистого листа в более современном пакете — по неизвестным причинам считается головной организацией делом пустым.
Основа второго комплекса — созданный центральным отделом разработки Хост Обмена Информацией (сокращённо ХОИ), заменивший ранее использовавшийся Prowin2k. ХОИ состоит из коммуникационного, управляющего и конфигурационного приложений. Коммуникационное — консольное приложение без интерфейса, управляющее — собственно интерфейс к нему, позволяющий наблюдать процесс инкассации и управлять коммуникационным приложением. Конфигурационное приложение — редактор ini-файла настроек, подхватывающегося коммуникационным приложением при старте. Все 3 части написаны под windows, хотя такое подразделение предполагает возможность легкого портирования на Linux.

В последние годы, при замене и модернизации железа хостов инкассации возникали различные проблемы с MSO97 — из-за более 1Gb ОЗУ, слишком больших разделов на жёстком диске. Доставляет проблем и Windows, особенно в свете подключения к Интернету через внешний статический IP-адрес — как минимум приходится закрывать ненужные порты и работать через Outpost Firewall. Но главное — всё это развёрнуто на домашнем компьютере, владельцу которого вовсе не доставляет радость работа в устаревшей и небезопасной системе. Поставленная в другой раздел винчестера Ubuntu, используемая теперь как основная система, закрывает необходимость работы с Windows не полностью. На 3 часа в день приходилось перезагружаться под Windows для приёма «почты», инкассации терминалов и создания «почты» с полученными транзакциями.

3. Мой интерес


Wordpress, не подведи

Свести общение с Windows к нулевому значению, решая задачи Home- и Office- в операционной системе Ubuntu. Хотя опыт интенсивного использования Linux в настоящий момент всего 9 месяцев, я уже немного освоился и перевёл примерно 70ПК на работе (3 компьютерных класса и около 10 «офисных» машин). Уже через несколько месяцев использования Ubuntu в качестве основной системы ежедневные перезагрузки с вырыванием 3-х плодотворных часов из жизни порядком надоели. То обстоятельство, что половина документов, логов, истории и почты находится под одной XP, а половина — под Ubuntu, вызывало большой дискомфорт. Некрасиво…

4. Описание процесса переноса ХОИ


a) Ubuntu 9.10, обновлённая до 10.04

Начались эксперименты с открытой виртуальной машиной от Oracle, доступной из репозитория Ubuntu. Малоинтересная часть (банальная установка WinXP на созданный виртуальный диск) не будет описана здесь. Следующая, более интересная часть ниже.

Настройки и неудачи.

  1. Oracle VirtualBox OSE не достаточно хорошо предоставлял COM-порт гостевой системе, не умел работать с USB-устройствами. Пришлось перейти на закрытую версию, благо и виртуальный диск, и настройки она подхватила без проблем. На ней внешний dial-up модем немедленно подружился с хостом. Радость от наблюдения первого инкассирующегося терминала была невыразима. 3 выпадающих из жизни полезных часа сократились до бесполезных 15 минут

  2. Закрытый Oracle VirtualBox отказывался «включать» прекрасно видимый им, разрешённый к проброске 3G-модем.. Это значило, что «быстро и просто», включая GPRS прямо из гостевой системы — не получится. Оставалось заставить работать 3G-модем из под Ubuntu. До этого момента 3G под Ubuntu я не использовал — изначально Network Manager в Ubuntu 9.10 мешал работе всякого сконфигурированного pppoe-подключения или 3G-подключения — не подхватывал предоставляемые подключениями адреса DNS-серверов. Поэтому его пакеты были удалены, а про 3G до случая забыто. Не желая возвращения Network Manager-a, был найден и установлен MobilePartner, интерфейс управления 3G-модемами под Linux от Мегафона. Успех был не полон, т.к. проявилась проблема сброса режима брелка в «modem+CD» из единственно годного «modem only». Она была преодолена следующим образом: физически отключаем модем, подаём через терминал команду восстановления режима, подключаем модем обратно. Не самое оптимальное решение, но модем стал стабильно определяться, и в нужный момент не вдавался в капризы

  3. Oracle VirtualBox по-умолчанию закрывает все порты для гостевой системы В опциях VM включен NAT, браузер гостевой ХР открывает веб-страницы, но инкассация по GPRS на хост не идёт. После выяснения обстоятельств (спасибо openkazan), нужный порт был проброшен в гостевую систему. Теперь и 15 минут каждый день меня более под виндой не видели)…

  4. Время гостевой и хостовой систем не соответствовали друг другу. Хостовая система жила по летнему времени, а гостевая — по зимнему. VirtualBox не эмулирует BIOS, правка времени из «часов» гостевой помогала на пару секунд — потом время «синхронизировалось» с таймером виртуального BIOS-a, и разница возвращалась. Визуально помогала смена зон — но на время в ХОИ это не влияло. Время терминалов синхронизировалось с ложным значения, возник бардак. Терминалы звонили одновременно, а на другие сутки звонили раньше или позже чем полагалось, приходилось вновь терять 3 часа жизни, чтобы только синхронизировать время терминалов и восстановить порядок. Ранее, подобная проблема мной встречалась и на WinXP, сразу после обновления до SP3 — она, как и Ubuntu, переводила время фиктивно, только на часах в трее. В результате сбивалось расписание инкассации и файлы транзакций, полученные в первый час после полуночи записывались вчерашним днём, а это совершенно недопустимо. Первоначально помогал перевод времени XP ещё на час вперёд, потом был найден лучший способ — отключение автоматического перевода часов и синхронизации с сервером времени — применив первое и думая о чём-то подобном второму, Google помог найти лекарство получше от этой беды.
    Да, VirtualBox не позволяет задать абсолютную величину времени для гостевой системы. Но он позволяет задать отклонение в миллисекундах времени гостевой относительно времени хостовой… Перевод команды из win в lin и несколько опытов закончились подбором правильного значения параметра сдвига по фазе :), контрольной синхронизацией времени уже под Ubuntu, и бутылочкой Паулайнера себе в награду)

  5. Простое копирование файлов в подключенную сетевым диском папку хостовой машины сбивает на них аттрибуты времени. Утром, копируя принятые файлы транзакций в нужную папку хостовой машины, подключенную как сетевой диск Z, обнаружился вышеописанный трабл. Но простое решение пришло само — архивируем переносимые файлы с помощью 7z на гостевой системе, копируем архив куда_надо, распаковываем — и аттрибуты целы. Характерно то, что обратное копирование (с хостового Z на гостевой С) аттрибуты времени не сбивает.

  6. Одновременно работающие 2 подключения нарушают прохождение пакетов к ХОИ. Последнее из встреченных проблем. Если подключить 3G одновременно с подключенным pppoe — никакой GPRS-инкассации не будет… Первое кривое-полевое решение — физически отцепить кабель pppoe, перезагрузиться, включить GPRS. Второе, кривое несколько менее и без перезагрузки:

    sudo poff dsl-provider
    <включаем GPRS через GUI Mobile Partner>>
    ...
    15 минут, инкассация проходит успешно
    ...
    <выключаем GPRS через GUI Mobile Partner>
    sudo pon dsl-provider
    <инкассируем остальные терминалы>




Так, наступив на все грабли и выжив, моя инкассация стала проходить строго по регламенту)

b) Ubuntu 10.10 «из коробки». С 10.2010 по сий день

В октябре стал доступен Maverick..
Я читал мнение общественности его о многочисленных недоработках, отговоры от перехода, но мой самый сильный промах установкой Ubuntu 9.10 — выделение всего 16Gb на все её разделы, стал сказываться всё чаще. Сначала кончились 4Gb корневого раздела, а когда они были увеличены до 10Gb за счёт сокращения раздела с /home, проблемы возникли уже с последним. Ежедневное увеличение архива служебной почты на 10~20Мб — и вот база Thunderbird съедала чуть более, чем половину раздела… Так удобно разложенные Picassa фото с цифровика пришлось несколько раз перевозить на win-раздел и каждый раз потом долго искать, на какой именно (их 7)… Постоянный контроль свободного места в течении 2 месяцев, вывод на стабильные 1.2Gb и понимание — я не желаю заходить без особой необходимости на разделы NTFS, FAT32. Итогом стала большая чистка, высвобождение 80Gb у одного из на NTFS-разделов (28 корень + 2 swap + 50 /home) и установка самого свежего из имеющихся на болванке Ubuntu 10.10, с успокоением — я ничего не теряю, не понравится — вернусь в свою 10.04 и поставлю на закачку свежий дистрибутив ArchLinix)… Но — понравилось.

  • Во первых — Network Manager удалить не пришлось.. Так уж вышло, что сразу он заработал. Даже pppoe без pppoeconf поднялось (что в 9.10 никак не выходило, скорее всего из-за проблем с подхватом DNS; и замечу, что pppoeconf входит в дистрибутив изначально, от скачивания пакета под старой системой, чтобы установить его вручную в новую пользователь избавлен. И от манипуляций с resolv.conf тоже

  • Во вторых — мой 3G-брелок Huawei E1550 опознан без дополнительной установки udev-modeswitch, подключается и отключается прямо из NM, режим не теряет, и вообще ведёт себя неожиданно пристойно… Очень редко пропадает из системы, но вынуть-встравить из порта помогает (пропадание ему свойственны и под Windows, с таким же решением).

  • В третьих — необходимость в ежедневном общении с терминалом совсем пропала).. мышкой отключаем DSL, включаем 3G, после прохождения инкассации по GPRS повторяем в обратном порядке… Не питая антипатию к командной строке, но испытывая по ней стойкую ностальгию со времён БК10100 и NC v2.5, я провожу в ней столько же времени, сколько и на 10.04, но уже за более полезными для себя занятиями…



Значительно уменьшенные размеры еженедельных обновлений (зоопарка ПО и мусора пакетов в новой системе нет, т.к. с необходимым набор я для себя уже определился), успешно скопированные почтовая база и нужные настройки ПО из старого /home, более мелкие плюсы — отдельного упоминания не заслуживают (вроде прекратившихся зависаний Х-ов посреди работы). Виртуальный диск с ХОИ перенесён в /home и отпавшая необходимость автомонтирования ntfs-разделов при загрузке…

За год, с релиза 9.10 по релиз 10.10 сделано очень много, Ubuntu стала на порядок дружественнее, в самых разных проявлениях, я гарантирую это)..

5. Profit


Цели достигнуты, задачи выполнены, интерес приобретён)… Даже в бОльшем объёме и лучшем качестве, нежели предполагалось ранее. Так, VDI-образ винта с хостом можно безболезненно переносить на самое разное железо и ОС, не имея каждый раз сношений с установкой нужного софта, первичным его конфигурированием и прочими утехами windows-юзера… Работа под белымвнешнимстатическим IP стала безопаснее для хоста, ибо кроме как по открытому руками 8888-му порту и некоторым общеизвестным — доступа нет… Проблемы Google-Earth и прочего софта, кривого в своих последних linux-версиях, /me также не особо уж трогают — они поселились в виртуальной машине, хотя ради них одних поднимать её не стал бы)…



Собственно результат :)

Респект neonxp за корректорские правки)

P.S.: эх, плакала моя к..)
Tags:
Hubs:
+18
Comments 17
Comments Comments 17

Articles