Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Efendy от 16 Ноября 2012, 23:25:39



Название: Миграция с 50.32
Отправлено: Efendy от 16 Ноября 2012, 23:25:39
В прикреплении sql-файл для миграции базы данных с 50.32/49.32 до N+ ревизии 23.

Это начальная тестовая версия. Со временем я буду его совершенствовать. Было бы неплохо если бы вы помогли в этом.

Перед запуском файла проверить:
1) не должны быть карточки в состоянии перемещения
2) не должно быть временных платежей

Допданные пока не переносятся. Протестите кто-нибудь, после чего перейдем к этому шагу

UPD: файлы миграции теперь есть в поставке биллинга


Название: Re: Миграция с 50.32
Отправлено: Redmen от 20 Ноября 2012, 12:42:58
потестил! Всё ОК!

делал через phpmyadmin
скопировал старую базу 49.32
сделал бекап Нодени +
в старой базе выполнил переход
успешно всё кроме тригеров (в phpmyadmin они никак не хотят создаватся)
импортировал старую (обновлённую) базу в новую (чтоб тригери не мучить)
добавил конфиг с бекапа и всё завилось
(если есть одинаковый логин админа и клиента, бутет лажа,
зайдёт под клиентом; нужно в базе переименовать админа и удалить пароль,
после чего успешный вход админа без пароля)


Название: Re: Миграция с 50.32
Отправлено: vddav от 11 Декабря 2012, 17:00:13
начало ругаться:
Код:
]# perl nokernel.pl -v
Start. Flag -h for help

loading /usr/local/nodeny/sat.cfg

Connecting to DBI:mysql:database=bill;host=localhost;port=3306;mysql_connect_timeout=5 : 0.020868 sec

SELECT * FROM config ORDER BY time DESC LIMIT 1
Строк: 0. Время выполнения sql: 0.0001 сек

SELECT * FROM config ORDER BY time DESC LIMIT 1
Строк: 0. Время выполнения sql: 0.00007600 сек

SELECT * FROM config ORDER BY time DESC LIMIT 1
Строк: 0. Время выполнения sql: 0.00007600 сек
....
...
Error getting config from DB at nokernel.pl line 39.
конект с базой есть.а чего то не хватает, какойто именно таблицы? вроде все на месте.


Название: Re: Миграция с 50.32
Отправлено: stix от 11 Декабря 2012, 17:06:33
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;


Название: Re: Миграция с 50.32
Отправлено: vddav от 11 Декабря 2012, 17:30:28
чего то после этого браузеры стали ругаться на отсутствие ява скриптов(
Код:
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
и почистилась таблица админов, но nokernel запустился, через пхпмайадмин добавил админа, но не пускаеть((


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Декабря 2012, 17:52:53
чего то после этого браузеры стали ругаться на отсутствие ява скриптов(
Код:
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
и почистилась таблица админов, но nokernel запустился, через пхпмайадмин добавил админа, но не пускаеть((
в stat.pl в самом начале установи debug в 1 и приведи дебаг


Название: Re: Миграция с 50.32
Отправлено: vddav от 11 Декабря 2012, 18:18:07
Код:
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
а надо было указать папку $img_dir='/htdocs', блин, подозреваю что многоуважаемый Lavi умышленно упустил ентот момент, дабы я имел возможность самостоятельно,потихоньку менять свой родной зеленый цвет на более спелые тона))))


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Декабря 2012, 19:02:00
Код:
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
а надо было указать папку $img_dir='/htdocs'
Если ставить по доке из последних релизов, то там идет симлинк  htdocs на корень web-сервера, поэтому корень будет '/', т.е. $img_dir = ''. Скорее всего ты установил по пути /.../www/data/htdocs,  а пр инсталу получается в  /.../www/data/


Название: Re: Миграция с 50.32
Отправлено: vddav от 11 Декабря 2012, 19:18:42
запустилось)))
надо еще добавить админа c привилегиями и из под него по устанавливать привилегии другим
Код:
INSERT INTO admin SET login='admin', name='', post='', privil=',1,3,2,17,20,11,12,13,27,30,31,32,50,51,52,55,100,61,90,69,70,71,72,73,74,75,76,77,78,79,80,81,94,95,', usr_grps='', passwd=AES_ENCRYPT('33', 'BIGint');
далее, паролей у абонов нема((( крайне необходимо сохранить старые,
доп данные тоже допилить миграцию (так понимаю там адреса,маки, телефоны, явки и т.д.)))
пулы адресов так понимаю ручками забивать( или как то из точек топологии тянуть
на вскидку пока все, продолжение следует)))

еще надо кнопочку удалить все пулы, ща их насоздавалось стопитсот штук, есть по одному два ипа, видимо по базе абонов создавалось по непрерывным групкам, а если брать из групп - возможен косяк типа можно любые ипы..


Название: Re: Миграция с 50.32
Отправлено: poxy. от 11 Декабря 2012, 19:38:26
запустилось)))
надо еще добавить админа c привилегиями и из под него по устанавливать привилегии другим
Код:
INSERT INTO admin SET login='admin', name='', post='', privil=',1,3,2,17,20,11,12,13,27,30,31,32,50,51,52,55,100,61,90,69,70,71,72,73,74,75,76,77,78,79,80,81,94,95,', usr_grps='', passwd=AES_ENCRYPT('33', 'BIGint');
далее, паролей у абонов нема((( крайне необходимо сохранить старые,
доп данные тоже допилить миграцию (так понимаю там адреса,маки, телефоны, явки и т.д.)))
пулы адресов так понимаю ручками забивать( или как то из точек топологии тянуть
на вскидку пока все, продолжение следует)))

еще надо кнопочку удалить все пулы, ща их насоздавалось стопитсот штук, есть по одному два ипа, видимо по базе абонов создавалось по непрерывным групкам, а если брать из групп - возможен косяк типа можно любые ипы..

Бинарный перенос для паролей или AES_DECRYPT -> AES_ENCRYPT с тем же ключом залить в новую базу.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Декабря 2012, 19:42:20
Да, удаление пулов ip сделаю


Название: Re: Миграция с 50.32
Отправлено: vddav от 12 Декабря 2012, 11:50:27
это по ходу это:
Код:
ALTER TABLE `users` CHANGE `passwd` `passwd` VARCHAR( 64 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;

с этим:
Код:
AES_DECRYPT -> AES_ENCRYPT
скрестить надо?))тока не могу догнать кого куда(


Название: Re: Миграция с 50.32
Отправлено: poxy. от 12 Декабря 2012, 12:22:55
это по ходу это:
Код:
ALTER TABLE `users` CHANGE `passwd` `passwd` VARCHAR( 64 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL;

с этим:
Код:
AES_DECRYPT -> AES_ENCRYPT
скрестить надо?))тока не могу догнать кого куда(
Пароли в старой базе хранятся в зашифрованном виде, надо их вытащить расшифрованными (ключ шифрования) -> залить в новую базу.

ЗЫ я делал бинарный перенос у себя.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 12 Декабря 2012, 12:28:01
А если просто тотже ключ шифрования указать в sat.cfg?


Название: Re: Миграция с 50.32
Отправлено: vddav от 12 Декабря 2012, 13:52:51
А если просто тотже ключ шифрования указать в sat.cfg?
повтроил всю процедуру с начала, с одинаковыми Passwd_Key, дабы исключить какие либо влияния моих изменений на базу - пароли в вебке пусты, в таблице поля заполнены чем-то ))))


Название: Re: Миграция с 50.32
Отправлено: stix от 12 Декабря 2012, 14:10:28
http://forum.nodeny.com.ua/index.php?topic=2016.75

читай


Название: Re: Миграция с 50.32
Отправлено: Efendy от 12 Декабря 2012, 18:53:10
Код:
INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
а надо было указать папку $img_dir='/htdocs', блин, подозреваю что многоуважаемый Lavi умышленно упустил ентот момент, дабы я имел возможность самостоятельно,потихоньку менять свой родной зеленый цвет на более спелые тона))))
Как раз для таких случаев сделал отдельный режим работы: если путь не указан, то N+ будет запрашивать js файлы через stat.pl. Это, конечно, медленнее, но зато проще стартануть. Если в настройках указан путь и поставить "да" на параметре

Цитировать
установите "да" если путь к изображениям корректен - это ускорит загрузку некоторых файлов, в противном случае некоторые файлы будут отдаваться скриптом stat.pl, а не вебсервером

файлы  будут браться там где обычно


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 12 Декабря 2012, 23:05:19
Код:
vim bill.sql
:set fileformat=unix
:w!
:q
Код:
dos2unix bill.sql
Если там и правда есть ретурн после DELIMITER $$


