forum.bitel.ru http://forum.bitel.ru/ |
|
Клиентские либы http://forum.bitel.ru/viewtopic.php?f=19&t=7906 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 01 апр 2013, 07:46 ] |
Заголовок сообщения: | Клиентские либы |
Пара вопросов по последним обновлениям. Цитата: ДОБАВЛЕНО Keystore с ключами для подписания jar-файлов клиента Цитата: ИЗМЕНЕНО Installer: Сохранение клиентских jar-файлов в каталоге на сервере Можно подробнее? |
Автор: | skn [ 01 апр 2013, 11:01 ] |
Заголовок сообщения: | Re: Клиентские либы |
Cromeshnic писал(а): Пара вопросов по последним обновлениям. Цитата: ДОБАВЛЕНО Keystore с ключами для подписания jar-файлов клиента Цитата: ИЗМЕНЕНО Installer: Сохранение клиентских jar-файлов в каталоге на сервере Можно подробнее? 1) Для запуска клиента через JavaWebStart требуется подписание клиенских библиотек, для этого добавлены ключи по умолчанию для подписи библиотек, желающие могут сгенерировать свои. 2) Подготовительный этап для переноса хранения клиенских библиотек из базы в каталог на сервере. Это позволит упростить настройки БД, уменьшить размер дампа при бакапирование, формировать клиентские библиотеки для JavaWebStart |
Автор: | Cromeshnic [ 01 апр 2013, 11:38 ] |
Заголовок сообщения: | Re: Клиентские либы |
Про первый пункт не очень понял. Я сейчас делаю вот так: (bgclient_javawebstart.sh) Код: #!/bin/sh cd ${0%${0##*/}}. PASSWORD="bgbilling" KEYPASS="bgbilling" . ./setenv.sh signJar(){ if [ -e "./custom_client/$1" ]; then ${JAVA_HOME}/bin/jarsigner -keystore .keystore -storepass ${PASSWORD} -keypass ${KEYPASS} -signedjar ./custom_client/signed/$1 ./custom_client/$1 bgbilling else eche "!\n" fi } checkJar() { if [ -e $1 ]; then ${JAVA_HOME}/bin/jarsigner -keystore .keystore -storepass ${PASSWORD} $1 bgbilling A=`sha1sum $1 | cut -c1-40` B="" if [ -e webroot/client/$1 ]; then B=`sha1sum webroot/client/$1 | cut -c1-40` fi if [ "$A" != "$B" ]; then mv -f $1 webroot/client/ fi fi } ${JAVA_HOME}/bin/java -Djava.net.preferIPv4Stack=true -cp ./:./lib/app/kernel.jar:./lib/ext/mysql.jar ru.bitel.bgbilling.utils.javawebstart.BGClient_JavaWebStart checkJar client.jar signJar custom_resources.jar checkJar ./custom_client/signed/custom_resources.jar checkJar client_libs.jar signJar custom_client.jar checkJar ./custom_client/signed/custom_client.jar Т.е. сам подписываю свои либы ключом bgbilling. Попозже причешу и выложу на вики. |
Автор: | skn [ 01 апр 2013, 17:52 ] |
Заголовок сообщения: | Re: Клиентские либы |
.keystore - хранилище ключей, он не поставлялся с сервером и его нужно было КАЖДОМУ сгенерировать вручную, теперь в сборке будет идти .bgclient_keystore которым можно подписывать джарки не генерируя свои ключи |
Автор: | Cromeshnic [ 02 апр 2013, 07:06 ] |
Заголовок сообщения: | Re: Клиентские либы |
Спасибо, теперь понятно. |
Автор: | Cromeshnic [ 05 апр 2013, 11:09 ] |
Заголовок сообщения: | Re: Клиентские либы |
Насчёт подписи клиентских библиотек - выясняется, что провека хэша в стандартном bgclient_javawebstart.sh бессмысленна: Код: checkJar() { if [ -e $1 ]; then ${JAVA_HOME}/bin/jarsigner -keystore ${KEYSTORE} -storepass "${PASSWORD-'123456'}" $1 bgbilling A=`sha1sum $1 | cut -c1-40` B="" if [ -e webroot/client/$1 ]; then B=`sha1sum webroot/client/$1 | cut -c1-40` fi if [ "$A" != "$B" ]; then mv -f $1 webroot/client/ fi fi } Если добавить дебаг: Код: if [ "$A" != "$B" ]; then echo "$1 was changed" echo "$A" echo "$B" mv -f $1 webroot/client/ fi , то выяснится, что один и тот же файл после подписи через jarsigner всегда будет разным. Такие дела ![]() |
Автор: | skn [ 05 апр 2013, 11:15 ] |
Заголовок сообщения: | Re: Клиентские либы |
печалька...., ладно придеться переделать, напрмер, хранить копию не подписанной библиотеки и сверять с ней |
Автор: | Cromeshnic [ 05 апр 2013, 11:18 ] |
Заголовок сообщения: | Re: Клиентские либы |
Сперва можно подумать, что это биллинг генерит разные файлы client.jar и client_libs.jar, но дело не в этом - я в собственном скрипте вызываю 2 раза jarsigner для одного и того же файла и получаю разные результаты: Код: checkJar_user()
{ if [ -e $1 ]; then FNAME=`basename $1` ${JAVA_HOME}/bin/jarsigner -keystore ${KEYSTORE} -storepass "${PASSWORD-'bgbilling'}" -signedjar ${TMP_DIR}${FNAME} $1 bgbilling A=`sha1sum ${TMP_DIR}${FNAME} | cut -c1-40` B="" if [ -e webroot/client/${FNAME} ]; then B=`sha1sum webroot/client/${FNAME} | cut -c1-40` fi if [ "$A" != "$B" ]; then echo "${FNAME} was changed" echo "$A" echo "$B" mv -f ${TMP_DIR}${FNAME} webroot/client/ fi fi } |
Автор: | Cromeshnic [ 05 апр 2013, 11:33 ] |
Заголовок сообщения: | Re: Клиентские либы |
Цитата: напрмер, хранить копию не подписанной библиотеки и сверять с ней Тогда проще хранить хэш текущей неподписанной либы и сверять с ним. |
Автор: | Cromeshnic [ 05 апр 2013, 12:30 ] |
Заголовок сообщения: | Re: Клиентские либы |
В итоге у меня получился вот такой скрипт bgclient_javawebstart_user.sh: Код: #!/bin/sh cd ${0%${0##*/}}. . ./setenv.sh KEYSTORE=".keystore" PASSWORD="bgbilling" USER_LIBS=./client_lib_user/*.jar checkJar_user() { if [ -e $1 ]; then FNAME=`basename $1` #new file hash A=`sha1sum $1 | cut -c1-40` B="" # if [ -e "$1.sha" ]; then B=`cat $1.sha` fi if [ "$A" != "$B" ]; then echo "$(tput setaf 2)${FNAME}$(tput sgr0) was changed!" ${JAVA_HOME}/bin/jarsigner -keystore ${KEYSTORE} -storepass "${PASSWORD-'bgbilling'}" -signedjar webroot/client/${FNAME} $1 bgbilling sha1sum $1 | cut -c1-40 > $1.sha else echo "$(tput setaf 6)${FNAME}$(tput sgr0) wasn't changed" fi fi } for f in ${USER_LIBS} do if [ -e $f ]; then checkJar_user $f fi done Логика наших действий такая: - пишем свои jar-файлы для клиента - закидываем их в директорию ./client_lib_user/ - запускаем скрипт bgclient_javawebstart.sh - прописываем наши файлы в bgclient.jnlp Логика скрипта: - перебираем jar-файлы в ./client_lib_user/ - для каждого файла file.jar ищем рядом файл file.jar.sha - если файл есть и содержимое его совпадает с sha-хэшем jar-файла, то ничего не делаем - если нет, то пишем в file.jar.sha хэш - подписываем jar-файл и кладём подписанный file.jar в ./webroot/client/ |
Автор: | Cromeshnic [ 08 апр 2013, 14:38 ] |
Заголовок сообщения: | Re: Клиентские либы |
Ага, вижу. Балуюсь с новыми скриптами - таки выходит, что файлик client.jar изначально получается каждый раз разный. С client_libs.jar всё в порядке при этом. |
Автор: | skn [ 08 апр 2013, 17:51 ] |
Заголовок сообщения: | Re: Клиентские либы |
client.jar будет разным если в обновление были изменения в клиенте. |
Автор: | Cromeshnic [ 09 апр 2013, 11:37 ] |
Заголовок сообщения: | Re: Клиентские либы |
http://wiki.bgbilling.ru/index.php/Javaws |
Автор: | lda [ 23 апр 2013, 11:38 ] |
Заголовок сообщения: | Re: Клиентские либы |
Ув. Cromeshnic, в wiki вы писали: Код: Если в пользовательском классе переопределяются ресурсы или классы из client.jar или, простихоспаде, client_libs.jar, то в bgclient.jnlp пользовательский файл должен в списке стоять раньше соответствующей библиотеки, а также необходимо убрать атрибут 'main="true"' у client.jar. У меня если убрать атрибут 'main="true"', то не у всех запускается биллинг, судя по логам java не может найти "bitel.billing.ShellFrame". Есть другие способы переопределения ресурсов в client.jar? |
Автор: | Cromeshnic [ 23 апр 2013, 12:02 ] |
Заголовок сообщения: | Re: Клиентские либы |
Я не знаю других способов. "main=true|false, optional Indicates if the jar contains the main class. Default value is false. Note, that the jar containing the main class must be the first jar listed in the resources section." |
Автор: | Cromeshnic [ 23 апр 2013, 12:03 ] |
Заголовок сообщения: | Re: Клиентские либы |
У меня вот так работает: Код: <jar href="dsi_resources.jar"/>
<jar href="dsi_discount_client.jar"/> <jar href="client.jar"/> <jar href="client_libs.jar"/> |
Автор: | lda [ 23 апр 2013, 12:17 ] |
Заголовок сообщения: | Re: Клиентские либы |
А java какую используете 6 или 7? Вы уже пробовали что нибудь переопределять? У меня например руки чешутся переписать редактор параметра типа "Телефон"... ![]() |
Автор: | Cromeshnic [ 23 апр 2013, 12:21 ] |
Заголовок сообщения: | Re: Клиентские либы |
java 6 Во-первых, сделал вот такую штуку: http://wiki.bgbilling.ru/index.php/%D0% ... 1%83%D0%B3 Но тут скорее дописывать, а не переопределять. Во-вторых, ещё пару штуковин сделал, но ещё не задокументировал тут. В частности, переопределяется npay.xml |
Автор: | lda [ 23 апр 2013, 12:37 ] |
Заголовок сообщения: | Re: Клиентские либы |
Очень любопытная штука: Код: В файл /bitel/billing/module/services/npay/setup_user.properties пропишем нашу панель как вкладку модуля абонплат с названием «Группы услуг» Это разработчики добавили такую возможность? Где еще это можно использовать? Можно ли добавить свой таб в договор? |
Автор: | Cromeshnic [ 23 апр 2013, 12:39 ] |
Заголовок сообщения: | Re: Клиентские либы |
В договор, к сожалению, нельзя ![]() |
Автор: | Cromeshnic [ 23 апр 2013, 12:40 ] |
Заголовок сообщения: | Re: Клиентские либы |
viewtopic.php?f=19&t=7857& |
Автор: | lda [ 23 апр 2013, 12:49 ] |
Заголовок сообщения: | Re: Клиентские либы |
Спасибо! Я смотрю разработчики все таки потихоньку дают возможности изменять клиента. Надеюсь и до договора скоро доберутся. ![]() |
Автор: | Cromeshnic [ 12 авг 2013, 08:48 ] |
Заголовок сообщения: | Re: Клиентские либы |
Java Web Start не работает из коробки, т.к. update_lib в базе - пустой: Код: # ./bgclient_javawebstart.sh name = mps mps.jar name = update client.jar name = update_lib db.driver = com.mysql.jdbc.Driver db.url = jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=Cp1251&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&cachePrepStmts=true&useCursorFetch=true&queryTimeoutKillsConnection=true&connectTimeout=5000 db.user = bill db.pswd = bgbilling java.util.zip.ZipException: ZIP file must have at least one entry at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:304) at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:146) at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:321) at ru.bitel.bgbilling.utils.javawebstart.BGClient_JavaWebStart.main(BGClient_JavaWebStart.java:124) Код: mysql> SELECT name, length(client_zip) FROM installed_modules; +------------+--------------------+ | name | length(client_zip) | +------------+--------------------+ | mps | 18260 | | update | 4275525 | | update_lib | 0 | +------------+--------------------+ 3 rows in set (0.00 sec) Код: # ls -lh webroot/client/ итого 5,0M -rw-r--r-- 1 root root 1,1K Авг 12 11:18 bgclient.jnlp -rw-r--r-- 1 root staff 5,0M Авг 12 11:45 client.jar -rw-r--r-- 1 root root 41 Авг 12 11:45 client.jar.sha -rw-r--r-- 1 root staff 0 Авг 12 11:21 client_libs.jar -rw-r--r-- 1 root root 41 Авг 12 11:21 client_libs.jar.sha -rw-r--r-- 1 root root 663 Авг 2 18:21 index.html В результате client_libs.jar - нулевой |
Автор: | Cromeshnic [ 12 авг 2013, 10:17 ] |
Заголовок сообщения: | Re: Клиентские либы |
Всё ясно, нужно поправить max_allowed_packet. Не увидел в логах сначала. |
Автор: | skn [ 12 авг 2013, 11:27 ] |
Заголовок сообщения: | Re: Клиентские либы |
из коробки действительно не работает. начинает работать после первого обновления сервера (можно принудительного). |
Автор: | Cromeshnic [ 12 авг 2013, 12:16 ] |
Заголовок сообщения: | Re: Клиентские либы |
ага, до обновления вообще не было update_lib в installed_modules |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |