Для безопасного хранения различной информации (например паролей в конфигурационных файлах) приложение создаёт и использует пару ключей для ассиметричного шифрования (roots.key/rootp.key). Данные ключи, в свою очередь, защищены паролем, который приложение должно хранить самостоятельно (к примеру, для защиты от троянов и вирусов, которые могли бы использовать ключи).
Для получения пароля используется метод CryptEngine::getRootPassword() из файла \3.0\src\modules\CryptEngine\src\CryptEnginePublic.cpp
QList<QByteArray> CryptEngine::getRootPassword()
{
QList<QByteArray> result;
result << "This is my secret password";
return result;
}
Тело данного метода должно быть реализовано в каждой модификации приложения, так как реализация по-умолчанию не обеспечивает сокрытие пароля. Например, можно использовать генерацию пароля из MAC-адреса сетевой карты или идентификатора процессора.
1. Установить Visual Studio 2010.
2. Установить Qt 4.8.0 (или 4.7.4) для VS2010 (http://qt.nokia.com).
3. Установить последнюю версию Visual Studio Addin (http://qt.nokia.com). Настроить используемую версию Qt: в меню «Qt» на вкладке «Qt Options» указать путь к установленной библиотеке на предыдущем шаге библиотеке.
4. Установить SVN клиент, например TortoiseSVN (http://tortoisesvn.net).
5. Создать рабочий каталог, например, «C:\Projects\CyberplatOpenSource».
6. Получить исходный код проекта. Например (для TortoiseSVN):7. Установить последнюю (протестировано с 1.47.0) версию boost с официального сайта (http://http://www.boost.org) в рабочий каталог в подкаталог "thirdparty\boost" (например, "C:\Projects\CyberplatOpenSource\thirdparty\boost").
8. Создать переменные окружения: «Мой компьютер» - «Свойства…» - «Дополнительно» - «Переменные среды»
| Переменная | Значение | Описание |
|---|---|---|
| TC_DIR | C:\Projects\CyberplatOpenSource\3.0\src | Путь к исходному коду терминального ПО |
| TC_INCLUDE_DIR | C:\Projects\CyberplatOpenSource\3.0\src\includes | Путь к заголовочным файлам терминального ПО |
| TC_LIB_DIR | C:\Projects\CyberplatOpenSource\3.0\build\libs | Путь к собранным библиотекам |
| TC_BIN | C:\Projects\CyberplatOpenSource\3.0\build | Путь к собранным бинарным файлам |
| THIRDPARTY_DIR | C:\Projects\CyberplatOpenSource\thirdparty | Каталог со сторонними библиотеками |
| THIRDPARTY_BIN_DIR | C:\Projects\CyberplatOpenSource\thirdparty\bin | Бинарные файлы сторонних библиотек |
svn checkout https://opensource.cyberplat.com/svn/ ./ --username <Ваш логин>
~ $ svn co https://opensource.cyberplat.com/svn
Сборка дистрибутива может быть автоматизирована с помощью утилиты, специально разработанной для данного проекта - Composer (http://opensource.cyberplat.com/redmine/repositories/browse/pt/tools/Composer).
Командная строка вызова данной утилиты должна содержать последовательно 3 параметра:C:\>set TC_DEBUG_BUILD=false C:\>set CYBERPLAT_BUILD=false C:\>cd C:\Projects\CyberplatOpenSource C:\>tools\Composer\msvc\Release\Composer.exe 3.0\scripts\runtimes\17_ru.xml 3.0 3.0\ReadySoftware
В результате в каталоге C:\Projects\CyberplatOpenSource\3.0\ReadySoftware\ будет сформирован необходимый для конфигурации 17_ru набор файлов в необходимой для работы ПО структуре каталогов.
Переменная среды CYBERPLAT_BUILD должна быть установлена в false чтобы отсутствие некоторых неопубликованных (закрытых) модулей не являлось критической ошибкой.
Переменная среды TC_DEBUG_BUILD может принимать значения true или false и означает отладочную сборку (копируются .pdb файлы, для плагинов выставляется флаг отладки).
Используемые в Киберплат конфигурации дистрибутивов находятся в каталоге 3.0\scripts\runtimes.
Вы можете разработать свои собственные файлы конфигураций.
Схема формата файла конфигурации находится в 3.0\doc\Schemas\composer.xsd.
Основная идея файлов конфигурации следующая: конфигурация описывает действия, необходимые для формирования дерева файлов. На данный момент существует 3 основных действия: копирование файла, копирование каталога и установка значения в .ini файле. Действия могут содержать булевый предикат на javascript (поддерживается весь функционал QtScript), при ложном значении которого действие пропускается.
Для описания различных модификаций дистрибутивов общие части дистрибутива можно выделять в отдельные конфигурации. Для этого реализовано наследование конфигураций. В этом случае обрабатывается цепочка конфигураций - от родителя к потомку.
Если исходный путь не абсолютный, то считается, что он относителен каталога проекта (второй параметр командной строки).
Если результирующий путь не абсолютный, то считается, что он относителен каталога результата (третий параметр командной строки). Если target-путь пустой, то имеется в виду корень каталога результата.
Пути могут использовать переменные среды в формате {ИМЯ}.
Например: <directory source="{BUILD_HOME}/Logo/ru" target="interface/logo" recursive="true"/>
Предикаты могут использовать переменные среды в формате {ИМЯ}.
Например: <file if="{TC_DEBUG_BUILD}" source="src/apps/Updater/build/Release/updater.pdb" target="updater.pdb"/>
Файлы плагинов (dll) будут помещены в TC_BIN\plugins
Исполняемые Файлы будут находится в каталогах своих проектов (например, src\apps\PaymentProcessor\build\Debug)
Необходимые файлы для запуска ПО отмечены восклицательным знаком (!).
Необходимые файлы для запуска платёжного интерфейса отмечены звёздочкой (*).
Необходимые файлы для корректной работы стандартного платёжного интерфейса отмечены решёткой (#).
/
! client.exe
! client.ini
! client_ru.qm
guard.exe
guard.ini
guard_ru.qm
tray.exe
tray_ru.qm
updater.exe
updater_ru.qm
7za.exe
! libeay32.dll
! libssl32.dll
! ssleay32.dll
phonon4.dll
QtWebKit4.dll
! QtCore4.dll
! QtDeclarative4.dll
! QtGui4.dll
! QtNetwork4.dll
! QtScript4.dll
! QtSql4.dll
! QtXml4.dll
! QtXmlPatterns4.dll
sqldrivers/
! qsqlite4.dll
imageformats/
qgif4.dll
qmng4.dll
phonon_backend/
phonon_ds94.dll
data/
! system.ini
! directory.xml
receipts/
<шаблоны чеков>
interface/
* <каталог с используемым интерфейсом>
plugins/
cyberplat_monitoring.dll
cyberplat_monitoring_ru.qm
cyberplat_payments.dll
service_menu.dll
service_menu_ru.qm
backends/
! qml_backend.dll
native_backend.dll
webkit_backend.dll
drivers/
bill_acceptors.dll
bill_acceptors_ru.qm
fr.dll
fr_ru.qm
ioports.dll
ioports_ru.qm
modems.dll
modems_ru.qm
printers.dll
printers_ru.qm
watchdogs.dll
watchdogs_ru.qm
! keys.xml
! config.xml
! operators.xml
! groups.xml
! commissions.xml
| Модуль | Состояние |
| src/apps/PaymentProcessor | готово/разработка |
| src/apps/Updater | разработка |
| src/apps/UpdaterSplashScreen | устарел |
| src/apps/WatchService | готово |
| src/apps/WatchServiceController | готово |
| src/interface/plugins | готово |
| src/interface/qmlcontrols | разработка |
| src/interface/touch12 | разработка |
| src/interface/touch17 | разработка |
| src/modules/Common/Application | готово |
| src/modules/Common/Log | готово |
| src/modules/Connection | готово |
| src/modules/CryptEngine | готово |
| src/modules/DatabaseProxy | готово |
| src/modules/DebugUtils | готово (Windows) |
| src/modules/DeviceManager | готово |
| src/modules/GraphicsEngine | готово |
| src/modules/Hardware/Cardreaders | разработка |
| src/modules/Hardware/CoinAcceptors | разработка |
| src/modules/Hardware/IOPorts | готово (Windows) |
| src/modules/Hardware/Modems | готово |
| src/modules/Hardware/Printers | готово/разработка |
| src/modules/Hardware/Protocols | готово/разработка |
| src/modules/Hardware/Scanners | готово/разработка |
| src/modules/Hardware/Validators | готово/разработка |
| src/modules/Hardware/Watchdogs | готово |
| src/modules/KeysUtils | готово |
| src/modules/MessageQueue | готово |
| src/modules/NetworkTaskManager | готово |
| src/modules/ScenarioEngine | готово |
| src/modules/SDK | готово/разработка |
| src/modules/SettingsManager | готово |
| src/modules/SysUtils | готово (Windows) |
| src/modules/UpdateEngine | разработка |
| src/modules/WatchServiceClient | готово |
| src/plugins/GraphicBackends/QMLBackend | готово |
| src/plugins/GraphicBackends/NativeBackend | готово |
| src/plugins/GraphicBackends/WebkitBackend | разработка |
| src/plugins/NativeWidgets/ServiceMenu | разработка |
| src/plugins/Payments/Cyberplat | готово |
Лицензионное соглашение об использовании исходного кода программного обеспечения ЗАО «Киберплат» для платежных терминалов
1. Определения.
Программа – «Терминальный клиент»
Произведение, производное от программы – Программа или любое иное производное произведение в соответствии с Законодательством об авторском праве, т.е. произведение, включающее в себя Программу или ее часть, как с внесенными в ее текст изменениями, так и без них.
Лицензиат – приобретатель экземпляра программы.
Действие настоящей Лицензии не распространяется на осуществление иных прав, кроме воспроизведения, распространения и модификации программного обеспечения. Не устанавливается ограничений на запуск Программы. Условия Лицензии распространяются на выходные данные из Программы только в том случае, если их содержание составляет произведение, производное от Программы (независимо от того, было ли такое произведение создано в результате запуска Программы). Это зависит от того, какие функции выполняет Программа.
2. Копирование и распространение.
2.1. Лицензиат вправе изготовлять и распространять экземпляры исходного текста Программы в том виде, в каком он его получил, без внесения в него изменений на любом носителе, при соблюдении следующих условий: на каждом экземпляре помещен знак охраны авторского права и уведомление об отсутствии гарантий; оставлены без изменений все уведомления, относящиеся к настоящей Лицензии и отсутствию гарантий; вместе с экземпляром Программы приобретателю передается копия настоящей Лицензии.
2.2. Лицензиат вправе модифицировать свой экземпляр или экземпляры Программы полностью или любую ее часть. Данные действия Лицензиата влекут за собой создание произведения, производного от Программы. Лицензиат вправе изготовлять и распространять экземпляры такого произведения, производного от Программы, или собственно экземпляры изменений в соответствии с пунктом 1 настоящей Лицензии при соблюдении следующих условий:
а) файлы, измененные Лицензиатом, должны содержать хорошо заметную пометку, что они были изменены, а также дату внесения изменений;
б) при распространении или публикации Лицензиатом любого произведения, которое содержит Программу или ее часть или является производным от Программы или от ее части, Лицензиат обязан передавать права на использование данного произведения третьим лицам на условиях настоящей Лицензии, при этом Лицензиат не вправе требовать уплаты каких-либо лицензионных платежей. Распространяемое произведение лицензируется как одно целое;
в) если модифицированная Программа при запуске обычно читает команды в интерактивном режиме, Лицензиат обязан обеспечить вывод на экран дисплея или печатающее устройство сообщения, которое должно включать в себя:
знак охраны авторского права;
уведомление об отсутствии гарантий на Программу (или иное, если Лицензиат предоставляет гарантии);
указание на то, что пользователи вправе распространять экземпляры Программы в соответствии с условиями настоящей Лицензии, а также на то, каким образом пользователь может ознакомиться с текстом настоящей Лицензии. (Исключение: если оригинальная Программа является интерактивной, но не выводит в своем обычном режиме работы сообщение такого рода, то вывод подобного сообщения произведением, производным от Программы, в этом случае не обязателен).
Вышеуказанные условия применяются к модифицированному произведению, производному от Программы, в целом. В случае если отдельные части данного произведения не являются производными от Программы, являются результатом творческой деятельности и могут быть использованы как самостоятельное произведение, Лицензиат вправе распространять отдельно такое произведение на иных лицензионных условиях. В случае если Лицензиат распространяет вышеуказанные части в составе произведения, производного от Программы, то условия настоящей Лицензии применяются к произведению в целом, при этом права, приобретаемые сублицензиатами на основании Лицензии, передаются им в отношении всего произведения, включая все его части, независимо от того, кто является их авторами.
3. Предоставление исходного кода.
Лицензиат вправе воспроизводить и распространять экземпляры Программы или произведения, которое является производным от Программы, в соответствии с п.п. 2.2. настоящей Лицензии, в виде объектного кода или в исполняемой форме в соответствии с условиями п.п.2.1. и 2.2. настоящей Лицензии при соблюдении одного из перечисленных ниже условий:
а) к экземпляру должен прилагаться соответствующий полный исходный текст в машиночитаемой форме, который должен распространяться в соответствии с условиями п.п.2.1. и 2.2. настоящей Лицензии на носителе, обычно используемом для передачи программного обеспечения, либо
б) к экземпляру должно прилагаться действительное в течение трех лет предложение в письменной форме к любому третьему лицу передать за плату, не превышающую стоимость осуществления собственно передачи, экземпляр соответствующего полного исходного текста в машиночитаемой форме в соответствии с условиями п.п. 2.1. и 2.2. настоящей Лицензии на носителе, обычно используемом для передачи программного обеспечения, либо
в) к экземпляру должна прилагаться полученная Лицензиатом информация о предложении, в соответствии с которым можно получить соответствующий исходный текст. (Данное положение применяется исключительно в том случае, если Лицензиат осуществляет некоммерческое распространение программы, при этом программа была получена самим Лицензиатом в виде объектного кода или в исполняемой форме и сопровождалась предложением, соответствующим условиям пп.б п.3 настоящей Лицензии).
Под исходным текстом произведения понимается такая форма произведения, которая наиболее удобна для внесения изменений. Под полным исходным текстом исполняемого произведения понимается исходный текст всех составляющих произведение модулей, а также всех файлов, связанных с описанием интерфейса, и сценариев, предназначенных для управления компиляцией и установкой исполняемого произведения. Однако, в качестве особого исключения, распространяемый исходный текст может не включать того, что обычно распространяется (в виде исходного текста или в бинарной форме) с основными компонентами (компилятор, ядро и т.д.) операционной системы, в которой работает исполняемое произведение, за исключением случаев, когда исполняемое произведение сопровождается таким компонентом.
В случае если произведение в виде объектного кода или в исполняемой форме распространяется путем предоставления доступа для копирования его из определенного места, обеспечение равноценного доступа для копирования исходного текста из этого же места удовлетворяет требованиям распространения исходного текста, даже если третьи лица при этом не обязаны копировать исходный текст вместе с объектным кодом произведения.
4. Лицензиат вправе воспроизводить, модифицировать, распространять или передавать права на использование Программы только на условиях настоящей Лицензии. Любое воспроизведение, модификация, распространение или передача прав на иных условиях являются недействительными и автоматически ведут к расторжению настоящей Лицензии и прекращению всех прав Лицензиата, предоставленных ему настоящей Лицензией. При этом права третьих лиц, которым Лицензиат в соответствии с настоящей Лицензией передал экземпляры Программы или права на нее, сохраняются в силе при условии полного соблюдения ими настоящей Лицензии.
5. Лицензиат не обязан присоединяться к настоящей Лицензии, поскольку он ее не подписал. Однако только настоящая Лицензия предоставляет право распространять или модифицировать Программу или произведение, производное от Программы. Подобные действия нарушают действующее законодательство, если они не осуществляются в соответствии с настоящей Лицензией. Если Лицензиат внес изменения или осуществил распространение экземпляров Программы или произведения, производного от Программы, Лицензиат тем самым подтвердил свое присоединение к настоящей Лицензии в целом, включая условия, определяющие порядок воспроизведения, распространения или модификации Программы или произведения, производного от Программы.
6. При распространении экземпляров Программы или произведения, производного от Программы, первоначальный лицензиар автоматически передает
приобретателю такого экземпляра право воспроизводить, распространять и модифицировать Программу в соответствии с условиями настоящей Лицензии. Лицензиат не вправе ограничивать каким-либо способом осуществление приобретателями полученных ими прав. Лицензиат не несет ответственности за несоблюдение условий настоящей Лицензии третьими лицами.
7. Если по решению суда или по заявлению о нарушении патента или по другой причине (не ограниченной патентными спорами) на Лицензиата накладываются требования (решением суда, действующим договором или чем-то иным), которые противоречат условиям Лицензии, это не является основанием для нарушения Лицензиатом условий Лицензии. Если Лицензиат не может одновременно выполнять условия Лицензии и выполнять другие обязательства, то он не имеет право распространять программу.
8. В случае если Лицензиат намерен включить часть Программы в другое свободное программное обеспечение, которое распространяется на иных условиях, чем в настоящей Лицензии, ему следует это делать на основании письменного разрешения, полученного у автора программного обеспечения.
ОТСУТСТВИЕ ГАРАНТИЙНЫХ ОБЯЗАТЕЛЬСТВ
11. НАСТОЯЩАЯ ПРОГРАММА РАСПРОСТРАНЯЕТСЯ БЕСПЛАТНО, ГАРАНТИИ НА НЕЕ НЕ ПРЕДОСТАВЛЯЮТСЯ В ТОЙ СТЕПЕНИ, В КАКОЙ ЭТО ДОПУСКАЕТСЯ ПРИМЕНИМЫМ ПРАВОМ. НАСТОЯЩАЯ ПРОГРАММА ПОСТАВЛЯЕТСЯ НА УСЛОВИЯХ "КАК ЕСТЬ". ЕСЛИ ИНОЕ НЕ УКАЗАНО В ПИСЬМЕННОЙ ФОРМЕ, АВТОР И/ИЛИ ИНОЙ ПРАВООБЛАДАТЕЛЬ НЕ ПРИНИМАЕТ НА СЕБЯ НИКАКИХ ГАРАНТИЙНЫХ ОБЯЗАТЕЛЬСТВ, КАК ЯВНО ВЫРАЖЕННЫХ, ТАК И ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ПРОГРАММЫ, В ТОМ ЧИСЛЕ ПОДРАЗУМЕВАЕМУЮ ГАРАНТИЮ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ И ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ, А ТАКЖЕ ЛЮБЫЕ ИНЫЕ ГАРАНТИИ. ВСЕ РИСКИ, СВЯЗАННЫЕ С КАЧЕСТВОМ И ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММЫ, НЕСЕТ ЛИЦЕНЗИАТ. В СЛУЧАЕ ЕСЛИ В ПРОГРАММЕ БУДУТ ОБНАРУЖЕНЫ НЕДОСТАТКИ, ВСЕ РАСХОДЫ, СВЯЗАННЫЕ С ТЕХНИЧЕСКИМ ОБСЛУЖИВАНИЕМ, РЕМОНТОМ ИЛИ ИСПРАВЛЕНИЕМ ПРОГРАММЫ, НЕСЕТ ЛИЦЕНЗИАТ.
12. ЕСЛИ ИНОЕ НЕ ПРЕДУСМОТРЕНО ПРИМЕНЯЕМЫМ ПРАВОМ ИЛИ НЕ СОГЛАСОВАНО СТОРОНАМИ В ДОГОВОРЕ В ПИСЬМЕННОЙ ФОРМЕ, АВТОР И/ИЛИ ИНОЙ ПРАВООБЛАДАТЕЛЬ, КОТОРЫЙ МОДИФИЦИРУЕТ И/ИЛИ РАСПРОСТРАНЯЕТ ПРОГРАММУ НА УСЛОВИЯХ НАСТОЯЩЕЙ ЛИЦЕНЗИИ, НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ПЕРЕД ЛИЦЕНЗИАТОМ ЗА УБЫТКИ, ВКЛЮЧАЯ ОБЩИЕ, РЕАЛЬНЫЕ, ПРЕДВИДИМЫЕ И КОСВЕННЫЕ УБЫТКИ (В ТОМ ЧИСЛЕ УТРАТУ ИЛИ ИСКАЖЕНИЕ ИНФОРМАЦИИ, УБЫТКИ, ПОНЕСЕННЫЕ ЛИЦЕНЗИАТОМ ИЛИ ТРЕТЬИМИ ЛИЦАМИ, НЕВОЗМОЖНОСТЬ РАБОТЫ ПРОГРАММЫ С ЛЮБОЙ ДРУГОЙ ПРОГРАММОЙ И ИНЫЕ УБЫТКИ). АВТОР И/ИЛИ ИНОЙ ПРАВООБЛАДАТЕЛЬ В СООТВЕТСТВИИ С НАСТОЯЩИМ ПУНКТОМ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ДАЖЕ В ТОМ СЛУЧАЕ, ЕСЛИ ОНИ БЫЛИ ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ВОЗНИКНОВЕНИЯ ТАКИХ УБЫТКОВ.
Компания Киберплат объявляет о том, что, начиная с 3 августа 2009 года проект терминального программного обеспечения развивается в режиме открытого исходного кода (Open Source) и приглашает своих партнеров и внешних разработчиков к участию в коллективной работе.
Отход от концепции проприетарного программного обеспечения (когда оно разрабатывалось и развивалось исключительно специалистами Киберплат) и переход к режиму совместной разработки продиктован требованиями времени. По нашему мнению, региональная и индивидуальная специализация пользователей ПО для платежных терминалов настолько заметна, а решаемые ими задачи зачастую столь специфичны, что разработать и развивать в одном центре полностью устраивающий всех пакет терминального ПО попросту невозможно. С другой стороны, объединение усилий в доработке ПО и привлечение сторонних разработчиков позволит значительно расширить его функционал и повысить надежность его работы, при этом в достаточно сжатые сроки.
Если прежде наши специалисты самостоятельно вносили все необходимые изменения в пакет терминального ПО, то в рамках совместной работы Киберплат берет на себя функции модератора и интегратора усилий всех разработчиков и «хозяина» площадки, на которой планируется обмениваться результатами совместной деятельности. Мы уверены, что эффект синергии, отличающий все проекты в режиме Open Source (достаточно вспомнить знаменитый Linux), быстро скажется и в этом проекте, что позволит в короткие сроки создать качественный пакет терминального ПО, удовлетворяющий всем потребностям бизнеса не только сегодня, но и в ближайшем будущем.