Название: Re: Миграция с 50.32
Отправлено: vddav от 13 Декабря 2012, 13:26:33
Цитировать
Как раз для таких случаев сделал отдельный режим работы: если путь не указан, то N+ будет запрашивать js файлы через stat.pl. Это, конечно, медленнее, но зато проще стартануть. Если в настройках указан путь и поставить "да" на параметре
интересно получилось - без $img_dir = '/htdocs' ругается на отсутствие ява скриптов, а если поставить "Да" то не авторизует( и тоже на яву ругается.
пароли получилось вернуть закоментировав в миграторе строки касающиеся полей с паролями) как то туповато но сработало), тока теперь даже с полными привилегиями не получается изменить привилегии других админов и установить доступ к группам(


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Декабря 2012, 14:35:07
интересно получилось
большое спасибо за отсутствие конкретики. Ну, я привык что получается выуживать инфу раскаленным железом. Включаем фаербаг и смотрим куда идут запросы на файлы?

что выдает:

http://server/cgi-bin/stat.pl?a=_css&file=nody


Название: Re: Миграция с 50.32
Отправлено: vddav от 13 Декабря 2012, 15:32:01
не совсем понял что за фаербаг, по запросу server/cgi-bin/stat.pl?a=_css&file=nody выдает:
Код:
.main_bg {
    background-color: #ededed;
}
html,body {
    height: 100%;
    min-height: 100%;
    margin: 0;
    padding: 0;
    background-color: #ededed;
    color: #000000;
    font-size: 9pt;
    font-family: Tahoma, sans-serif;
}
.low_resolution {
    font-size: 8pt;
}

table {
    border: none;
    border-collapse: collapse;
}
iframe {
    border: none;
}
a {
    color: #5a80b0;
    text-decoration: none;
}
a:hover {
    color: #800000;
}
a img {
    border: none;
}
input[type=text],
input[type=password],
textarea,
select {
    color: #660000;
    background-color: #fffff0;
    border: 1px solid #b0c0d0;
}
input:disabled {
    color: #707070;
    background-color: #f0f0f0;
    border: 1px solid #e0e0e0;
}
input[type=checkbox],
input[type=radio] {
    background: transparent;
    border: none !important;
}
form {
    margin: 0;
}
acronym {
    cursor: help;
}
ul {
    margin: 0;
}
li {
    margin-bottom: 3pt;
}
hr {
    background-color: #c0d0e0;
    border: 0;
    height: 1px;
    display: block;
}
hr.space {
    background-color: transparent;
    height: 12pt;
    margin: 0;
    padding: 0;
}
.big {
    font-size: 150%;
}
.normal {
    font-size: 130%;
}
.small {
    font-size: 80%;
}
.bold {
    font-weight: bold;
}
.story {
    text-align: justify;
    text-indent: 120%;
}
.h_center {
    text-align: center;
}
.h_left {
    text-align: left;
}
.h_right {
    text-align: right;
}
.v_top {
    vertical-align: top;
}
.align_center {
    margin: 0 auto;
    display: table;
}
.cursor_pointer {
    cursor: pointer;
}
.hidden {
    display: none;
}
.nowrap {
    white-space: nowrap;
}
.break-word {
    word-wrap: break-word;
}

.data1 {
    color: green;
}
.data2 {
    color: #3e87bf
}
.error {
    color: red;
}
.warn {
    color: #0080ff;
}
.disabled {
    color: #606060;
}

a.disabled {
    color: #606060;
}
a.active {
    font-weight: bold;
}

/* --- а‘аОаКб аНаА аОбаНаОаВаЕ аКаАб€б‚аИаНаОаК --- */

.box-mini {
    margin: 0 auto;
    display: table;
    min-width: 100px;
}
.box {
    background: #ffffff;
}
.box_tr, .box_tl, .box_t {
    min-height: 17px;
}
.box_tr {
    background: url(box_tr.gif) no-repeat top right;
}
.box_tl {
    background: url(box_tl.gif) no-repeat top left;
    margin: 0;
}
.box_t {
    background: url(box_t.gif) repeat-x;
    margin: 0 17px;
}
.box_r {
    background: url(box_r.gif) repeat-y right top;
    margin: 0;
}
.box_l {
    background: url(box_l.gif) repeat-y left top;
    padding: 2px 24px;
    margin: 0;
}

.box_br, .box_bl, .box_b {
    height: 17px;
}
.box_br {
    background: url(box_br.gif) no-repeat bottom right;
}
.box_bl {
    background: url(box_bl.gif) no-repeat bottom left;
    margin: 0 17px 0 0;
}
.box_b {
    background: url(box_b.gif) repeat-x bottom left;
    margin: 0 0 0 17px;
}
.box_title {
    text-align: right;
    height: 34px;
    padding: 0 15px 0 0;
    margin: 0 10px 0 0;
    background: url(box_title_r.png) no-repeat top right;
}
.box_title span {
    text-align: center;
    display: inline-block;
    height: 34px;
    min-width: 140px;
    padding: 13px 4px 0 20px;
    font-size: 12px;
    color: #000000;
    background: url(box_title_l.png) no-repeat top left;
}

.low_resolution .box {
    border: 1px solid #e0e0e0;
    border-radius: 7px;
    margin: 1px;
}
.low_resolution .box_l {
    padding: 2px 8px;
}

.low_resolution .box_t,
.low_resolution .box_tr,
.low_resolution .box_tl,
.low_resolution .box_r,
.low_resolution .box_l,
.low_resolution .box_b,
.low_resolution .box_bl,
.low_resolution .box_br,
.low_resolution .box_title,
.low_resolution .box_title span {
    background: none;
}

.boxpddng {
    padding: 0 20px;
}


.txtpadding {
    padding: 8px;
}

.msg_tbl td {
    padding: 0 15px;
}

.tablebg {
    background-color: #ccd8e0;
}

table.border td {
    border: 1px solid #e0e0e0;
}

.td_tall td {
    padding-top: 8px;
    padding-bottom: 8px;
}
.td_medium td {
    padding-top: 3px;
    padding-bottom: 2px;
}
.td_wide td {
    padding-right: 14px;
    padding-left: 14px;
}
.td_narrow td {
    padding-right: 4px;
    padding-left: 4px;
}
.td_ok td {
    padding: 2px 8px;
}

.low_resolution .td_wide td {
    padding-right: 7px;
    padding-left: 7px;
}

.thead > thead {
    background-color: #ffffff;
    font-weight: bold;
}

table.pretty {
    margin-top: 2pt;
    margin-bottom: 2pt;
}
table.pretty > thead {
    background-color: #ffffff;
    color: #000000;
    font-weight: bold;
    border-top: 1px solid #e0e0e0;
    border-bottom: 1px solid #c0c0c0;
}

table.fade_border  > tbody > tr > td {
    border-right: 1px solid rgba(200,200,200, 0.2);
}

.pretty_border > tbody > tr > td {
    border: solid 1px #d0d0d0 !important;
}
.pretty_now_odd {
    background-color: #e0e0e0 !important;
}
.pretty_now_even {
    background-color: #eeeeee !important;
}

.row1, .row2, .rowoff, .rowoff2 {
    background: url(pixel.gif) repeat-x top left;
    border-bottom: 1px solid #d0d0d0;
}
.row1 {
    background-color: #e0e0e0;
}
.row2 {
    background-color: #eeeeee;
}
.row3 {
    border-bottom: 1px solid #e5e5e5;
}
.row4 {
    background-color: #eaeaea;
    background-image: url(fon.gif);
}
.row5 {
    background-color: #f8f8f8;
}
.rowoff {
    background-color: #ffd7d7;
}
.rowoff2{
    background-color: #ffd0d0;
}
.rowover{
    background-color: #ffd4d4;
}
.row_usr_off {
    background-color: #ffd0d0;
}

.head {
    color: #000000;
    text-shadow: #f0f0f0 0px 1px 0px;
    font-weight: bold;
}

.head2 {
    text-align: center;
    color: #ffffff;
    background-color: #707070;
}
.head2 td {
    border-width: 1px;
    border-style: solid;
    border-color: #ffffff #808080 #ffffff #808080 !important;
}
.head2 a {
    display: block;
    color: #ffffff;
}
.head2 a:hover {
    color: #000000;
}

.small_msg {
    padding: 6pt;
    margin: 6pt;
    min-height: 12pt;
    border: 1px solid #e0e0e0;
    border-radius: 5px;
    background: #f0f0f0;
    background-image: linear-gradient(top, #f0f0f0 0%, #f5f5f5 100%);
    background-image: -o-linear-gradient(top, #f0f0f0 0%, #f5f5f5 100%);
    background-image: -moz-linear-gradient(top, #f0f0f0 0%, #f5f5f5 100%);
    background-image: -webkit-linear-gradient(top, #f0f0f0 0%, #f5f5f5 100%);
    background-image: -ms-linear-gradient(top, #f0f0f0 0%, #f5f5f5 100%);
}

.input_modified input,
.input_modified select,
.input_modified textarea,
input.input_modified,
textarea.input_modified {
    color: #0000ff;
}

.input_short  input[type='text'] {
    width: 70pt;
}

.modified {
    border: 1px solid red;
}

.width100 {
    width: 100%;
}

a.nav, .nav a, a.nav2, .nav2 a, .nav_active, .nav_button, .nav_disabled  {
    position: relative;
    white-space: pre;
    font-size: 9pt;
    font-family: Tahoma, sans-serif;
    text-decoration: none;
    text-shadow: 0 1px 1px #ffffff;
    background-color: #f5f8fd;
    border: solid 1px #90a0b0;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -o-border-radius: 5px;
    border-radius: 5px;
    margin-right: 1px;
}

a.nav, .nav a, a.nav2, .nav2 a, .nav_button {
    color: #304050;
    background-image: linear-gradient(bottom, #d0d5e0 0%, #ffffff 100%);
    background-image: -o-linear-gradient(bottom, #d0d5e0 0%, #ffffff 100%);
    background-image: -moz-linear-gradient(bottom, #d0d5e0 0%, #ffffff 100%);
    background-image: -webkit-linear-gradient(bottom, #d0d5e0 0%, #ffffff 100%);
    background-image: -ms-linear-gradient(bottom, #d0d5e0 0%, #ffffff) 100%);
    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, rgb(208,213,224)), color-stop(1, rgb(255,255,255)));
    -webkit-box-shadow: inset 0px 1px 0px #e0e5ff, 0px 1px 0px #ffffff;
    -moz-box-shadow: inset 0px 1px 0px #e0e5ff, 0px 1px 0px #ffffff;
    box-shadow: inset 0px 1px 0px #e0e5ff, 0px 1px 0px #ffffff;
}

a.nav, .nav a, .nav_active, .nav_disabled {
    display: inline-block;
    padding: 5px 7px;
}

.nav_disabled {
    color: #c5c5c5;
    background-color: #ffffff;
}

.nav_button  {
    display: inline-block;
    padding: 5px 9px;
    outline: none;
    cursor: pointer;
}

a.nav2, .nav2 a {
    display: block;
    padding: 5px;
    margin-bottom: 1px;
}

a.nav:hover, .nav a:hover, .nav_button:hover, .nav_disabled:hover {
    top: 1px;
    color: #000000;
    background-image: linear-gradient(bottom, #d0d5e0 40%, #ffffff 100%);
    background-image: -o-linear-gradient(bottom, #d0d5e0 40%, #ffffff 100%);
    background-image: -moz-linear-gradient(bottom, #d0d5e0 40%, #ffffff 100%);
    background-image: -webkit-linear-gradient(bottom, #d0d5e0 40%, #ffffff 100%);
    background-image: -ms-linear-gradient(bottom, #d0d5e0 40%, #ffffff 100%);
    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.4, rgb(208,213,224)), color-stop(1, rgb(255,255,255)));
}

.nav_active {
    color: #700000 !important;
    font-weight: bold;
    background-image: -moz-linear-gradient(bottom, #ffffff 10%, #d0d5e0 100%);
    background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.1, rgb(255,255,255)), color-stop(1, rgb(208,213,224)));
}

a.nav.downed {
    background-image: none;
}

a.nav.error {
    color: #900000;
}

a.nav_wide {
    padding: 2pt 8pt 3pt 8pt !important;
}

.navmenu a {
    white-space: nowrap;
    color: #5a80b0;
    font-style: normal;
    text-align: left;
    padding: 4pt 3pt 4pt 3pt;
    border: 1px solid transparent;
    display: block;
    line-height: 100%;
    text-decoration: none;
}

.navmenu a:hover {
    color: #800000;
}
.navmenu_active {
    color: #000000 !important;
}
.navmenu a.error {
    color: #b00000;
}

.modal_menu_active {
    color: #a00000 !important;
    font-size: 150% !important;
}



.datepicker { border-collapse: collapse; border: 2px solid #999; position: absolute; z-index: 200}
.datepicker tr.controls th { height: 22px; font-size: 11px; }
.datepicker select { font-size: 11px; }
.datepicker tr.days th { height: 18px; }
.datepicker tfoot td { height: 18px; text-align: center; text-transform: capitalize; }
.datepicker th, .datepicker tfoot td { background: #eee; font: 10px/18px Verdana, Arial, Helvetica, sans-serif; }
.datepicker th span, .datepicker tfoot td span { font-weight: bold; }

.datepicker tbody td { width: 24px; height: 24px; border: 1px solid #ccc; font: 11px/22px Arial, Helvetica, sans-serif; text-align: center; background: #fff; }
.datepicker tbody td.date { cursor: pointer; }
.datepicker tbody td.date.over { background-color: #99ffff; }
.datepicker tbody td.date.chosen { font-weight: bold; background-color: #ccffcc; }

.datepicker .close ,
.datepicker .today {
    color: #5a80b0;
}

input[type='text'].dateinput {
    width: 50pt;
}

.data_input_tbl {
}
.data_input_tbl td{
    padding: 2pt 6pt;
}
.data_input_tbl input[type='text'],
.data_input_tbl select {
    width: 140pt;
}
.data_input_tbl textarea {
    width: 100%;
}






/* --- base --- */

#main_table {
    width: 100%;
    height: 100%;
    min-height: 100%;
    background-color: #ededed;
}
#main_block {
    padding-top: 10px;
}
#left_block {
    padding-top: 10px;
    vertical-align: top;
    width: 30%;
}
#right_block {
    padding-top: 10px;
    vertical-align: top;
    width: 30%;
}

#debug {
    display: none;
    text-align: left;
    padding: 20px 20px 3px 20px;
    background-color: #909090;
}

.debug_href {
    display: inline-block;
    position: absolute;
    top: 2px;
    left: 2px;
    z-index: 20;
    border: 1px solid #404040;
    border-radius: 3px;
    background-color: #e4e9f2;
    padding: 6px 8px;
    text-shadow: #e5e5e5 0px 1px 0px;
}

#window_reload_btn {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    background: url(riss.png) center no-repeat;
}

.login_box {
    margin: 34px 0 14px 0;
    color: #304050;
    font-size: 125%;
}
.login_box td {
    padding: 0 10px;
}
.login_tbl td {
    padding: 2px !important;
}
.login_tbl input[type=text],
.login_tbl input[type=password] {
    width: 140px;
    border: 1px solid #d0d0d0;
    background-color: #e0e0e0;
    padding: 2px;
}

/* --- аМаОаДаАаЛбŒаНаОаЕ аОаКаНаО --- */

#modal_window {
  padding: 4px;
}

.modal_mask {
  position: absolute;
  z-index: 100;
  top: 0;
  left: 0;
  background-color: #000000;
}
   
.modal_box {
  position: absolute;
  z-index: 101;
  padding: 14px;
  background-color: #ffffff;
  border: 1px solid #a0a0a0;
  border-radius: 7px;
}

.modal_close {
  position: absolute;
  display: block;
  left: -12px;
  top: -12px;
  height: 24px;
  width: 24px;
  border: 1px solid #a0a0a0;
  border-radius: 12px;
  background-color: #ffffff;
}

.modal_close:hover {
  background: #ffffff;
}

/* --- бˆаАаПаКаА --- */

.top_msg {
    text-align: left;
    color: #304050;
    background-color: #e4e9f2;
    border-style: solid;
    border-width: 1px;
    border-color: #ffffff transparent #d0d5dd transparent;
    margin: 0px 3pt;
    padding: 7px;
}
.top_msg  a {
    display: inline-block;
    padding: 4pt 7pt;
    margin: 0;
    text-decoration: none;
    color: #000000;
    cursor: pointer;
}
.top_msg a:hover {
    color: #708090;
}
.top_msg a.downed {
    border-style: solid;
    border-width: 1px;
    border-color: #d0dde8 #f0f0f0 #f0f0f0 #d0dde8;
    background-color: #dee3ec;
}

.adm_top_made_msg  div{
    color: #ffffff;
    margin: 4pt 0 -4pt 0;
    padding: 8pt 0 6pt 0;
    text-align: center;
    background-color: #606060;
}
.adm_top_made_msg  .top_msg_error {
    color: #900000;
    background-color: #ffffff;
    background-image: -moz-linear-gradient(top, #ffffff 0%, #fff0f0 100%);
    background-image: -webkit-linear-gradient(top, #ffffff 0%, #fff0f0 100%);
    border: none;
}

.usr_top_made_msg  div{
    color: #000000;
    background-color: #ffffff;
    border: 3px double #d0d5dd;
    margin: 4pt 20pt;
    min-height: 4px;
    padding: 8pt;
    text-align: center;
}
.usr_top_made_msg .top_msg_error {
    color: #900000;
    border: 3px double #b00000;
}

/* --- tune.pl --- */

.mTune_left_block {
    white-space: nowrap;
}
.tune_tbl {
}
.tune_tbl td{
    padding: 7pt;
}
.tune_tbl textarea {
    width: 400pt;
    margin: 5pt 1pt 3pt 1pt;
}
.tune_tbl_narrow input {
    width: 120pt;
}
.tune_tbl_wide input {
    width: 230pt;
}
.tune_tbl_narrow_td td{
    width: 124pt;
}

/* --- user.pl --- */

.mUser_data_box td{
    padding: 2pt 6pt;
}

.mUser_data_box input[type='text'],
.mUser_data_box select {
    width: 140pt;
}

.mUser_data_box textarea {
    width: 100%;
}

.low_resolution .mUser_data_box input[type='text'],
.low_resolution .mUser_data_box select {
    width: 100pt;
}

#mUser_ip_list input[type='text']
{
    width: 80pt;
}
.mUser_service_list {
    overflow: auto;
    min-width: 180px;
    max-height: 220px;
    margin: 5px;
}

.mUser_service_list a {
    display: block;
    margin: 3px;
}

/* --- users.pl --- */

.mUsers_search_info {
    padding: 2pt;
    background-color: #ffffff;
}

.mUsers_search_info input[type='text'],
.mUsers_search_info select,
.mUsers_search_info textarea {
    width: 100pt;
}

/* ---  --- */

.usr_info_block table{
    width: 100%;
}

.usr_info_block table td{
    padding: 2pt 5pt;
}

.usr_info_block table a{
    padding: 3pt 6pt;
    font-size: 120%;
}

.usr_top_block {
    margin: 0;
    padding: 4px;
    background-color: #c0d0e0;
}
.usr_top_block div {
    padding: 10pt;
    border: 1px solid #ffffff;
    background-color: #e4e9f2;
    text-align: center;
}

.usr_top_block span {
    font-size: 150%;
    color: #000000;
    text-shadow: #ffffff 0px 1px 0px;
}

.mTraf_log_graph {
    width: 200px;
    background-color: #ededed;
    margin-right: -15px;
}
.mTraf_log_graph div {
    height: 14px;
    background-color: #a0a0a0;
}

.sMain_request_info input[type='text'],
.sMain_request_info select {
    width: 200pt;
}

а это дебаг в вебке при нажатии "операции" на stat.pl?a=admin:
Код:
159	stat.pl
1072 calls.pm::Require_web_mod
1072 calls.pm
54 start_admin.pl
Команда ajAdmin выполняется в ajax-контексте, но http-запрос не ajax - выводим титульную страницу
прошу сильно не пинать если чего то не то


Название: Re: Миграция с 50.32
Отправлено: vddav от 13 Декабря 2012, 15:46:48
дико извиняюсь, нашел ошибку - в днк))))
надо было установить права на файлы, еще раз извиняюсь.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Декабря 2012, 16:27:07
http://ru.wikipedia.org/wiki/Firebug


Название: Re: Миграция с 50.32
Отправлено: vddav от 13 Декабря 2012, 16:41:00
http: //ru.wikipedia.org/wiki/Firebug
спс) буду знать);)


при добавлении ип-пулов существующие, похожие пулы обеденяются, так что созданные стопитсот пулов(там где были пробелы по ипам), чуть заморочившись приходят к нужному виду)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Декабря 2012, 17:45:17
Сделаю чтоб вместо указания последнего ip в пуле, _можно_ было указать количество ip


Название: Re: Миграция с 50.32
Отправлено: vddav от 15 Декабря 2012, 12:47:59
а есть варианты как быть с допданными? и не скромный вопрос - дхцп сервер сильно далеко заброшен?)


Название: Re: Миграция с 50.32
Отправлено: goletsa от 20 Декабря 2012, 01:48:42
Пытаюсь поднять копию базы на новой версии, столкнулся с небольшими ошибками при миграции:
Код:
mysql> source nodeny_plus/from_50.32_to_n_plus.txt

ERROR 1051 (42S02): Unknown table 'login_last'
ERROR 1051 (42S02): Unknown table 'newuser_opt'

ERROR 1051 (42S02): Unknown table 'traf_info'
Он ищет таблицы которых нету в 50.32 версии?
PS: traf_info в бекапе и правда скорее всего нету(сокращенный использую для тестов), а вот остальных я вообще не помню на живой системе.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 20 Декабря 2012, 11:10:16
Я тестировал переход с 49.33 и 50.33. Посмотрю сегодня какие таблицы в 50.32. Ну и допданные ессно пока тоже не переносятся из 50.32,тока из 50.33


Название: Re: Миграция с 50.32
Отправлено: goletsa от 20 Декабря 2012, 12:11:12
Я тестировал переход с 49.33 и 50.33. Посмотрю сегодня какие таблицы в 50.32. Ну и допданные ессно пока тоже не переносятся из 50.32,тока из 50.33
А можно тогда както 32->33->n+?
Или при переносе на 33 они тоже терялись?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 20 Декабря 2012, 13:45:46
Я тестировал переход с 49.33 и 50.33. Посмотрю сегодня какие таблицы в 50.32. Ну и допданные ессно пока тоже не переносятся из 50.32,тока из 50.33
А можно тогда както 32->33->n+?
Или при переносе на 33 они тоже терялись?
вроде не терялись. заодно я посмотрю как сделан переход 32->33


Название: Re: Миграция с 50.32
Отправлено: Efendy от 20 Декабря 2012, 19:23:16
Я тестировал переход с 49.33 и 50.33. Посмотрю сегодня какие таблицы в 50.32. Ну и допданные ессно пока тоже не переносятся из 50.32,тока из 50.33
А можно тогда както 32->33->n+?
Или при переносе на 33 они тоже терялись?
заапдейтся и попробуй


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 14:54:43
Я тестировал переход с 49.33 и 50.33. Посмотрю сегодня какие таблицы в 50.32. Ну и допданные ессно пока тоже не переносятся из 50.32,тока из 50.33
А можно тогда както 32->33->n+?
Или при переносе на 33 они тоже терялись?
заапдейтся и попробуй

Код:
# mysql -p nodeny < from_50.32_to_n_plus.txt > sql.log
Enter password:
ERROR 1051 (42S02) at line 35: Unknown table 'login_last'
Думаю не критично. Сейчас буду проверять как перенеслось.


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:09:18
Код:
 cat /tmp/nodeny_1356095209_3585474.log
21.12.2012 17:06:49 [(eval 9)::BEGIN(2) calls.pm(38) Db.pm::line(135) Db.pm::sql(104) Db.pm::connect(86)]
Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.111438 sec
21.12.2012 17:06:49 [(eval 9)::BEGIN(2) calls.pm(38) Db.pm::line(135) Db.pm::sql(125) Db.pm::sql(298)]
Table 'nodeny.config' doesn't exist

{
  'sql' => 'SELECT *, UNIX_TIMESTAMP() AS t FROM config ORDER BY time DESC LIMIT 1',
  'param' => []
};
 
 SELECT *, UNIX_TIMESTAMP() AS t FROM config ORDER BY time DESC LIMIT 1
Строк: -1. Время выполнения sql: 0.0002 сек
21.12.2012 17:06:49 [stat.pl(102) (eval 9)(2) (eval 9)(2) (eval 9)::BEGIN(2) stat.pl::__ANON__(25) stat.pl(25) stat.pl::Hard_exit(84) stat.pl(85)]
No config in DB at /usr/local/nodeny/web/calls.pm line 40.
Compilation failed in require at (eval 9) line 2.

21.12.2012 17:06:49 [stat.pl(102) (eval 9)(2) (eval 9)(2) (eval 9)::BEGIN(2) stat.pl::__ANON__(25) stat.pl(25) stat.pl::Hard_exit(84) stat.pl(87)]
Elapsed time: 0.291327 sec
root@nodenyplus:/usr/local/etc/apache22/ssl # mysql -unodeny -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.28-log Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use nodeny;
Database changed
mysql> INSERT INTO config SET `data`="package cfg; $img_dir = ''; 1;", time=1;
ERROR 1146 (42S02): Table 'nodeny.config' doesn't exist
mysql>
Из bill.sql взять таблицу?


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:14:17
Код:
# perl install.pl -a=admin -p=pass -v
Start. Flag -h for help

loading /usr/local/nodeny/sat.cfg

Создание суперадминской учетной записи

Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.009794 sec

Unknown column 'login' in 'field list'

{
  'sql' => 'INSERT INTO admin SET privil=\',1,2,3,\', login=?, passwd=AES_ENCRYPT(?,?)',
  'param' => [
    'admin',
    'pass',
    'secret'
  ]
};
 
 INSERT INTO admin SET privil=',1,2,3,', login='admin', passwd=AES_ENCRYPT('pass','secret')
Строк: -1. Время выполнения sql: 0.0002 сек

[!] Sql error
Хм, коряво таки обновилось.


Название: Re: Миграция с 50.32
Отправлено: Demeo от 21 Декабря 2012, 15:16:50
заапдейтся и попробуй

Код:
ERROR 1146 (42S02) at line 3: Table 'nodeny.dopvalues' doesn't exist

svn co svn://forum.nodeny.com.ua/svn/nodeny_plus nodeny
Checked out revision 82.


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:22:00
Вопрос, надо ли выполнять bill.sql(весь) после применения апдейта?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Декабря 2012, 15:28:19
Вопрос, надо ли выполнять bill.sql(весь) после применения апдейта?
нет.

А какая именно 50.32.xx ?


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:37:12
50.32.3 скорее всего, не помню точной минорной версии.
Мне приходила 50.32.10 но из-за своих фиксов я скорее всего до нее не обновился, максимум diff файлов делал для апдейта.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Декабря 2012, 15:48:32
50.32.3 скорее всего, не помню точной минорной версии.
надо накатывать sql запросы до получения 50.32.7


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:55:22
50.32.3 скорее всего, не помню точной минорной версии.
надо накатывать sql запросы до получения 50.32.7
Хорошо. Смотрю тут diff между 50.32.3 и 50.32.10 - в некоторых файлах версия вообще 49.28 указана.
Достаточно sql или еще накатить на файлы.
50.32.10 последняя в 50 ветке?


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 15:57:53
Хотя о чем я, можно же на бекап бд просто sql применить. Основную не трогая.
Т.е. обновить бд 32.3->32.10, потом сделать sql миграции на n+, этого достаточно?


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 16:14:50
Хм, и как это выполнить?
Код:
#perl
my $sth=&sql("SELECT COUNT(*) AS n FROM nets");
($sth->execute) && (my $p=$sth->fetchrow_hashref) && ($p->{n}==0) && &sql_do("INSERT INTO nets SET preset=0,priority=0,net='',port=0,class=1,comment='интернет'");


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 16:44:42
Применилось с ошибками, лог в файле.
Базу проапдейтил инсталером 50.32.10, успешно сделало.
Потом применил файл.


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 16:59:39
Ну в целом база вроде перенеслась. Я так понял задания по сети пока нереализованы?
Плюс потерялись услуги(тарифы).


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Декабря 2012, 17:30:09
Ну в целом база вроде перенеслась. Я так понял задания по сети пока нереализованы?
Плюс потерялись услуги(тарифы).
тарифы по идее должны перенестись, ну хотя бы частично, все таки структура разная. А вот привязку к клиентам пока не получится, может и возможно, но не тривиально в sql


Название: Re: Миграция с 50.32
Отправлено: goletsa от 21 Декабря 2012, 18:11:42
Ну в целом база вроде перенеслась. Я так понял задания по сети пока нереализованы?
Плюс потерялись услуги(тарифы).
тарифы по идее должны перенестись, ну хотя бы частично, все таки структура разная. А вот привязку к клиентам пока не получится, может и возможно, но не тривиально в sql
Список самих тарифов видел, но не смотрел что внутри них, именно привязки услуг  к клиенту нету.
В принципе посравниваю структуру и попробую внешним скриптом это сделать.
Среди плюсов - список клиентов грузится быстро относительно 32 версии, но пропала возможность выбирать номера домов при поиске по улице.


Название: Re: Миграция с 50.32
Отправлено: vddav от 21 Декабря 2012, 19:10:16
а я вот так привязал тарифы, просьба сильно не пинать - первый раз))
Код:
#!/usr/bin/perl
#привязка тарифов

