NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #195 : 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 | | +-------------+---------------------+------+-----+---------+----------------+ Что я делаю не так?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #196 : 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;
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #197 : 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; Моему счастью нет предела))) Все перенеслось, спасибо огромное) Но перестал рабоать 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.
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #198 : 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. Правильно я понимаю, что ошибка, про то, что есть пустая строка в столбце с МАКами?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #199 : 10 Ноября 2018, 08:52:53 » |
|
Нет. Возможно это связано с версией perl. Выполни в консоли bash-а: perl -e'use strict; my $a={}; $a->{a}{a} = 5' ошибку выдает? И покажи версию perl:
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #200 : 10 Ноября 2018, 09:02:05 » |
|
Нет. Возможно это связано с версией perl. Выполни в консоли bash-а: perl -e'use strict; my $a={}; $a->{a}{a} = 5' ошибку выдает? И покажи версию perl: Ошибок нету. # 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
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #201 : 10 Ноября 2018, 11:05:08 » |
|
а у тебя поля mac в таблице users случайно нет?
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #202 : 10 Ноября 2018, 18:59:37 » |
|
а у тебя поля mac в таблице users случайно нет? Упс... есть все-таки. Это еще с 45ой версии осталось когда сам дхцп модуль делал | 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 заработал. Спасибо Не так просто мигрировать, как казалось.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #203 : 10 Ноября 2018, 19:48:59 » |
|
Если в базу вносились изменения, конечно модуль миграции о них не знает, поэтому и трудно мигрировать. Если все стандартно, то проблем не должно быть. Удали еще real_ip
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #204 : 12 Ноября 2018, 22:05:58 » |
|
понял, спасибо! ))
Если поставить модуль дхцп и раздавать МАК+IP, абонентов, которые в работе, можно видеть в админке?
И только сейчас, я понял, что это делает модуль дхцп))) через скрипт events.pl, он авторизует клиентов, и не нужно больше режим ВСЕГДА ОНЛАЙН, как это было в 50.32
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #205 : 13 Ноября 2018, 08:47:13 » |
|
Это если у тебя все на одном тазике крутится. Хотя у меня юзеры и так умудрялись заглушку увидеть. А если саттелиты выносные - то команда включения проходит не мгновенно и чудовище наблюдает заглушку а еще хуже пустой экран какое-то время. А учитывая поведение некоторых браузеров, свой любимый порносайт он может увидеть только когда кэш сбросит. А так-то да, все клево.
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #206 : 14 Ноября 2018, 15:04:31 » |
|
А почему с документации убрали ман по настройке НАСа на фрибсд?
|
|
|
Записан
|
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #208 : 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
|
|
|
Записан
|
|
|
|
NodenY45
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 365
|
|
« Ответ #209 : 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...
|
|
|
Записан
|
|
|
|
|