Перейти к содержимому


d.ch

Дата рег: 10 Янв 2019
Оффлайн Был(а) онлайн: Янв 14 2019 13:16
-----

Сообщения пользователя

В теме:Ошибка при обновлении сервера DRWEB ES10 до версии ESS11

14 Январь 2019 - 13:12

 

Если поправить вручную процесс завершается с той же ошибкой
ERROR: Database xmlupimportdb failed.
но по другой причине -- database.gz содержит хэш и xmlupimportdb не принимает измененный файл.

Хэш можно тоже поправить.

Только тут вопрос, что именно и как Вы изменили.

 

 

Судя по ошибке в логе:

20190110.225300.87 ERR [18863] main   [PgSQL/1] ERROR: length for type varchar must be at least 1, position 116, 00.021, CREATE TABLE alert_settings( settings_set CHARACTER VARYING(36) NOT NULL,name CHARACTER VARYING(45) NOT NULL,value CHARACTER VARYING(0) DEFAULT '', PRIMARY KEY(settings_set, name) )

процедуру импорта не устраивает вот эта часть -- value CHARACTER VARYING(0)

 

Экспорт базы database.gz содержит xml, в котором таблица alert_settings выглядит так:
<record>
 <field>1</field>
 <field>0</field>
 <field>36</field>
 <field>alert_settings</field>
 <field>settings_set</field>
 <field>2</field>
 <field></field>
 <field>settings%Sset</field>
</record>
<record>
 <field>2</field>
 <field>0</field>
 <field>45</field>
 <field>alert_settings</field>
 <field>name</field>
 <field>2</field>
 <field></field>
 <field>setting%Sname</field>
</record>
<record>
 <field>3</field>
 <field>0</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

В SQL-представлении исходная таблица выглядит так:
CREATE TABLE alert_settings (
   settings_set character varying(36) NOT NULL,
   name character varying(45) NOT NULL,
   value text DEFAULT ''::text
);

Т.е. при экспорте/импорте поле value text превращается в value CHARACTER VARYING(0)
Посмотрел как выглядят другие поля text (не более 10 полей) в файле экспорта --
вторая секция <field></field> для таких полей содержит 4 (возможно, есть варианты!)

Заменил этот кусок
<record>
 <field>3</field>
 <field>0</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

 

на

 

<record>
 <field>3</field>
 <field>4</field>
 <field>0</field>
 <field>alert_settings</field>
 <field>value</field>
 <field>1</field>
 <field></field>
 <field>setting%Svalue</field>
</record>

 

и попытался загрузить, проверка хэша не позволила.


В теме:Ошибка при обновлении сервера DRWEB ES10 до версии ESS11

13 Январь 2019 - 07:00

 

Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem, и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
Потому что они на сервере хранятся. Можно, конечно, положить в расшаренную директорию. А потом прицепить Агентов. Например, как здесь:

https://forum.drweb.com/index.php?showtopic=331058

 

Никогда не знал как подключить Агентов после замены адреса сервера.

dwservice -e es.server.address

es-service -e es.server.address     # ESS11

Спасибо!


В теме:Ошибка при обновлении сервера DRWEB ES10 до версии ESS11

13 Январь 2019 - 06:54

 

20190111.151759.49 ERR [16772] wrk:5  [Proto/Common] tcp://xx.xx.xx.xx client detected protocol violation "invalid server signature"
в консоли все станции "отключены".
Если правильно понимаю, дело в новых открытых ключах шифрования сервера, которых нет у клиентов.

Нет, нужно притащить из старого бэкапа drwcsd.pri в /var/drwcs/etc/ и сгенерировать с него сертификат – /usr/local/drwcs/drwsign gencert -private-key /var/drwcs/etc/drwcsd.pri /var/drwcs/etc/drwcsd-certificate.pem, cp /var/drwcs/etc/drwcsd-certificate.pem /usr/local/drwcs/webmin/install, если не наврал с путями. Хотя да, лучше это до upgradedb сделать, я этот момент не указал сразу. Но не принципиально.

 

 

Вернул систему в состояние до установки ESS11, поставил ESS с чистой конфигурацией,
настроил подключение к базе postgres, остановил сервер, сделал upgradedb,
скопировал drwcsd.pri от старого сервера в /var/drwcs/etc, сгенерировал сертификат
/usr/local/drwcs/bin/drwsign gencert -private-key=drwcsd.pri drwcsd-certificate.pem
скопировал новый сертификт в репозиторий /var/drwcs/repository/20-drwcs/11020181112000000/common/webmin/install/drwcsd-certificate.pem
заменил в конфигурации drwcsd.conf новый ID сервера на старый, запустил сервер.

Станции получили обновления, ждут перезагрузки, свою перезагрузил, пока все хорошо.

Большое спасибо всем!


В теме:Ошибка при обновлении сервера DRWEB ES10 до версии ESS11

11 Январь 2019 - 16:47

Либо вообще установиться без бэкапа, если БД в постгресе жива, заново настроить соединение с постгресом, остановить сервер и выполнить /usr/local/drwcs/drwcs.sh upgradedb.

Пошел по этому пути, запустил сервер, в drwcsd.log получил сообщения:
20190111.151759.49 ERR [16772] wrk:5  [Proto/Common] tcp://xx.xx.xx.xx client detected protocol violation "invalid server signature"
в консоли все станции "отключены".
Если правильно понимаю, дело в новых открытых ключах шифрования сервера, которых нет у клиентов.
В Руководстве по установке написано - "Начиная с 11 версии Сервера открытый ключ используется для связи с клиентами предыдущих версий.
Остальной функционал перенесен на сертификат, который, в том числе, содержит в себе открытый ключ шифрования."
Т.е. старые клиенты используют drwcsd.pub, а новые drwcsd-certificate.pem,
и надо бы эти файлы подложить Агентам, но не смог понять где они должны быть, на рабочем компьютере с Агентом версии 11 не нашел ни того не другого.
 

Либо, как вариант, поправить этот бэкап вручную.

Если поправить вручную процесс завершается с той же ошибкой
ERROR: Database xmlupimportdb failed.
но по другой причине -- database.gz содержит хэш и xmlupimportdb не принимает измененный файл.