use DBI;

my $dsn = 'DBI:mysql:bill:localhost';
my $db_user_name = 'root';
my $db_password = 'hardpass';
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
while($x<скока абонов + 1) {
$dbh->do("
insert into bill.users_services (uid,service_id)  select id,paket from test.users where id=$x;
");
$x++;
}
$dbh->disconnect();



Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 21 Декабря 2012, 20:13:57
Почему же? Я пока не смотрел что там к чему в 52-й. но если нет сложных парсов для переноса привязки, то наштампуй функцию в мускуле, даже временную, или не?


Название: Re: Миграция с 50.32
Отправлено: stix от 21 Декабря 2012, 20:17:21
конвертер данных сделать проще простого.

разве что дополнительные услуги не получится вычленить с пылу, с жару


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Декабря 2012, 23:07:39
но пропала возможность выбирать номера домов при поиске по улице.
это можно запрограмить, просто не хочется хардкодить в коде имена полей, тогда биллинг будет абсолютно универсальным. Может какие-нибудь правила в конфиге будут


Название: Re: Миграция с 50.32
Отправлено: boomer666 от 13 Февраля 2013, 15:07:06
Конвертировал базу
все хорошо кроме паролей у клиентов их в обще нет)
тарифы частично перенеслись, ток у клиентов они не стоят
можно ли конвертировать с паролями и привязкой к тарифу?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Февраля 2013, 15:49:18
Конвертировал базу
все хорошо кроме паролей у клиентов их в обще нет)
тарифы частично перенеслись, ток у клиентов они не стоят
можно ли конвертировать с паролями и привязкой к тарифу?

для паролей в sat.cfg установи тот же ключ шифрования, что и в старом NoDeny.  Услуги напрямую не совместимы, поэтому  надо писать скрипт. Могу посоветовать обратиться к Vitalvas, я думаю в состоянии написать за отдельную плату


Название: Re: Миграция с 50.32
Отправлено: boomer666 от 13 Февраля 2013, 19:44:19
с паролями разобрался спасибо.
подскажите пожалуйста  sql запрос чтобы  поставить хотя бы одинаковые тарифы поставить?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Февраля 2013, 20:51:05
с паролями разобрался спасибо.
подскажите пожалуйста  sql запрос чтобы  поставить хотя бы одинаковые тарифы поставить?
нету такого в принципе. В старом нодени услуга - это поле в таблице users,  в новом - это запись в таблице users_services  с ссылкой на сформированные специальным образом параметры в services. Чтобы их сконвертить нужно писать скрипт.  Vitalvas сможет это сделать, естественно не за бесплатно ибо это его время


Название: Re: Миграция с 50.32
Отправлено: boomer666 от 13 Февраля 2013, 21:18:33
INSERT INTO `nodeny`.`users_services` (
`id` ,
`uid` ,
`pay_id` ,
`service_id` ,
`tm_start` ,
`tm_end` ,
`next_service_id` ,
`tags`
)
VALUES (
'5', '4', '110836', '22', '1360769455', '1362088800', '22', ',inet,speed,'
);
а так нельзя?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Февраля 2013, 22:10:18
ок. можно. делай.


Название: Re: Миграция с 50.32
Отправлено: stix от 01 Марта 2013, 10:32:43
при миграции карточек багнул со старой таблицей.
в результате чего, появились дубликаты карточек.

Код:
select cid,cod,alive,serial, count(cod)  as dubcount
from cards
group by cod
having dubcount > 1
4к дубликатов
из бэкапа тянуть нельзя, ибо много карт уже активировано.

ALTER IGNORE TABLE cards ADD UNIQUE INDEX(cod);
если сделаю так, то неизвестно, какая останется (активированная), а какая нет (чистая)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 01 Марта 2013, 11:28:31
Чистых одинаковых кодов нет, правильно? Иначе при активации какую активировать? Следовательно, тебе нужно сделать уникальными активированые карточки, например так:

cod=CONCAT(cid,'-',cod)


Название: Re: Миграция с 50.32
Отправлено: stix от 01 Марта 2013, 11:30:45
вот в том то и беда, что cod повторяется.....
получается отличие в них это cid, alive

впринципе т.к. cid автоинкрементное поле, то можно удалить все дубляжи, что после 30 000 cid (у меня к ним вставлялись)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 01 Марта 2013, 11:43:18
Ты смотрел на команду concat, что я написал выше или в этом-то и беда, что не смотрел? Или код повторяется для неактивированных? тогда это некорректно в любом случае, какой смысл что-то с этим делать вообще?


Название: Re: Миграция с 50.32
Отправлено: stix от 01 Марта 2013, 11:57:12
лан, короче тут походу грабли серьезные.
дублируются "уникальные" поля.

в след раз надо будет уникальным поле cod делать


Название: Re: Миграция с 50.32
Отправлено: Efendy от 01 Марта 2013, 13:08:52
лан, короче тут походу грабли серьезные.
дублируются "уникальные" поля.

в след раз надо будет уникальным поле cod делать


CONCAT - функция конкатенации. Другими словами моя команда делает cod = cid . '-' . cod
Поле cid уникальное. Следовательно гарантированно cod будет уникальным. Естественно при апдейте нужно делать where alive>0 (или как там в старом нодени активированность определяется)


Название: Re: Миграция с 50.32
Отправлено: stix от 03 Марта 2013, 14:59:02
кстати подумав, что cid инкрементом же добавляется
запросом
DELETE t1 from cards t1, cards t2 where t1.cod=t2.cod AND t1.cid > t2.cid;
удалил все дубликаты кодов, где cid больше первого.
т.к select выбирал первые, то с alive ничего не случилось


Название: Re: Миграция с 50.32
Отправлено: Efendy от 03 Марта 2013, 19:01:24
клева, если это работает


Название: Re: Миграция с 50.32
Отправлено: Cell от 06 Марта 2013, 16:19:41
Обратил внимание что расположение скриптов /usr/local/nodeny захардкодено  в stat.pl
И если у меня это место уже занято, возникает печалька.
Есть предложение изменить дефолтное название каталога для Н+ или перенести конфиг в какое-нибудь стандартное для freebsd место и путь указывать в конфиге.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 06 Апреля 2013, 11:11:48
Я подумаю, возможно есть смысл перенести в переменные окружения.


Название: Re: Миграция с 50.32
Отправлено: Nafanya от 06 Июля 2013, 08:36:33
Прошу не пинать. Мускуле не силен но работаю.
Вопрос.
Есть в старой нодени 50,33 паспортные данные.в базе мускула Нодену+ я их наблюдаю. Создал для паспортных данных в Нодену+. Как их перетянуть в Нодену+? Подскажите. Спасибо заранее.
Думки есть но боюсь ошибиться.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 07 Июля 2013, 17:18:25
Прошу не пинать. Мускуле не силен но работаю.
Вопрос.
Есть в старой нодени 50,33 паспортные данные.в базе мускула Нодену+ я их наблюдаю. Создал для паспортных данных в Нодену+. Как их перетянуть в Нодену+? Подскажите. Спасибо заранее.
Думки есть но боюсь ошибиться.
Ну, а слабо было сделать аналогично как, скажем, перенесен телефон? Смотрим в файл перехода:

Код:
ALTER TABLE `data0` ADD `_adr_telefon` VARCHAR(255) NOT NULL;
ALTER TABLE `data0` ADD INDEX (`_adr_telefon`);
INSERT INTO datasetup SET id=4, title='[10]Телефон', name='_adr_telefon', type='4', param='', template='1', flags='abcq', comment='';
....
INSERT INTO data0 (uid,`_adr_telefon`)
    (SELECT parent_id,field_value FROM dopdata WHERE field_alias='_adr_telefon')
    ON DUPLICATE KEY UPDATE `_adr_telefon`=field_value;


Название: Re: Миграция с 50.32
Отправлено: Nafanya от 07 Июля 2013, 18:09:55
Спасибо!!!
Думал делать немного не так, но суть у меня была такая же.


Название: Re: Миграция с 50.32
Отправлено: Fredik от 16 Сентября 2013, 20:40:52
второй день воюю

подскажите пошагово как перенести 50.32 на Н+


Название: Re: Миграция с 50.32
Отправлено: Art1 от 16 Сентября 2013, 21:28:00
второй день воюю

подскажите пошагово как перенести 50.32 на Н+


Конкретней задайте вопрос. Что именно не получается?


Название: Re: Миграция с 50.32
Отправлено: Gosha от 16 Сентября 2013, 21:37:17
1. Устанавливаешь Nodeny+
2. Удаляешь таблицы из nodeny( удалял через phpmyadmin)
3. mysql -p
use nodeny;
source bill.sql; (бекап со старого биллинга)
source from_50.32_to_n_plus.txt;
4. cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -p admin=12345 ( создать нового админа , логин не должен  встречается в старом биллинге)
5. В sat.conf $Passwd_Key - состарого биллинга


Название: Re: Миграция с 50.32
Отправлено: Fredik от 17 Сентября 2013, 12:32:00
спасибо, вроде перенесло, не нет в списке не одного клиента, доступ к группе есть. а список пуст, куда копнуть?


Название: Re: Миграция с 50.32
Отправлено: Gosha от 17 Сентября 2013, 14:00:47
Скорей всего нет прав. А в базе данных клиенты есть?


Название: Re: Миграция с 50.32
Отправлено: Fredik от 17 Сентября 2013, 17:53:08
да


Название: Re: Миграция с 50.32
Отправлено: Fredik от 17 Сентября 2013, 19:28:34
даже не выходит создать нового клиента, сразу после создания пишет что его айди не найден.


Название: Re: Миграция с 50.32
Отправлено: Fredik от 17 Сентября 2013, 20:47:07
и так что-то вырисовывается

source 5032.sql - бекап старой базы
source bill.sql - чистая база Н+
source from_50.32_to_n_plus.txt;

и

4. cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -p admin=12345 ( создать нового админа , логин не должен  встречается в старом биллинге)
5. В sat.conf $Passwd_Key - состарого биллинга

но что-то делаю не так, подскажите где?
не перенеслись улицы, тарифы у клиентов,  и может быть еще что-то.


Название: Re: Миграция с 50.32
Отправлено: Gosha от 17 Сентября 2013, 21:09:19
Тарифы не переносятся. Пишется скрипт переноса тарифов(  у меня нет).
А улицы должны были перенестись , посмотри в доп. поля. Я еще переносил МАС-адреса.
А почему?
Цитировать
source 5032.sql - бекап старой базы
source bill.sql - чистая база Н+
source from_50.32_to_n_plus.txt;
Попробуй
Цитировать
drop database nodeny;
create database nodeny;
use nodeny;
source 5032.sql;
source /usr/local/nodeny/from_50.32_to_n_plus.txt;
И права на базу nodeny.


Название: Re: Миграция с 50.32
Отправлено: Art1 от 17 Сентября 2013, 21:58:30
Тарифы не переносятся. Пишется скрипт переноса тарифов(  у меня нет).

У меня перенеслись тарифы, просто как услуга к абоненту небыли подключены, надо скриптом прибивать... Скрипт есть, надо индивидуально подправлять под базу, чтоб правильно все было


Название: Re: Миграция с 50.32
Отправлено: Fredik от 17 Сентября 2013, 22:14:49
Цитировать
У меня перенеслись тарифы, просто как услуга к абоненту небыли подключены, надо скриптом прибивать... Скрипт есть, надо индивидуально подправлять под базу, чтоб правильно все было

а дай пожалуйста я подправлю под себя


Название: Re: Миграция с 50.32
Отправлено: Efendy от 17 Сентября 2013, 22:48:24
В install.pl

Код:
# Конвертер: номер пакета => id услуги
    my %tarif = (
        10 => 3,
        15 => 4,
    );


Название: Re: Миграция с 50.32
Отправлено: Art1 от 18 Сентября 2013, 08:23:10
Цитировать
У меня перенеслись тарифы, просто как услуга к абоненту небыли подключены, надо скриптом прибивать... Скрипт есть, надо индивидуально подправлять под базу, чтоб правильно все было

а дай пожалуйста я подправлю под себя

Код:
#!/usr/bin/perl


use DBI;

my $dsn = 'DBI:mysql:bill:localhost';
my $db_user_name = 'root';
my $db_password = 'hardpass';
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
while($x<Номер id последнего абонента + 1) {
$dbh->do("
insert into bill.users_services (uid,service_id)  select id,paket from test.users where id=$x;
");
$x++;
}
$dbh->disconnect();

Надо старую базу тоже залить


Название: Re: Миграция с 50.32
Отправлено: Fredik от 18 Сентября 2013, 18:30:09
большое спасибо всем откликнувшимся, вроде все перенесло, только вот названия улиц не перенесло, но ничего страшного их не много можно и руками переписать.


Название: Re: Миграция с 50.32
Отправлено: Art1 от 19 Сентября 2013, 12:53:59
большое спасибо всем откликнувшимся, вроде все перенесло, только вот названия улиц не перенесло, но ничего страшного их не много можно и руками переписать.


Проблем с улицами не было, у нас все перенеслось! У меня их дофига, руками бы долго перебивали


Название: Re: Миграция с 50.32
Отправлено: Fredik от 20 Сентября 2013, 21:48:51
после первого коннекта юзеру заглушка пишет что у него не выбрана не одна услуга.
хотя услуга выбрана и не имеет конца, если её удалить и забить ту-же - то все ок и и нет есть.
как быть?


Название: Re: Миграция с 50.32
Отправлено: Fredik от 20 Сентября 2013, 22:32:07
а так же нет следующего пакета и не стоит цена за текущий


Название: Re: Миграция с 50.32
Отправлено: Efendy от 20 Сентября 2013, 22:39:19
после первого коннекта юзеру заглушка пишет что у него не выбрана не одна услуга.
хотя услуга выбрана и не имеет конца, если её удалить и забить ту-же - то все ок и и нет есть.
как быть?
на скольких абонах проверил? может у него раньше была услуга без тега inet


Название: Re: Миграция с 50.32
Отправлено: Fredik от 20 Сентября 2013, 22:49:51
после первого коннекта юзеру заглушка пишет что у него не выбрана не одна услуга.
хотя услуга выбрана и не имеет конца, если её удалить и забить ту-же - то все ок и и нет есть.
как быть?
на скольких абонах проверил? может у него раньше была услуга без тега inet

да поставил тег inet в интернет пустило, но вот что пишет
Услуга   Стоимость
Безлимитный-50   0 $
Старт   01.01.1970 03:00
Не имеет срока действия
Следующая услуга   Нет
а по факту услуга стоит 2 грн в сутки
если выбрать руками этот же тариф то все ок и цену пишет
что еще нужно добавить?


Название: Re: Миграция с 50.32
Отправлено: Fredik от 20 Сентября 2013, 22:54:33
или если поставить начало , конец и  след пакет то в конце времени оно его изменит и продлит само? и начнет снимать деньги?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 20 Сентября 2013, 23:54:11
если ты прописал тег явно - значит ты заюзал не тот модуль услуг. Для инета нужно юзать inet_unlim


Название: Re: Миграция с 50.32
Отправлено: Efendy от 04 Октября 2013, 15:48:29
Забыл сообщить:
Код:
perl install.pl -u

добавит клиентам услуги, которые были в Н50, начиная с текущего дня и до конца месяца, причем сумма не будет уменьшена пропорционально дням. Т.е. на выходе у всех клиентов будет баланс такой же как и в Н50. Единственное, придется начислить бонусы клиентам, которые подключились в середине месяца.

В предыдущей версии инсталятора нужно было самому указывать соответствие id старой услуги = новой, сейчас автоматом


Название: Re: Миграция с 50.32
Отправлено: Groov от 23 Октября 2013, 08:35:04
подправите скрип перехода, он не создаёт таблицу links


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 09:07:21
подправите скрип перехода, он не создаёт таблицу links
ок


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 10:33:20
 Перехожу с 50,32 на Н+, сделал
use nodeny;
source bill.sql; (бекап со старого биллинга)
source from_50.32_to_n_plus.txt;
cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -p sysop=12345
perl install.pl -u

В админку захожу, данные вроде все перенеслись.Но вот только пытаюсь что-то где-то изменить получаю ошибку.
Код:
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(36) Db.pm::line(144) Db.pm::sql(113) Db.pm::connect(95)]
Connecting to DBI:mysql:database=nodeny;host=localhost;port=3306;mysql_connect_timeout=5 : 0.084339 sec
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(36) Db.pm::line(144) Db.pm::sql(134) Db.pm::sql(321)]
SELECT *, UNIX_TIMESTAMP() AS t FROM config ORDER BY time DESC LIMIT 1
Строк: 1. Время выполнения sql: 0.0009 сек
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(185)]
GET data: _unikey=vE1ilKH8zknfKjYgyYzlHA
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(220)]
  _unikey  = 'vE1ilKH8zknfKjYgyYzlHA'
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(234)]
Текущие cookies:
  noses  = 'vrpySrtwCT1wyCWF5BS1Kg'
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(254) Db.pm::line(144) Db.pm::sql(134) Db.pm::sql(321)]
SELECT * FROM websessions s LEFT JOIN admin a ON (s.uid=a.id AND s.role='admin') WHERE BINARY ses='vrpySrtwCT1wyCWF5BS1Kg' AND uid>0 LIMIT 1
Строк: 1. Время выполнения sql: 0.0024 сек
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(272)]
Сессия `vrpySrtwCT1wyCWF5BS1Kg` существует, uid: 2, role: admin
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(294) Db.pm::do(158) Db.pm::sql(134) Db.pm::sql(321)]
UPDATE websessions SET expire=UNIX_TIMESTAMP()+'7200' WHERE BINARY ses='vrpySrtwCT1wyCWF5BS1Kg' LIMIT 1
Строк: 1. Время выполнения sql: 0.0014 сек
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(301) Db.pm::line(144) Db.pm::sql(134) Db.pm::sql(321)]
SELECT * FROM webses_data WHERE BINARY unikey='vE1ilKH8zknfKjYgyYzlHA' LIMIT 1
Строк: 1. Время выполнения sql: 0.0020 сек
23.10.2013 10:41:16 [(eval 10)::BEGIN(2) calls.pm(318)]
Данные по unikey `vE1ilKH8zknfKjYgyYzlHA`: HASH(0x2888c4d8)
23.10.2013 10:41:16 [stat.pl(108) (eval 10)(2) (eval 10)(2) (eval 10)::BEGIN(2) stat.pl::__ANON__(29) stat.pl(29) stat.pl::Hard_exit(88) stat.pl(89)]
Can't use string ("HASH(0x2888c4d8)") as a HASH ref while "strict refs" in use at /usr/local/nodeny/web/calls.pm line 320.
Compilation failed in require at (eval 10) line 2.

23.10.2013 10:41:16 [stat.pl(108) (eval 10)(2) (eval 10)(2) (eval 10)::BEGIN(2) stat.pl::__ANON__(29) stat.pl(29) stat.pl::Hard_exit(88) stat.pl(91)]
Elapsed time: 0.448683 sec

Захожу по новой, все сохранилось.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 10:44:49
Какая конкретно последовательность действий приводит к такому?


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 10:46:25
 Иногда при авторизации в админке и всегда при нажатии кнопки Сохранить в Инфо юзера.


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 10:48:20
Не всё перенеслось. Все пероли как пользовательские так админские пустые.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 10:50:15
Не всё перенеслось. Все пероли как пользовательские так админские пустые.
исправь ключ шифрования паролей в sat.cfg


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 10:56:35
Иногда при авторизации в админке и всегда при нажатии кнопки Сохранить в Инфо юзера.
включи debug, нажми на кнопку "сохранить" и покажи дебаг. На странице посредине должно быть написано "редирект". Не перепутай


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 10:59:30
Redirect to ?_unikey=K/QFqQG1Z7IHFBj3dgXhIw


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 11:00:53
пароли появились.
по середине есть redirect


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 14:15:27
Черд, если есть вариант сделать не то, что я просил - он будет сделан. Я просил Дебаг!


Название: Re: Миграция с 50.32
Отправлено: SeMant от 23 Октября 2013, 14:53:31
как-то так


Название: Re: Миграция с 50.32
Отправлено: Efendy от 23 Октября 2013, 16:06:09
Покажи результат
Код:
perl -e'use Data::Dumper; my $v = { "\x{FFFF_FFFF}" }; utf8::decode($v); print Dumper($v)'


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 06 Марта 2014, 21:14:00
Приветсвую, уважаемые форумчане! Прошу помощи!
Переношу с 50.32
Всё кагбе отличненько, но никак мак адреса немогу перенести
 в текстовый файлик from_50.32_to_n_plus добавил строки

INSERT INTO mac_uid (uid,mac)     
   (SELECT parent_id, REPLACE(field_value,':','') FROM dopdata WHERE field_alias='_mac') 
   ON DUPLICATE KEY UPDATE uid=parent_id;

Но маки не переносяться(
Благодарю!)


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 06 Марта 2014, 22:24:53
Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 08:05:33
Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(


Название: Re: Миграция с 50.32
Отправлено: vddav от 07 Марта 2014, 12:21:55
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();


Название: Re: Миграция с 50.32
Отправлено: Efendy от 07 Марта 2014, 12:32:13
Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(
алиас у поля с маками _mac?


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 12:38:35
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый.
Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов.
Правильно понял?


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 12:43:46
Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(
алиас у поля с маками _mac?
Да. скрин с phpmyadmin
prntscr.com/2ymx9f


Название: Re: Миграция с 50.32
Отправлено: vddav от 07 Марта 2014, 12:57:12
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый.
Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов.
Правильно понял?
ну вроде все так))) собственно почему перловім скриптом - в 50н маки хранились с двоеточиями, а в Н+ без разделителей, собственно и пришлось такое "чудо" придумать))))


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 07 Марта 2014, 13:27:27
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac'
хоть что-то выдаст?
если нет, то это:
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'
если да, то заменить в инсерте первый селект на второй


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 13:54:33
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac'
хоть что-то выдаст?
если нет, то это:
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'
если да, то заменить в инсерте первый селект на второй
#mysql -p
mysql>use nodeny;
mysql>SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'

После етого должно было что то выдать, если я правильно понял?
но ничего не выдает ни так ни так(


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 07 Марта 2014, 14:04:32
а Вы уверены, что в базе хоть что-то есть? Например:
Код:
SELECT * FROM dopvalues LIMIT 10
Код:
SELECT * FROM dopdata LIMIT 10
даст какой-то результат?


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 14:24:14
mysql> SELECT *  FROM  `dopvalues`  WHERE  `dopfield_id` =4 LIMIT 0 , 30;
+-----------+-------------+-------------------+
| parent_id | dopfield_id | field_value       |
+-----------+-------------+-------------------+
|         1 |           4 | 001D6074A102      |
|         1 |           4 |                   |
|         1 |           4 | 001D6074A102      |
|         1 |           4 | 001D6074A103      |
|         1 |           4 | 00:1D:60:74:A1:02 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:04:00:00 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:74:A1:02 |


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 14:26:42
mysql> SELECT *  FROM  `dopvalues`  WHERE  `dopfield_id` =4 LIMIT 0 , 30;
+-----------+-------------+-------------------+
| parent_id | dopfield_id | field_value       |
+-----------+-------------+-------------------+
|         1 |           4 | 001D6074A102      |
|         1 |           4 |                   |
|         1 |           4 | 001D6074A102      |
|         1 |           4 | 001D6074A103      |
|         1 |           4 | 00:1D:60:74:A1:02 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:04:00:00 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:74:A1:02 |


Я дико извиняюсь, не ставил вконце ";"
все команды что Вы указывали выводят таблицу маков


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 07 Марта 2014, 14:31:21
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
в их числе?
должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в:
Код:
select * from rev_users limit 10;
должно быть что-то
Код:
select * from dopfields;
должно показать доп.поля


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 14:34:58
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
в их числе?
должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в:
Код:
select * from rev_users limit 10;
должно быть что-то
Код:
select * from dopfields;
должно показать доп.поля


Да, в их числе.
Выводиться таблица ID mac


Название: Re: Миграция с 50.32
Отправлено: 0xbad0c0d3 от 07 Марта 2014, 14:39:56
Тогда, предположу, что:
Код:
INSERT INTO mac_uid (uid,mac)  SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
выполнится отлично ;)


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 14:55:20
Тогда, предположу, что:
Код:
INSERT INTO mac_uid (uid,mac)  SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
выполнится отлично ;)
к сожалению не удачно(

и если
Цитировать
mysql> SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
ERROR 1146 (42S02): Table 'test.dopvalues' doesn't exist

ой, сори, ща проверю что не так делаю


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 15:57:56
Скажу что делаю и что после етого

create database nodeny;
use nodeny;
source /usr/local/nodeny/bill.sql

после етого выполнение команды в базе данных
Цитировать
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
выводит список маков и ид
но после
source /usr/local/nodeny/from_50.32_to_n_plus.txt
есть ошибки
Цитировать
ERROR 1051 (42S02): Unknown table 'rev_equip'
ERROR 1051 (42S02): Unknown table 'rev_users'
Query OK, 0 rows affected (0.00 sec)

ERROR 1051 (42S02): Unknown table 'traf_info'
ERROR 1051 (42S02): Unknown table 'traf_lost'
и выполнив в мускуле
Цитировать
mysql> SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
ERROR 1146 (42S02): Table 'nodeny.rev_users' doesn't exist


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 17:41:13
я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
благодарю, Вашим скриптиком все переноситься отличненько, нужно просто учитывать не количество абонентов а ID, и ето была моя ошибка)


Название: Re: Миграция с 50.32
Отправлено: vddav от 07 Марта 2014, 18:01:52
ну как бы абоны по порядку идут... макс ид = кол-ву абонов, хотя если абонов удаляли, ну главное что велосипед прокатил))))


Название: Re: Миграция с 50.32
Отправлено: Pa4ka от 07 Марта 2014, 18:17:32
ну как бы абоны по порядку идут... макс ид = кол-ву абонов, хотя если абонов удаляли, ну главное что велосипед прокатил))))
да, поехал на обоих колёсах)))


Название: Re: Миграция с 50.32
Отправлено: serg_sk от 31 Октября 2014, 16:04:07
Пытаюсь перейти с 50.33 на n+.

Собственно конвертация базы проходит нормально:
Цитировать
root# mysql nplus -u root -p < from_50.33_to_n_plus.txt
Enter password:
change_ippool('10.0.0.2','10.0.2.254','static','0')
1
Хотя к скрипту конвертации есть отдельные вопросы.
Зачем в нем прописано вот это?
Цитировать
DROP VIEW `rev_equip`;
 DROP VIEW `rev_users`;

Если взять bill.sql от 50.33, то видно, что в процессе установки эти вьюшки создаются и используются, но в конце установки они дропаются. Соответственно их в базе уже нет. А скрипт на этих двух строчках вылетал. Но чтобы быть чистым душой и телом, я создал эти вьюшки и скрипт перехода на n+ их дропнул и пошел дальше. Но это все лирика.

Идем дальше. Все кажется конвертнулось. Открываем веб морду и что мы видим?
Картинка: i63.fastpic.ru/big/2014/1031/7d/b7ef664aaad86794448336844639fd7d.png

Видим, что у абонент нет ни улицы, ни мака, да и выглядит карточка абонента как-то криво. Совсем не так как в демке на сайте.
Что же делать и как же заставить карточку абонента показывать корректно его данные?

И как быть с алиасами клиентов? У меня сейчас все алиасы стали отдельными абонентами.


Название: Re: Миграция с 50.32
Отправлено: SerjioMati от 31 Октября 2014, 16:20:10
Пытаюсь перейти с 50.33 на n+.

Собственно конвертация базы проходит нормально:
Цитировать
root# mysql nplus -u root -p < from_50.33_to_n_plus.txt
Enter password:
change_ippool('10.0.0.2','10.0.2.254','static','0')
1
Хотя к скрипту конвертации есть отдельные вопросы.
Зачем в нем прописано вот это?
Цитировать
DROP VIEW `rev_equip`;
 DROP VIEW `rev_users`;

Если взять bill.sql от 50.33, то видно, что в процессе установки эти вьюшки создаются и используются, но в конце установки они дропаются. Соответственно их в базе уже нет. А скрипт на этих двух строчках вылетал. Но чтобы быть чистым душой и телом, я создал эти вьюшки и скрипт перехода на n+ их дропнул и пошел дальше. Но это все лирика.

Идем дальше. Все кажется конвертнулось. Открываем веб морду и что мы видим?
Картинка: i63.fastpic.ru/big/2014/1031/7d/b7ef664aaad86794448336844639fd7d.png

Видим, что у абонент нет ни улицы, ни мака, да и выглядит карточка абонента как-то криво. Совсем не так как в демке на сайте.
Что же делать и как же заставить карточку абонента показывать корректно его данные?

И как быть с алиасами клиентов? У меня сейчас все алиасы стали отдельными абонентами.
не кажу що то так але мені здається що це повязано з r292 і вище Стас зробив 1 кнопку для вул і піб колонок. і мені кажеться що змінив можливо таблиці в бд, а скрипт не переробив.


Название: Re: Миграция с 50.32
Отправлено: serg_sk от 01 Ноября 2014, 10:38:45
С улицами разобрался, нужно было для групп поставить галочки на доп. полях.

А как с алиасами быть?


Название: Re: Миграция с 50.32
Отправлено: SerjioMati от 01 Ноября 2014, 11:00:44
С улицами разобрался, нужно было для групп поставить галочки на доп. полях.

А как с алиасами быть?
ні як.можна тільки ip а логіни і паролі різні не получиться!


Название: Re: Миграция с 50.32
Отправлено: serg_sk от 01 Ноября 2014, 12:08:13
Ну почему нельзя? Если есть возможность на 1 аккаунт вешать дополнительный IP (Правда почему-то она не работает. Колесо крутится и потом тишина), то фактически это и есть алиас в старом биллинге. Доп логины и пароли не нужны. Просто нужно, чтобы каждому ип, даже дополнительному, соответствовал свой мак адрес.


Название: Re: Миграция с 50.32
Отправлено: artful от 21 Апреля 2015, 21:52:22
Всем привет! Подскажите пожалуйста следующее: в 49-м у меня было дополнительное поле "Комментарий", при переходе на Н+ оно не перенеслось. Вот создал я такое же дополнительное поле в Н+, а можете, если это возможно подсказать как сделать, чтобы данные из старой базы этого поля перенести в новую. Может скрипт таковой имеется. А то придется порядочно информации руками перепечатывать.


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июня 2017, 07:08:03
Мигрировали с 50.32 на nodeny+. В старой системе у нас были посуточные тарифы.
В этой хотим тоже настроить ежедневное снятие.
Но почему-то не снимается абонка.
В какую сторону копнуть?
Вот настройка услуги:


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Июня 2017, 09:06:23
Ядро биллинга запущено? В частности модуль ядра services (если он не прописан в автозапуск с основным ядром)

Запусти:

Код:
perl nokernel.pl -v -m=services

и смотри в консоль, возможно вылетает ошибка, приведи ее здесь


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июня 2017, 09:49:37
Вот, запустил. Скрин ниже.

Какой командой можно посмотреть запущенный модули нодени?

Так смотрю, ядро запущенно. Но работает-ли -m=services не понятно.
Код:
# ps ax | grep nodeny | grep pl | grep -v grep
 892 v0- S       1:04,59 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d
 893 v0- S      78:51,21 /usr/bin/perl /usr/local/nodeny/noserver.pl -d

Спасибо!


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Июня 2017, 10:46:42
Есть абоненты, у которых услуга должна быть закончена уже? Если в их данных кликнуть по услуге, то во времени окончания должно быть написано "должна закончиться с минуту на минуту". Еще учти, что если ты изменил данные услуги после того, как она была подключена абону, то изменений в уже подключенной услуге не будет


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июня 2017, 20:03:52
Да, понял так и есть.
После перехода по умолчанию подвязались услуги в режиме "Конец месяца"
Потом отредактировал их на посуточную, а у абонов так и осталось.
В итоге на первое число снимется посуточная сумма?
Можно как-то sql запросом отредактировать дату конца услуги у абонентов с 1.07.2017 на, например, 12.06.2017 01:00:00
(https://image.prntscr.com/image/0VpwKWXpRxCprZSHUKIxeQ.png)

Спасибо!


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июня 2017, 21:08:53
проапдейтил на одном абоненте tm_end.
Посмотрю что будет ...


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июня 2017, 21:22:11
Все нормально.
Спасибо за подсказку!


Название: Re: Миграция с 50.32
Отправлено: NTE от 12 Июня 2017, 22:48:22
Еще одна проблема присутствует после миграции на нодени+...
У всех абонентов Тип авторизации - "Всегда онлайн"
(https://image.prntscr.com/image/Dmw-W4jXQz6zlXCC4TKjtA.png)
Абоненты работают нормально, но у всех синие ключики (вместо зеленых)
(https://image.prntscr.com/image/Bhfm4oMyRYKxKZPBeP-9bg.png)

И если в фильтре выбрать "Авторизованы всегда онлайн"
(https://image.prntscr.com/image/X607xq6PRnek3OJTTRqzTw.png)
Пишет что по фильтру ничего не найдено
(https://image.prntscr.com/image/lGWaHd-WRa6O0qLW1WJztA.png)

В чем может быть причина?


Название: Re: Миграция с 50.32
Отправлено: elite от 12 Июня 2017, 23:50:46
Модуль авторизации по трафику надо запускать


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Июня 2017, 06:17:11
1) тебе нужно чтоб "всегда онлайн" был выключен у всех абонов?
2) фильтр на скрине - это не фильтр по полю "всегда онлайн", это авторизация по факту наличия трафика


Название: Re: Миграция с 50.32
Отправлено: NTE от 13 Июня 2017, 06:31:06
1. Да, тип авторизации у абонентов так и нужен "всегда онлайн".
2 И нужно чтобы в фильтре "Авторизованы всегда онлайн" именно так и было: траф есть - абонент в фильтре отобразился

Отображение в фильтре "Авторизованы всегда онлайн" зависит от того запущена-ли программа  сбора трафика (ipcad или netflow)?

Код:
[root@nod+ /usr/home/lexx]# ps ax | grep nodeny | grep pl | grep -v grep
  892 v0- S       22:22,90 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d
  893 v0- S      493:25,92 /usr/bin/perl /usr/local/nodeny/noserver.pl -d
35829  1- S      172:17,50 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=collectors -d
[root@nod+ /usr/home/lexx]#


Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Июня 2017, 07:37:09
Конечно, сбор трафика должен быть запущен. Ну, и как сказал elite, нужно запустить модуль authtraf


Название: Re: Миграция с 50.32
Отправлено: NTE от 13 Июня 2017, 09:22:52
Спасибо!

Видимо не запущен.

В файле: authtraf.cfg
Код:
run     => 0,

interface => 'igb0',

run меняем на 1
Interface - внешний сто стороны абонента?
Если внутреннй, то там как-то можно указать несколько интерфейсов? (т.к. крутится куча вланов еще)
или достаточно указать родительский интерфейс сетевой платы?



Название: Re: Миграция с 50.32
Отправлено: Efendy от 13 Июня 2017, 10:15:07
Это используется только для arp-пингования. Указывается только один интерфейс


Название: Re: Миграция с 50.32
Отправлено: NTE от 13 Июня 2017, 22:43:42
Не запускается модуль authtraf.

Вываливается ошибка:
Код:
# /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=authtraf
Start. Flag -h for help
loading /usr/local/nodeny/sat.cfg
loading kernel::authtraf.pm
Start
retrieval of routing table: Cannot allocate memory

Памяти в системе полно.

В  /usr/local/nodeny/cfg/noserver.cfg.pm

Параметр $forward_enabled   -  пробовал и 0, и 1 
безрезультатно... Куда еще посмотреть?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 14 Июня 2017, 10:32:57
Скорее всего тебе придется отказаться от arp-пингования и оставить только авторизацию по трафику, поскольку уже несколько лет прошло, а модуль Net::Arp имеет проблемы с памятью. Можно попытаться увеличить память, выделяемую ядру (что именно увеличить? хз) и если ничего не поможет - отказаться


Название: Re: Миграция с 50.32
Отправлено: NTE от 14 Июня 2017, 13:12:00
А как можно оставить "авторизацию по трафику" и отключить арп-пингование?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 14 Июня 2017, 15:34:47
Хм. Я не сделал отключение) Пока я не выпустил обновление, можешь по-быстрому заменить
Код:
my $mac = Net::ARP::arp_lookup( $interface, $p{ipa} );
на
Код:
my $mac = '';


Название: Re: Миграция с 50.32
Отправлено: NTE от 14 Июня 2017, 16:16:39
Спасибо!
Попробую


Название: Re: Миграция с 50.32
Отправлено: NTE от 15 Июня 2017, 00:02:18
authtraf запустился, спасибо БОЛЬШОЕ!

Еще проблемка есть...
ipcad в режиме tee выжирает ресурсы процов до 100% (в divert - вобще запредельный аппетит)
Инет у абонов тормозит и, что интересно, на отдачу скорость режется почти в два раза от заявленной в услуге.
система двухпроцессорная (X5450  @ 3.00GHz) и 24 гига оперативы.

Трафик в час-пик 2.2 - 2.5 гиг

Если отключить шейп
Код:
ipfw add 100 allow tcp from any to any
ipcad уходит из топа процессов вниз, процы освобождаются.
Это значит что нужна распределенная система? Или что-то можно подправить?

50-я версия нодени сидела на серваке с одним процом E5-2620 v2 @ 2.10GHz
Была такая же ситуация.
На старой нодени пришлось переделать немного nofire.pl и rc.farewall
(отключили шейпер на отдачу и отключили шейпер на тарифах 100мб)

Здесь что-то можно подкрутить или для такого трафа надо делить билинг и nas?


Название: Re: Миграция с 50.32
Отправлено: NTE от 16 Июня 2017, 08:17:00
Если проблему никак не решить по-другому и придется разделять на биллинг и сервер доступа - E5-2620 подойдет в качестве сервера доступа?


Название: Re: Миграция с 50.32
Отправлено: elite от 17 Июня 2017, 23:31:53
Хм...
Т.е. вместо Е5 ставишь древний х5450 и удивляешься, почему тормозит?
Никаких данных о трафике, количестве абонентов и прочем не предоставил..


Название: Re: Миграция с 50.32
Отправлено: NTE от 18 Июня 2017, 07:21:08
траф в пике около 2.2 гига.
Абонов около 3к
Та было мнение что тормоза на Е5 были из-за его низкой тактовой частоты (2.1Ггц)
Посоветовали поставить пусть старее, но чтоб частота повыше и все будет ок. У нас сервак валялся без дела на двух х5450, вот его и поставили))
В общем, должно пахать если я поставлю Е5 - как молотилка трафа, а базу оставлю на х5450?

Сейчас коллектор траффика временно остановлен, как только включаешь - тормоза сразу


Название: Re: Миграция с 50.32
Отправлено: elite от 18 Июня 2017, 09:07:43
какие сетевухи?
Вообще рекомендую ставить линукс


Название: Re: Миграция с 50.32
Отправлено: NTE от 18 Июня 2017, 10:51:07
Silicom PE210G2SPi9A-XR, 2 порта 10GE - на обоих серверах.
При включенном шейпере в час-пик 2-2.2 гиг поток, если отключаю шейпер, то траф поднимается до 3 гиг

Может и правда, поставить на старый сервер линукс и организовать на нем сервер доступа?


Название: Re: Миграция с 50.32
Отправлено: elite от 18 Июня 2017, 13:11:26
Однозначно ставить линукс на E5-2620, а X5450 сдать в музей :)


Название: Re: Миграция с 50.32
Отправлено: NTE от 18 Июня 2017, 13:23:15
А если на X5450 оставлю базу как ща и есть.
А на E5-2620 поставить линукс. Повесить на него шейпер, пусть гоняет траф.

Что-то надо будет перепиливать в скриптах нодени под линукс?
Смотрю в сторону CentOS, так как имеется три сервера с этой осью, не хочется плодить зоопарк.

Может мануал есть по установке на линукс? Ищу на сайте проекта, не могу найти.

Спасибо!


Название: Re: Миграция с 50.32
Отправлено: elite от 18 Июня 2017, 14:53:19
Мануала нет, я ставил на дебиан, но принципиальной разницы нет.
Разве что на CentOS с ядром проблемы могут быть


Название: Re: Миграция с 50.32
Отправлено: NTE от 18 Июня 2017, 17:59:46
Буду пробовать.
На дебиан ставить IPFW или использовать IPTABLES?


Название: Re: Миграция с 50.32
Отправлено: elite от 18 Июня 2017, 20:42:57
я делал iptables
насколько производителен и стабилен портированный ipfw в линуксе - не могу сказать


Название: Re: Миграция с 50.32
Отправлено: Warlock от 18 Июня 2017, 20:54:50
Буду пробовать.
На дебиан ставить IPFW или использовать IPTABLES?
Извиняюсь что не в тему.. в линуксе есть ipfw или это только в дебиане?


Название: Re: Миграция с 50.32
Отправлено: NTE от 18 Июня 2017, 21:09:24
Извиняюсь что не в тему.. в линуксе есть ipfw или это только в дебиане?

Прикручивают, читал в сети. Но насчет стабильности работы действительно есть сомнения..


Название: Re: Миграция с 50.32
Отправлено: elite от 18 Июня 2017, 21:34:54
Буду пробовать.
На дебиан ставить IPFW или использовать IPTABLES?
Извиняюсь что не в тему.. в линуксе есть ipfw или это только в дебиане?
есть порт ipfw в линукс
правда не уверен, что под современные ядра подойдет...


Название: Re: Миграция с 50.32
Отправлено: NTE от 21 Июня 2017, 19:58:27
Поставил второй сервер чисто для доступа.
Пока для тестов на FreeBSD 10.3
тут же установил ipcad

Покурил то что нарыл тут на форуме и в сети.
Основной источник: http://forum.nodeny.com.ua/docs/faq.html#sats
Хочу уточнить момент...
На сервере доступа должен быть запущен noserver.pl
И nokernel.pl -m=collectors ?
Только два процесса?
Код:
659 v0- S    0:00.98 /usr/bin/perl /usr/local/nodeny/noserver.pl -d
 661 v0- S    0:00.99 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=collectors -d

Само ядро с основными модулями на standalone сервере?

Указываю у себя на компе этот сервер в качестве шлюза, включаю ping ya.ru -t
пинг идет нормально, но странички не открываются. Удаляю тестовую учетку из базы на основном сервере - пинг не проходит на ya.ru
Вроде как работает...
Где мог накосячить?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 22 Июня 2017, 06:05:03
сначала нужно проверить, что работает без  биллинга: ipfw add 1 allow ip from any to any


Название: Re: Миграция с 50.32
Отправлено: NTE от 22 Июня 2017, 07:11:26
Без биллинга все работает.
Проверил сразу.
rc.firewall из "коробки" так сказать...
поменян только внешний иньерфейс и добавлен в табличку 101 айпи этого тестового сервера 10.0.0.6
Код:
#!/bin/sh -
f='/sbin/ipfw'

ifOut='igb0'
#ifOut='re0 ng0 ng1'

use_ipcad_divert=YES


ifVia=''
ifRecv=''
tmp_or=''
for i in $ifOut
  do
    ifVia="${ifVia}${tmp_or}via $i"
    ifRecv="${ifRecv}${tmp_or}recv $i"
    tmp_or=' or '
 done

${f} -f flush

# dns, www.liqpay.com, liqpay.com
${f} table 100 add 8.8.8.8
${f} table 100 add 50.16.196.80
${f} table 100 add 107.21.122.223

# mysql slave server cs.csmoney.net
${f} table 101 add 50.17.182.68
${f} table 101 add 10.0.0.6
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any

${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 160 skipto 2000 ip from any to me

${f} add 200 skipto 500 ip from any to any { $ifVia }

${f} add 300 skipto 4500 ip from any to any in

${f} add 400 skipto 450 ip from any to any { $ifRecv }
if [ $use_ipcad_divert ]; then
  ${f} add 420 divert 1 ip from any to any
  ${f} add 450 divert 2 ip from any to any
fi
${f} add 490 allow ip from any to any

${f} add 500 skipto 32500 ip from any to any in
if [ $use_ipcad_divert ]; then
  ${f} add 510 divert 1 ip from any to any
fi
${f} add 540 allow ip from any to any


${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any

${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 22,80,443,5006
${f} add 2030 allow tcp from "table(101)" to any
${f} add 2050 deny ip from any to any { $ifVia }
${f} add 2060 allow udp from any to any 53,7723

${f} add 2100 deny ip from any to any
${f} add 4500 allow ip from any to "table(100)"
${f} add 32490 deny ip from any to any

${f} add 32500 allow ip from "table(100)" to any



Название: Re: Миграция с 50.32
Отправлено: NTE от 22 Июня 2017, 08:17:11
Сорри.. наврал

Работал нормально до колдовства с нодени
А сейчас даже с
Код:
ipfw add 1 allow ip from any to any
не открывает страницы, хотя сайты по имени пингуются...
Где-то накосячил, ща поразбираюсь


Название: Re: Миграция с 50.32
Отправлено: NTE от 22 Июня 2017, 20:15:41
С НАТом косяк был.
Все пашет, учетка управляется с центрального сервера.
Такой вопрос..
На NAS-сервере я запускаю только ДВА процесса: noserver.pl и nokernel.pl -m=collectors (ipcad установлен не на нем же)
А nokernel.pl с основными модулями ( в том числе и модулем authtraf) запущен на сервере с базой.

Правильно?


Название: Re: Миграция с 50.32
Отправлено: elite от 22 Июня 2017, 20:58:55
С НАТом косяк был.
Все пашет, учетка управляется с центрального сервера.
Такой вопрос..
На NAS-сервере я запускаю только ДВА процесса: noserver.pl и nokernel.pl -m=collectors (ipcad установлен не на нем же)
А nokernel.pl с основными модулями ( в том числе и модулем authtraf) запущен на сервере с базой.

Правильно?
необязательно, можно запускать nokernel.pl -m=collectors на сервере с базой
но я настоятельно рекомендую линукс :)


Название: Re: Миграция с 50.32
Отправлено: NTE от 22 Июня 2017, 21:50:15
Если nokernel.pl -m=collectors -d будет запущен на сервере с базой, а сам ipcad на NAS сервере.
в rc.farewall сервера с базой закомментировать строку #use_ipcad_divert=YES
а в collectors.cfg прописать айпи сервера NAS??
Код:
 {
                 type => 'ipcad',
                 addr => '10.0.0.6',
                 rsh => '/usr/bin/rsh',
             },

Ща попробую на фряхе, а потом займусь линуксом. Там же придется скрипт нодени управления фаерволом переделывать под iptables, ну и сам конфиг для iptables.


Название: Re: Миграция с 50.32
Отправлено: NTE от 23 Июня 2017, 13:32:55
Вроде все заработало.. Попробую вечером дать нагрузку..

В Нодени+ есть кнопка "информация о мак"
(https://image.prntscr.com/image/HOt8zSy9Tu6JU1F0cVj2JA.png)

Подскажите пожалуйста. какой модуль за это отвечает.
А то последняя информация от 14 числа только.
(https://image.prntscr.com/image/o_U5a57eTX6PppcsBTYT6g.png)

Видимо что-то легло...


Название: Re: Миграция с 50.32
Отправлено: NTE от 09 Июля 2017, 06:37:56
Добрый день!

Вот сегодня утром запустил в работу распределенную систему. (на обоих серверах FreeBSD 10.3 пока что)
На стороне NASа запущен коллектор трафа.
Доступ в интернет абоны получили, скорость режется и т.д.

Но... Когда смотришь последнюю авторизацию у абонента
(https://image.prntscr.com/image/ufuPFmoHS3icEOyzKTFmeg.png)

Длительность авторизации рвет на куски и пишет "меньше минуты" и не пишет МАК адрес, с каким абонент был авторизован, хотя раньше МАК записывался (когда все было на одном сервере):

(https://image.prntscr.com/image/jGn8PgHmTs654BjBo9Cgpw.png)

Подскажите пожалуйста куда копнуть.

Это на сервере с базой:
Код:
# ps ax | grep nodeny | grep pl | grep -v grep
 917 v0- S      0:57,50 /usr/bin/perl /usr/local/nodeny/nokernel.pl -d
 918 v0- S      9:42,79 /usr/bin/perl /usr/local/nodeny/noserver.pl -d
 919 v0- S      2:17,07 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=collectors -d
 920 v0- S      0:16,17 /usr/bin/perl /usr/local/nodeny/nokernel.pl -m=authtraf -d
Модуль authtraf - запущен отдельным процессом.

Это на сервере доступа:
Код:
# ps ax | grep nodeny | grep pl | grep -v grep
1197 v0- S       9:08.26 /usr/bin/perl /usr/local/nodeny/noserver.pl -d

Код:
]# perl nokernel.pl -L
Start. Flag -h for help
loading /usr/local/nodeny/sat.cfg

MODULE                   AUTORUN?
authtraf                    -
system_clean               YES
collectors                  -
services                   YES
notifications               -
tmppays                    YES
balance                    YES
auth                       YES
system_check               YES
websession                 YES
authserver                  -
cap                         -
make_config                 -

Спасибо!


Название: Re: Миграция с 50.32
Отправлено: NTE от 09 Июля 2017, 09:42:03
А этот код с сервера с базой:

Код:
# perl nokernel.pl -L
Start. Flag -h for help
loading /usr/local/nodeny/sat.cfg

MODULE                   AUTORUN?
authtraf                    -
auth                       YES
tmppays                    YES
services                   YES
system_clean               YES
cap                         -
system_check               YES
notifications               -
balance                    YES
authserver                  -
collectors                  -
make_config                 -
websession                 YES

В админке по этому фильтру, то пусто:
(https://image.prntscr.com/image/xgt5UOT3QymMu0TtVuFaJw.png)

то показывает авторизованных:
(https://image.prntscr.com/image/EqcvYbxgRo2IXJjvvjI6Pw.png)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 11 Июля 2017, 14:18:38
Мак не показывает, потому что мы с тобой недавно отключили модуль arp-пингования:

Код:
my $mac = '';


Название: Re: Миграция с 50.32
Отправлено: NTE от 11 Июля 2017, 22:56:05
Да, понял.

Но вот почему так показывает "Авторизованы всегда онлайн"? То пустой фильтр, то есть авторизованные.
Причем если постоянно обновлять админку их количество увеличивается постепенно, потом постепенно уменьшается пока никого не останется )))


Название: Re: Миграция с 50.32
Отправлено: Efendy от 12 Июля 2017, 15:09:10
Если авторизация в NoDeny не обновляется некоторое время (параметр timeout секунд в файле /usr/local/nodeny/kernel/auth.cfg), то она (авторизация) пропадает. По умолчанию timeout = 150 - это 2 с половиной минуты. Если за этот период не будет трафика - авторизация удаляется, появится трафик - появится авторизация. Если человек открыл сайт и читает его 3 минуты - авторизация пропадет, откроет новую страницу - появится.

Фишка в том, что режим "всегда онлайн" - это костыль для тех, кто ну никак не может либо настроить нормальную авторизацию, либо подстроить свою схему работы либо по иным необъективным причинам. В нормальной сети лучше отказаться от  "всегда онлайн". Как при "всегда онлайн" понять что комп авторизован? Вообще, что понимать под авторизацией если как таковой авторизации нет? Либо пинать (пинговать) комп либо смотреть на его проявления (есть ли трафик).

Модуль authtraf пытается изобразить авторизацию. Комп включен - он авторизован или нет? Комп включен, но у него неверные настройки (весь трафик блочится фаерволом и он фактически не получает инет) - он авторизован или нет? И т.д. аналогичные вопросы.

Я надеюсь вы поняли, что проблема не в недоработке модуля, а в том, что есть какие-то объективные причины в нашем мире, по которым некоторые вещи невозможны.

Если ты все же хочешь остаться на этом костыле и не хочешь видеть рваные авторизации - увеличь параметр timeout, но этим ты получишь лаг в том, что комп будет уже выключен, а ключик будет светиться, что он авторизован.


Название: Re: Миграция с 50.32
Отправлено: NTE от 12 Июля 2017, 19:54:13
понял, спасибо! ))

Если поставить модуль дхцп и раздавать МАК+IP, абонентов, которые в работе, можно видеть в админке?


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 04 Ноября 2018, 19:45:04
Не могу найти HOW TO по миграции с 50.32 в мануале.
Помогите.
Или тут вариант "как получится"?


Название: Re: Миграция с 50.32
Отправлено: Cell от 04 Ноября 2018, 23:07:28
Не могу найти HOW TO по миграции с 50.32 в мануале.
Помогите.
Или тут вариант "как получится"?
ООО, тебя ждет много приятных минут секса. Впрочем, если подготовка есть, то справиться реально, нужно лишь уметь читать логи и самое главное понимать что в них написано. Я  такую миграцию осуществил ну раз может 10 или чуть больше, но не было ни одного одинакового случая. Поэтому братский совет - тренироваться на тестовой базе. Т.е. текущую тупо скопировать в тестовую и над ней уже проводить пробу.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 04 Ноября 2018, 23:21:15
Не могу найти HOW TO по миграции с 50.32 в мануале.
Помогите.
Или тут вариант "как получится"?
ООО, тебя ждет много приятных минут секса. Впрочем, если подготовка есть, то справиться реально, нужно лишь уметь читать логи и самое главное понимать что в них написано. Я  такую миграцию осуществил ну раз может 10 или чуть больше, но не было ни одного одинакового случая. Поэтому братский совет - тренироваться на тестовой базе. Т.е. текущую тупо скопировать в тестовую и над ней уже проводить пробу.

Именно это сейчас и делаю) очень интересно, что получится


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 05 Ноября 2018, 00:07:05
Выбивает ошибку в дебаге, не хочет редактировать админов.
Код:
Unknown column 'adm_owner' in 'field list' 

{
  'param' => [],
  'sql' => 'SELECT a.*, c.card_balance FROM admin a LEFT JOIN (SELECT adm_owner, SUM(money) AS card_balance FROM cards WHERE alive IN(\'good\', \'activated\') GROUP BY adm_owner) c ON a.id=c.adm_owner ORDER BY a.login'
};
 
 SELECT a.*, c.card_balance FROM admin a LEFT JOIN (SELECT adm_owner, SUM(money) AS card_balance FROM cards WHERE alive IN('good', 'activated') GROUP BY adm_owner) c ON a.id=c.adm_owner ORDER BY a.login

в поиске по этой теме ничего не нашел.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 05 Ноября 2018, 08:08:58
Вроде улицы в объектах все есть, группы, кол-во юзеров.
Но админов нету ниодного, и если добавляю - не появляются, только в мускуле светятся в таблицах.

Помогите, пожалуйста :)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 05 Ноября 2018, 08:59:54
Выполни в консоли:

Цитировать
show create table cards;

и покажи результат


Название: Re: Миграция с 50.32
Отправлено: Cell от 05 Ноября 2018, 09:02:28
Пишет же что нет поля 'adm_owner' в таблице cards


Название: Re: Миграция с 50.32
Отправлено: Efendy от 05 Ноября 2018, 11:10:01
Пишет же что нет поля 'adm_owner' в таблице cards
так чтобы 2 раза не вставать можно увидеть несоответствия и по другим полям


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 05 Ноября 2018, 19:32:39
Выполни в консоли:

Цитировать
show create table cards;

и покажи результат

Код:
mysql> show create table cards;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| cards | CREATE TABLE `cards` (
  `cid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `cod` tinytext CHARACTER SET cp1251 NOT NULL,
  `money` float(6,2) NOT NULL DEFAULT '0.00',
  `tm_create` int(11) unsigned NOT NULL DEFAULT '0',
  `tm_end` int(11) unsigned NOT NULL DEFAULT '0',
  `tm_activate` int(11) unsigned NOT NULL DEFAULT '0',
  `tm_move` int(11) unsigned DEFAULT '0',
  `adm_create` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `alive` enum('good','bad','stock','activated') NOT NULL DEFAULT 'good',
  `uid_activate` int(10) unsigned NOT NULL DEFAULT '0',
  `r` mediumint(9) NOT NULL DEFAULT '0',
  PRIMARY KEY (`cid`),
  KEY `r` (`r`)
) ENGINE=InnoDB AUTO_INCREMENT=136000 DEFAULT CHARSET=utf8 COMMENT='rev_0' |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 05 Ноября 2018, 22:53:16
Код:
ALTER TABLE cards CHANGE cod cod TEXT NOT NULL;
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);
ALTER TABLE cards ADD UNIQUE (cod(36));


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 05 Ноября 2018, 23:39:36
Код:
ALTER TABLE cards CHANGE cod cod TEXT NOT NULL;
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);
ALTER TABLE cards ADD UNIQUE (cod(36));

Как то так:
Код:
mysql> ALTER TABLE cards CHANGE cod cod TEXT NOT NULL;
Query OK, 135951 rows affected (1.23 sec)
Records: 135951  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';
ERROR 1264 (22003): Out of range value for column 'adm_owner' at row 11937

mysql> ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ERROR 1054 (42S22): Unknown column 'adm_owner' in 'cards'

mysql> ALTER TABLE cards ADD INDEX (adm_move);
ERROR 1072 (42000): Key column 'adm_move' doesn't exist in table

mysql> ALTER TABLE cards ADD UNIQUE (cod(36));
Query OK, 0 rows affected (0.52 sec)
Records: 0  Duplicates: 0  Warnings: 0


Название: Re: Миграция с 50.32
Отправлено: Efendy от 06 Ноября 2018, 08:07:31
Вероятно у тебя в таблице с картами, у какой-то карты id оператора некорректный (видимо отрицательный).  Либо, возможно, отрицательный id оператора  устанавливается когда карточки в состоянии перемещения (уже не помню, дохера лет прошло с той старой версии). Попробуй так:

Код:
UPDATE cards SET r=ABS(r);
Отпиши в форум результат выполнения - если что я в скрипт перехода добавлю.

Код:
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';

 Если этот запрос выдаст ошибку, то:

Код:
ALTER TABLE cards CHANGE r adm_owner INT(11) NOT NULL DEFAULT '0';

И в конце в любом случае:

Код:
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);



Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 06 Ноября 2018, 10:42:28
Вероятно у тебя в таблице с картами, у какой-то карты id оператора некорректный (видимо отрицательный).  Либо, возможно, отрицательный id оператора  устанавливается когда карточки в состоянии перемещения (уже не помню, дохера лет прошло с той старой версии). Попробуй так:

Код:
UPDATE cards SET r=ABS(r);
Отпиши в форум результат выполнения - если что я в скрипт перехода добавлю.

Код:
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';

 Если этот запрос выдаст ошибку, то:

Код:
ALTER TABLE cards CHANGE r adm_owner INT(11) NOT NULL DEFAULT '0';

И в конце в любом случае:

Код:
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);



Вот есть такие карты, это еще наверное с 45ой версии ;D ) скрин в приложении


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 06 Ноября 2018, 10:58:22
Вероятно у тебя в таблице с картами, у какой-то карты id оператора некорректный (видимо отрицательный).  Либо, возможно, отрицательный id оператора  устанавливается когда карточки в состоянии перемещения (уже не помню, дохера лет прошло с той старой версии). Попробуй так:

Код:
UPDATE cards SET r=ABS(r);
Отпиши в форум результат выполнения - если что я в скрипт перехода добавлю.

Код:
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';

 Если этот запрос выдаст ошибку, то:

Код:
ALTER TABLE cards CHANGE r adm_owner INT(11) NOT NULL DEFAULT '0';

И в конце в любом случае:

Код:
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);



После этих строк, все завелось с первого раза.
Осталось маки перенести.

Есть одно но, нету паролей, в 50.32 нету pswdkey в sat.cfg, соотвественно и сюда не прописывал.
И еще в некоторых английских логинах появились знаки восклицания в конце, странно.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 06 Ноября 2018, 11:04:57
Знаки восклицания - это когда с таким же логином есть админ


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 07 Ноября 2018, 07:41:05
По поводу переносу маков(Установил модуль ДХЦП):
Выполняю запрос
Код:
SELECT parent_id,field_value FROM dopdata WHERE field_alias='_mac';
Вижу таблицу маков.
Далее по примеру из поисков в этой теме выполняю запрос на перенос маков:
Код:
INSERT INTO mac_uid (uid,mac)         (SELECT parent_id, REPLACE(field_value,':','') FROM dopdata WHERE field_alias='_mac')      ON DUPLICATE KEY UPDATE uid=parent_id;

ERROR 1364 (HY000): Field 'ip' doesn't have a default value
Но мне выдает ошибку по поводу айпи.

Сейчас заметил, что у клиента теперь две вкладки "подключение" и "айпи адрес", и там и там есть выбор адреса, но при миграции всем создало адрес на вкладке "айпи адрес".

Проясните, пожалуйста.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 07 Ноября 2018, 08:18:37
Поле ip адрес:
  • в таблице ip_pool - это реально привязанный к учетке ip
  • в таблице mac_uid - он временно используется системой в ситуации когда выдан ip по неизвестному маку, потом после ввода логина и пароля этот ip привязывается как динамический в таблице ip_pool. На странице "подключения" тоже можно ввести ip и он будет записан в mac_uid, но это пока тестовая вещь и пока не дотестирована.
Тебе не нужно переносить ip в mac_uid, а только в ip_pool. В mac_uid ставь ip=0.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 07 Ноября 2018, 16:17:50
Поле ip адрес:
  • в таблице ip_pool - это реально привязанный к учетке ip
  • в таблице mac_uid - он временно используется системой в ситуации когда выдан ip по неизвестному маку, потом после ввода логина и пароля этот ip привязывается как динамический в таблице ip_pool. На странице "подключения" тоже можно ввести ip и он будет записан в mac_uid, но это пока тестовая вещь и пока не дотестирована.
Тебе не нужно переносить ip в mac_uid, а только в ip_pool. В mac_uid ставь ip=0.


Так я хочу маки перенести, айпи перенеслись стандартным скриптом.

В табилце ip_pool вижу такую картину, здесь нету поля для мак адреса:

Код:
mysql> select * from ip_pool limit 10;
+----+------------+--------+--------+---------+------+------+
| id | ip         | type   | realip | release | uid  | tags |
+----+------------+--------+--------+---------+------+------+

Исходя из структуры таблицы mac_uid, то мне нужно сюда перенести.
Код:
mysql> show columns from mac_uid;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| id          | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| mac         | varchar(12)         | YES  | UNI | NULL    |                |
| ip          | int(10) unsigned    | NO   | MUL | NULL    |                |
| uid         | bigint(20) unsigned | NO   | MUL | NULL    |                |
| time        | int(10) unsigned    | NO   | MUL | NULL    |                |
| device_mac  | varchar(12)         | NO   |     | NULL    |                |
| device_port | smallint(6)         | NO   |     | NULL    |                |
| oneconnect  | tinyint(4)          | NO   |     | 0       |                |
| comment     | varchar(256)        | YES  |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+

Что я делаю не так?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 07 Ноября 2018, 17:19:47
В скрипте конвертации есть sql переноса ip:

Код:
INSERT INTO ip_pool SELECT NULL, INET_ATON(ip), 'static', 0, 0, id FROM users;

Маки переносятся чуть сложнее. Нужно искать sql, я делал нескольким людям

Нашел, вроде этот:

Код:
INSERT INTO mac_uid (uid, mac, ip, time, device_mac, device_port, oneconnect, comment)
    (SELECT parent_id, REPLACE(REPLACE(field_value, ':', ''), '-', ''), 0, 0, '', 0, 0, ''
     FROM dopdata WHERE field_alias='_mac' AND field_value <>'')
    ON DUPLICATE KEY UPDATE uid=parent_id;


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 08 Ноября 2018, 03:11:41
В скрипте конвертации есть sql переноса ip:

Код:
INSERT INTO ip_pool SELECT NULL, INET_ATON(ip), 'static', 0, 0, id FROM users;

Маки переносятся чуть сложнее. Нужно искать sql, я делал нескольким людям

Нашел, вроде этот:

Код:
INSERT INTO mac_uid (uid, mac, ip, time, device_mac, device_port, oneconnect, comment)
    (SELECT parent_id, REPLACE(REPLACE(field_value, ':', ''), '-', ''), 0, 0, '', 0, 0, ''
     FROM dopdata WHERE field_alias='_mac' AND field_value <>'')
    ON DUPLICATE KEY UPDATE uid=parent_id;

Моему счастью нет предела)))  ;D
Все перенеслось, спасибо огромное)

Но перестал рабоать make_konfig, даже с пустым темплейтом пишет ошибку, по макам проверил пустых нету:

Код:
SELECT * FROM mac_uid ORDER BY mac
Строк: 10. Время выполнения sql: 0.0247 сек

Can't use string ("") as a HASH ref while "strict refs" in use at /usr/local/nodeny/kernel/make_config.pm line 131.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 10 Ноября 2018, 00:38:23
Не могу побороть ошибку..
131 строка как раз таки на запросах маков
Код:
if( $config->{db_table}{mac_uid} )
    {
        my $db = Db->sql("SELECT * FROM mac_uid ORDER BY mac");
        $db->ok or return;
        my $indexes = {};
        while( my %p = $db->line )
        {
            my $uid = $p{uid};
            exists $users{$uid} or next;
            my $i = $indexes->{$uid}++ || '0';
            $users{$uid}->{connection}{$i} = \%p;
           [b] $users{$uid}->{mac}{$i++} = $p{mac};[/b]
        }
    }

Can't use string ("") as a HASH ref while "strict refs" in use at /usr/local/nodeny/kernel/make_config.pm line 131.

Правильно я понимаю, что ошибка, про то, что есть пустая строка в столбце с МАКами?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 10 Ноября 2018, 08:52:53
Нет. Возможно это связано с версией perl. Выполни в консоли bash-а:
Код:
perl -e'use strict; my $a={}; $a->{a}{a} = 5'
ошибку выдает?

И покажи версию perl:

Код:
perl -v | head -2


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 10 Ноября 2018, 09:02:05
Нет. Возможно это связано с версией perl. Выполни в консоли bash-а:
Код:
perl -e'use strict; my $a={}; $a->{a}{a} = 5'
ошибку выдает?

И покажи версию perl:

Код:
perl -v | head -2

Ошибок  нету.

Код:
# perl -e'use strict; my $a={}; $a->{a}{a} = 5'
# perl -v | head -2

This is perl 5, version 26, subversion 2 (v5.26.2) built for amd64-freebsd-thread-multi


Название: Re: Миграция с 50.32
Отправлено: Efendy от 10 Ноября 2018, 11:05:08
а у тебя поля mac в таблице users случайно нет?
Код:
show create table users;


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 10 Ноября 2018, 18:59:37
а у тебя поля mac в таблице users случайно нет?
Код:
show create table users;

Упс... есть все-таки. Это еще с 45ой версии осталось когда сам дхцп модуль делал  ;D

Код:
| users | CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `passwd` tinytext CHARACTER SET cp1251 NOT NULL,
  `grp` tinyint(4) unsigned NOT NULL DEFAULT '0',
  `contract` tinytext NOT NULL,
  `contract_date` int(10) unsigned NOT NULL DEFAULT '0',
  `state` enum('off','on') NOT NULL DEFAULT 'on',
  `balance` float(10,2) NOT NULL DEFAULT '0.00',
  `limit_balance` float(6,2) NOT NULL DEFAULT '0.00',
  `block_if_limit` tinyint(4) NOT NULL DEFAULT '0',
  `mac` tinytext CHARACTER SET cp1250 NOT NULL,
  `modify_time` int(11) NOT NULL DEFAULT '0',
  `fio` tinytext NOT NULL,
  `discount` tinyint(4) NOT NULL DEFAULT '0',
  `real_ip` tinytext CHARACTER SET cp1251 NOT NULL,
  `cstate` int(11) NOT NULL DEFAULT '0',
  `cstate_time` int(10) unsigned NOT NULL DEFAULT '0',
  `comment` varchar(8192) NOT NULL DEFAULT '',
  `lstate` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `state` (`state`)
) ENGINE=InnoDB AUTO_INCREMENT=3448 DEFAULT CHARSET=utf8 COMMENT='rev_0' |

Итого, сделал
Код:
ALTER TABLE users DROP mac;

make_config заработал.
Спасибо :) Не так просто мигрировать, как казалось.


Название: Re: Миграция с 50.32
Отправлено: Efendy от 10 Ноября 2018, 19:48:59
Если в базу вносились изменения, конечно модуль миграции о них не знает, поэтому и трудно мигрировать. Если все стандартно, то проблем не должно быть. Удали еще real_ip


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 12 Ноября 2018, 22:05:58
понял, спасибо! ))

Если поставить модуль дхцп и раздавать МАК+IP, абонентов, которые в работе, можно видеть в админке?

И только сейчас, я понял, что это делает модуль дхцп))) через скрипт events.pl, он авторизует клиентов, и не нужно больше режим ВСЕГДА ОНЛАЙН, как это было в 50.32  ;D


Название: Re: Миграция с 50.32
Отправлено: Cell от 13 Ноября 2018, 08:47:13
Это если у тебя все на одном тазике крутится. Хотя у меня юзеры и так умудрялись заглушку увидеть. А если саттелиты выносные - то команда включения проходит не мгновенно и чудовище наблюдает заглушку а еще хуже пустой экран какое-то время. А учитывая поведение некоторых браузеров, свой любимый порносайт он может увидеть только когда кэш сбросит. А так-то да, все клево.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 14 Ноября 2018, 15:04:31
А почему с документации убрали ман по настройке НАСа на фрибсд?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 14 Ноября 2018, 15:35:23
А почему с документации убрали ман по настройке НАСа на фрибсд?
Еще не перенесли в новую документацию, в старой есть: http://app.nodeny-plus.com.ua/docs/faq.html#sats


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 19 Ноября 2018, 00:22:07
Вероятно у тебя в таблице с картами, у какой-то карты id оператора некорректный (видимо отрицательный).  Либо, возможно, отрицательный id оператора  устанавливается когда карточки в состоянии перемещения (уже не помню, дохера лет прошло с той старой версии). Попробуй так:

Код:
UPDATE cards SET r=ABS(r);
Отпиши в форум результат выполнения - если что я в скрипт перехода добавлю.

Код:
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';

 Если этот запрос выдаст ошибку, то:

Код:
ALTER TABLE cards CHANGE r adm_owner INT(11) NOT NULL DEFAULT '0';

И в конце в любом случае:

Код:
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);




вот результат

Код:
mysql> UPDATE cards SET r=ABS(r);
Query OK, 7 rows affected (0.45 sec)
Rows matched: 135951  Changed: 7  Warnings: 0

mysql> ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';
Query OK, 135951 rows affected (0.62 sec)
Records: 135951  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
Query OK, 135951 rows affected (0.63 sec)
Records: 135951  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE cards ADD INDEX (adm_move);
Query OK, 135951 rows affected (0.83 sec)
Records: 135951  Duplicates: 0  Warnings: 0



Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 19 Ноября 2018, 01:43:01
Вот пробую перенести БД рабочую, затирает все пользовательские пароли, админские остаются.

из файла миграции, почему разные типы? varbinary и VARCHAR ?
Код:
ALTER TABLE `admin` MODIFY COLUMN passwd varbinary(64) NOT NULL;
 ALTER TABLE `users` MODIFY COLUMN passwd VARCHAR(64) NOT NULL;

пытаюсь разобраться что их затирает в NULL...


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 19 Ноября 2018, 03:30:23
Прошелся позапросно по файлу миграции и именно этот запрос затирает пароли...
Код:
 ALTER TABLE `users` MODIFY COLUMN passwd VARCHAR(64) NOT NULL;

при
Код:
SELECT AES_DECRYPT(passwd,'hardpass3') FROM users;
выдает NULL

в то же время у админов все ок
Код:
SELECT AES_DECRYPT(passwd,'hardpass3') FROM admin;

что это может быть то?


в итоге изменил запрос для пользователей на  ALTER TABLE `users` MODIFY COLUMN passwd varbinary(64) NOT NULL;
ничего страшного вроде совместимы типы.


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 20 Ноября 2018, 11:19:38
Добавлю еще текста в мой монолог ;D

Столкнулся с проблемой авторизации по DHCP после миграции.
Делал так
Код:
use nodeny;
source bill.sql; (бекап со старого биллинга)
source from_50.32_to_n_plus.txt;
cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -u

Так оказывается что в скрипте миграции старые функции и процедуры.
Пришлось накатывать вручную.

Но появился глупый вопрос, если сделать после обновление на нашу базу с данными такое:
Код:
use nodeny;
source bill.sql; (от Н+ , который идет в комплекте)

Оно обновит структуру и процедуры? или удалит данные?


Название: Re: Миграция с 50.32
Отправлено: NodenY45 от 20 Ноября 2018, 17:49:57
Если авторизация в NoDeny не обновляется некоторое время (параметр timeout секунд в файле /usr/local/nodeny/kernel/auth.cfg), то она (авторизация) пропадает. По умолчанию timeout = 150 - это 2 с половиной минуты. Если за этот период не будет трафика - авторизация удаляется, появится трафик - появится авторизация. Если человек открыл сайт и читает его 3 минуты - авторизация пропадет, откроет новую страницу - появится.

Фишка в том, что режим "всегда онлайн" - это костыль для тех, кто ну никак не может либо настроить нормальную авторизацию, либо подстроить свою схему работы либо по иным необъективным причинам. В нормальной сети лучше отказаться от  "всегда онлайн". Как при "всегда онлайн" понять что комп авторизован? Вообще, что понимать под авторизацией если как таковой авторизации нет? Либо пинать (пинговать) комп либо смотреть на его проявления (есть ли трафик).

Модуль authtraf пытается изобразить авторизацию. Комп включен - он авторизован или нет? Комп включен, но у него неверные настройки (весь трафик блочится фаерволом и он фактически не получает инет) - он авторизован или нет? И т.д. аналогичные вопросы.

Я надеюсь вы поняли, что проблема не в недоработке модуля, а в том, что есть какие-то объективные причины в нашем мире, по которым некоторые вещи невозможны.

Если ты все же хочешь остаться на этом костыле и не хочешь видеть рваные авторизации - увеличь параметр timeout, но этим ты получишь лаг в том, что комп будет уже выключен, а ключик будет светиться, что он авторизован.

это относится только к модулю authtraf?
или и к dhcp тоже?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Ноября 2018, 07:52:28
Модуль ядра dhcp тоже пытается изобразить авторизацию ибо после получения ip и до момента запроса на продолжение его использования dhcp серверр никак не знает вырубили комп или нет, ну и следовательно биллинг об этом не знает. В dhcp протоколе не предусмотрено такое


Название: Re: Миграция с 50.32
Отправлено: Jovani от 10 Октября 2019, 13:59:01
Прошу допомоги.
При переході з 50.32 на Н+ виникає помилка як додавати нового клієнта.
Код:
	0.400556	
304 Db.pm::sql


Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables.

{
  'param' => [
    8688
  ],
  'sql' => 'INSERT INTO users_trf SET uid=?'
};
 
 INSERT INTO users_trf SET uid='8688'

+ 0.400759
181 Db.pm::rollback
rollback


Название: Re: Миграция с 50.32
Отправлено: Jovani от 10 Октября 2019, 15:02:01
Конвертнув по новому, вилізла інша помилка
Код:
Field 'ip' doesn't have a default value 

{
  'sql' => 'INSERT INTO users SET modify_time=UNIX_TIMESTAMP(), comment=?, lstate=?, contract_date=?, limit_balance=?, block_if_limit=?, grp=?, state=?, cstate=?, contract=?, cstate_time=?, fio=?, passwd=AES_ENCRYPT(?,?), id=?',
  'param' => [
    '',
    0,
    0,
    '0',
    1,
    20,
    'on',
    1,
    '',
    0,
    '',
    '87464438h1',
    '3654xx',
    8683
  ]
};
 
 INSERT INTO users SET modify_time=UNIX_TIMESTAMP(), comment='', lstate='0', contract_date='0', limit_balance='0', block_if_limit='1', grp='20', state='on', cstate='1', contract='', cstate_time='0', fio='', passwd=AES_ENCRYPT('87464438h1','3654xx'),
 id='8683'


Название: Re: Миграция с 50.32
Отправлено: Efendy от 10 Октября 2019, 17:43:21
В N+ поле ip не должно существовать в таблице users. Скорее всего проблема возникла в более ранних sql, смотри внимательно


Название: Re: Миграция с 50.32
Отправлено: Jovani от 11 Октября 2019, 07:26:13
Так мне все поля удалить с такой ошибкой и те которых нет в оригинальной базе Н+?
Field 'name' doesn't have a default value но такое поле присутствует в базе Н+...


Название: Re: Миграция с 50.32
Отправлено: Redmen от 11 Октября 2019, 09:09:13
http://forum.nodeny.com.ua/index.php?topic=2724.msg27908#msg27908 (http://forum.nodeny.com.ua/index.php?topic=2724.msg27908#msg27908)


Название: Re: Миграция с 50.32
Отправлено: Jovani от 11 Октября 2019, 15:50:20
http://forum.nodeny.com.ua/index.php?topic=2724.msg27908#msg27908 (http://forum.nodeny.com.ua/index.php?topic=2724.msg27908#msg27908)

Спасибо, помогло.

Но теперь осталась такая ошибка.

Посмотрел таблицу users_trf, там нет uid 8696...

Код:
Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables. 

{
  'sql' => 'INSERT INTO users_trf SET uid=?',
  'param' => [
    8696
  ]
};
 
 INSERT INTO users_trf SET uid='8696'


Название: Re: Миграция с 50.32
Отправлено: Jovani от 11 Октября 2019, 17:07:10
Мне кажется нет данных у кого какая услуга. Хотя если открыть клиента, услуга у клиентов установлена.
Как можно одни запросом пересохранить всех клиентов?
Будет не реально заходить и каждого клиента пересохранять.
 
Код:
describe users_trf ;
+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| uid      | int(11) unsigned | NO   | PRI | NULL    |       |
| submoney | float            | NO   |     | 0       |       |
| in1      | bigint(20)       | NO   |     | 0       |       |
| out1     | bigint(20)       | NO   |     | 0       |       |
| in2      | bigint(20)       | NO   |     | 0       |       |
| out2     | bigint(20)       | NO   |     | 0       |       |
| in3      | bigint(20)       | NO   |     | 0       |       |
| out3     | bigint(20)       | NO   |     | 0       |       |
| in4      | bigint(20)       | NO   |     | 0       |       |
| out4     | bigint(20)       | NO   |     | 0       |       |
| in5      | bigint(20)       | NO   |     | 0       |       |
| out5     | bigint(20)       | NO   |     | 0       |       |
| in6      | bigint(20)       | NO   |     | 0       |       |
| out6     | bigint(20)       | NO   |     | 0       |       |
| in7      | bigint(20)       | NO   |     | 0       |       |
| out7     | bigint(20)       | NO   |     | 0       |       |
| in8      | bigint(20)       | NO   |     | 0       |       |
| out8     | bigint(20)       | NO   |     | 0       |       |
| traf1    | bigint(20)       | NO   |     | 0       |       |
| traf2    | bigint(20)       | NO   |     | 0       |       |
| traf3    | bigint(20)       | NO   |     | 0       |       |
| traf4    | bigint(20)       | NO   |     | 0       |       |
| test     | tinyint(4)       | NO   |     | 0       |       |
| actual   | tinyint(4)       | NO   | MUL | 0       |       |
+----------+------------------+------+-----+---------+-------+
24 rows in set (0.00 sec)


Название: Re: Миграция с 50.32
Отправлено: Efendy от 12 Октября 2019, 10:07:40
Я думаю проблема в этом:
Цитировать
non-transactional tables
скорее всего таблица в myisam и надо сконвертировать в innodb


Название: Re: Миграция с 50.32
Отправлено: Jovani от 12 Октября 2019, 10:14:30
Стас большое спасибо за подсказку, конвертнул таблицы users и trf, пока ошибок в дебаг нет.
Все таблицы конвертировал в InnoDB.


Название: Re: Миграция с 50.32
Отправлено: Jovani от 16 Октября 2019, 14:05:25
1. После перехода у всех стоит снятие за услугу 0.
Как теперь сделать, чтоб у всех сняло за услугу?

Платеж, связанный с услугой, не существует!

2. И появился бонус у всех у кого было несколько IP.
Откуда он взялся?
Как решить такие проблемы ?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 21 Октября 2019, 17:35:07
Как ты подключил услуги?

Код:
perl install.pl -u
?


Название: Re: Миграция с 50.32
Отправлено: Jovani от 22 Октября 2019, 07:06:54
Такое не выполнял кажется...
Делал так
Код:
use nodeny;
source bill.sql; (бекап со старого биллинга)
source from_50.32_to_n_plus.txt;
cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m


Выполнил команду на клоне сервера, ничего не поменялось...
То самое показывает и за стоимость услуги  у клиента не сняло..
Или снимет в конце месяца?


Название: Re: Миграция с 50.32
Отправлено: Efendy от 22 Октября 2019, 21:22:02
Как происходит конвертация с Н50 на Н+:
1) выполнение from_50.33_to_n_plus.txt в mysql. Этот скрипт меняет таблицы под Н+. В частности таблицу с услугами. Но он не подключает ни одной услуги! Поскольку подключение это не только запись в базу, надо выполнять код, который многое высчитывает. Создается временная таблица pkt_to_srv, которая хранит соответствия id тарифа в Н50 -> id тарифа в Н+
2) perl install.pl -u непосредственно подключает услуги основываясь на таблице pkt_to_srv

Если ты не запускал  perl install.pl -u, а услуги подключены - значит спрашивай того, кто тебе дал/делал скрипты перехода ибо после выполнения from_50.33_to_n_plus.txt  не должно быть подключено ни единой услуги.


Название: Re: Миграция с 50.32
Отправлено: Jovani от 23 Октября 2019, 05:40:02
Так никто ничего не делал, все файлы с svn. Описал више постом, конвертировал 5 раз, и каждыйвыходил  по разному.
И как теперь с этого можно вырулить?

Так. Нашел такую таблицу. Скопировал pkt_to_srv с одной из баз, вроде сейчас нет ошибки у клиентов.но влепило каждому клиенту  дополнительную услугу.


Название: Re: Миграция с 50.32
Отправлено: Jovani от 23 Октября 2019, 10:33:40
Стас спасибо, направил на правильную схему.
Все получилось.
Заменил таблицу pkt_to_srv и services
Удалил все с таблицы users_services
Проверил таблицу v_services чтоб была пустая
Выполнил команду install.pl -u
И все ок.


Название: Re: Миграция с 50.32
Отправлено: kali от 04 Мая 2020, 22:59:45
Прошу помочь разобраться  , переход с 50.32  на nodeny plus  делаю по процедуре

use nodeny;
source bill.sql; (бекап со старого биллинга)
source from_50.32_to_n_plus.txt;
cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m

Переносится все кроме услуги  ( как описано ранее так и должно быть после миграции  ) .

Выполняю perl install.pl -u    но услуга не добавляется .


таблицы  pkt_to_srv выглядит так 

"12"   "8"   \N
"14"   "2"   \N
"16"   "1"   \N
"18"   "3"   \N
"20"   "3"   \N
"22"   "3"   \N
"23"   "2"   \N

Подскажите  как исправить   ?