Биллинговая система Nodeny
29 Сентября 2024, 18:24:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 [2]
  Печать  
Автор Тема: переезд с 45b на 50  (Прочитано 14415 раз)
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #15 : 19 Марта 2010, 18:49:20 »

Операции ->
С низу с лева
Отметьте группы, которые вы хотите временно исключить из работы

а при входе в систему??
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #16 : 20 Марта 2010, 00:07:24 »

Операции ->
С низу с лева
Отметьте группы, которые вы хотите временно исключить из работы

а при входе в систему??

В настройках администратора
Записан
Unix
Гость
« Ответ #17 : 27 Сентября 2010, 14:56:07 »

А есть конвертер с 45й версии на 49.33 ?

Может кто то допиливал под себя?
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1227

In LAN we trust!

358714596
Просмотр профиля
« Ответ #18 : 27 Сентября 2010, 15:45:28 »

А есть конвертер с 45й версии на 49.33 ?

Может кто то допиливал под себя?
ну надо сначала в 48 сконвертировать, а потом в 49

если необходима помощь - пиши в личку
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #19 : 27 Сентября 2010, 19:34:54 »

есть такой sql конвертер. спрашивай у versusa, у него должен быть.
Записан
Unix
Гость
« Ответ #20 : 02 Октября 2010, 10:58:20 »

Просьба у кого есть выложить на upload.com.ua дать ссылочки

Так как я понял нужно 2 раза конвертировать. Сначала с 45 на 48, а потом на 49/50. верно?
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #21 : 02 Октября 2010, 15:25:31 »

перечитать тему пробовали ? Там все указано и откуда конвертер брать и как обновлять
Записан
Sork
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 29

Nodeny 50.32.


Просмотр профиля
« Ответ #22 : 02 Октября 2010, 19:50:00 »

сделал переезд с 45q на последнюю 50.32, полу-ручная, но все же работает, итак порядок переезда:

1) Проинсталлировать Nodeny50.32 по инструкции, провести базововую настройку, добавить в том же порядке как и в Nodeny 45 - улицы, администраторов (с теми же логинами!), услуги, тарифы (с теми же номерами), сделать допополнительное поле "Внешний IP" и идентификатором 13, "email" c идентификатором 14, группы пользователей (сверьте идентификаторы в разделе CASE grp скрипта)
2) сделать бекап базы bill
3) сделать копию данных из Nodeny45 в базу bill45 на том же сервере где стоит Nodeny50.
4) Из-под phpMyAdmin залогинившись под рутом и зайдя в базу bill45 выполнить скрипт (спасибо Versus`у за изначальную версию скрипта).

Код:
-- Перенос пользователей с паролями и группами.
INSERT INTO bill.users (SELECT id,ip,name,AES_ENCRYPT(pass,'hardpass3') as passwd,
CASE grp
      WHEN '0' THEN '1'
      WHEN '6' THEN '2'
      WHEN '1' THEN '3'
      ELSE '1'
   END AS grp,
mid,contract,modify_time as contract_date,state,auth,balance,"0.00" as money,limit_balance,
CASE block_if_limit
      WHEN 'yes' THEN '1'
      WHEN 'no' THEN '0'
      ELSE '0'
   END AS block_if_limit,
sortip,modify_time,fio,srvs,paket,next_paket,"0" as paket3, "0" as next_paket3, start_day, "0" as discount, hops, cstate, UNIX_TIMESTAMP(NOW()) as cstate_time, comment, lstate, "0" AS detail_tarif
FROM bill45.users ORDER BY id);

-- перенос трафика
INSERT INTO bill.users_trf (SELECT id,ip,0,0,0,0,paket,in1,out1,in2,out2,in3,out3,in4,out4,0,0,0,0,0,0,0,0,'',0,0,0,0,0,0 FROM bill45.users);

-- перенос платежей
USE bill;
TRUNCATE TABLE `pays`;
ALTER TABLE bill.pays ADD `flag` CHAR(1) AFTER `category`;
INSERT INTO bill.pays (SELECT p.id,mid,cash,time,IF(a.id IS NULL,0,a.id),INET_ATON(admin_ip),0,bonus,reason,coment,0,0,flag FROM bill45.pays AS p LEFT JOIN bill.admin AS a ON p.admin=a.admin);

UPDATE bill.pays SET type=10,category=110,bonus='y' WHERE flag='i';
UPDATE bill.pays SET type=10 WHERE flag='p';
UPDATE bill.pays SET type=20 WHERE flag='t';
UPDATE bill.pays SET type=30 WHERE flag='m' AND bonus='';
UPDATE bill.pays SET type=40 WHERE flag='a';
UPDATE bill.pays SET type=50 WHERE flag='m' AND bonus<>'';
ALTER TABLE bill.pays DROP flag;
delete from bill.pays where cash=0 and bonus='u' and type=50;
delete from bill.pays where cash=0 and bonus='t' and type=50;
delete from bill.pays where cash=0 and bonus='x' and type=50;
delete from bill.pays where cash=0 and bonus='a' and type=50;
delete from bill.pays where cash=0 and bonus='b' and type=50;
delete from bill.pays where cash=0 and bonus='c' and type=50;
delete from bill.pays where cash=0 and bonus='d' and type=50;

update bill.pays set reason=replace(reason,'Заказ на смену пакета в следующем месяце: ',''),bonus='',category=428
  WHERE cash=0 AND reason LIKE 'Заказ на смену пакета в следующем месяце: %' AND type=50 AND bonus='e';

update bill.pays set reason=replace(reason,'Администратор изменил данные:',''),bonus='',category=410
  WHERE cash=0 AND reason LIKE 'Администратор изменил данные:%' AND type=50 AND bonus='1';
UPDATE bill.pays SET category=410,bonus='' WHERE cash=0 AND type=50 AND bonus='1';

UPDATE bill.pays SET category=411,bonus='' WHERE cash=0 AND type=50 AND bonus='h';

update bill.pays set reason=replace(reason,'Первая авторизация. Устанавливаю день начала потребления услуг = ',''),bonus='',category=422
   WHERE cash=0 AND reason LIKE 'Первая авторизация. Устанавливаю день начала потребления услуг = %' AND type=50 AND bonus='l';

update bill.pays set reason='',bonus='',category=421
   WHERE cash=0 AND reason LIKE 'Первая авторизация. Учетная запись выведена из состо%' AND type=50;

update bill.pays set reason='',bonus='',category=421
   WHERE cash=0 AND reason LIKE 'Первое потребление трафика. Учетная запись выведена из состо%' AND type=50;

update bill.pays set reason=replace(reason,'Первое потребление трафика клиентом. Устанавливаю день начала потребления услуг = ',''),category=422,bonus=''
  WHERE cash=0 AND reason LIKE 'Первое потребление трафика клиентом. Устанавливаю день начала потребления услуг = %' AND type=50;

update bill.pays set category=1000 where type=20;

UPDATE bill.pays SET category=420,bonus='' WHERE cash=0 AND bonus='v' AND type=50;

UPDATE bill.pays SET category=460 WHERE cash=0 AND bonus='j' AND type=50;
UPDATE bill.pays SET category=461 WHERE cash=0 AND bonus='g' AND type=50;

UPDATE bill.pays SET category=408 WHERE type=40 AND category=0;

UPDATE bill.pays SET category=490 WHERE mid>0 AND type=30 AND admin_id<>0;
UPDATE bill.pays SET category=492 WHERE mid>0 AND type=30 AND admin_id=0;
UPDATE bill.pays SET category=495 WHERE mid>0 AND type=30 AND coment='' AND reason<>'' AND admin_id<>0;
update bill.pays set category=600 where mid>0 and type=10 and bonus='' and cash>0;
update bill.pays set category=700 where mid>0 and type=10 and bonus='' and cash<0;

5) Исправляем перед денег между администраторами. Здесь я поленился, придется вручную заменить <id> на идентификатор админа, Adm_login - на логин админа (и так для всех админов).
Код:
UPDATE bill.pays SET pays.reason=<id> WHERE pays.reason LIKE "%Adm_login%";
UPDATE bill.pays SET pays.coment=<id> WHERE pays.coment LIKE "%Adm_login%";
UPDATE bill.pays SET pays.reason=<id2> WHERE pays.reason LIKE "%Adm_login2%";
UPDATE bill.pays SET pays.coment=<id2> WHERE pays.coment LIKE "%Adm_login2%";
...

6) Переносим дополнительные поля (спасибо bondar за изначальную версию скрипта).
Переносятся: улица, дом, квартира, телефон, МАК, разрешение smtp (в таком порядке были в 45й версии), Email из поля "Комментарий к адресу", внешний IP.
convert.pl
Код:
#!/usr/bin/perl
#

# Настройки скрипта
$admin_id = 1;
$add_time = time;
$revision = 1;

# Настройка доступа к базе данных
$dbname='bill45';                         # Имя БД
$dbuser='root';                  # Логин БД
$dbpass='root_pass';                 # Пароль БД

use DBI;
$DSN="DBI:mysql:database=$dbname;host=localhost;";
$dbh = DBI->connect($DSN,$dbuser,$dbpass);
unless ($dbh) {
    print ("Error Database");
    }

# Настройка доступа к базе данных
$dbname1='bill';                         # Имя БД
$dbuser1='root';                  # Логин БД
$dbpass1='root_pass';                 # Пароль БД


$DSN1="DBI:mysql:database=$dbname1;host=localhost;";
$dbh1 = DBI->connect($DSN1,$dbuser1,$dbpass1);
unless ($dbh1) {
    print ("Error Database");
    }


$sth=$dbh->prepare("SELECT `id`, `street`, `house`, `room`, `telefon`, `adress`, `privat_ip`, `allow_proxy` FROM `users`;");
$sth->execute();
while ($p=$sth->fetchrow_hashref){
        $dop=$p->{'allow_proxy'};
        $id=$p->{'id'};
        $street=$p->{'street'};
        $house=$p->{'house'};
        $room=$p->{'room'};
        $telefon=$p->{'telefon'};
        $email=$p->{'adress'};
        $privat_ip=$p->{'privat_ip'};
        $privat_ip=~ s/-//g;
        ($ipmac,$smtp,undef,undef,undef)=split(/\|/,$dop);
        $ipmac=~ s/\#//s;
        $ipmac=~ s/-/:/g;
        $smtp= ($smtp eq 'yes'?1:0);
        print "$id - $ipmac - $smtp - $street - $house - $room - $telefon - $email - $privat_ip\n";
        $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        $revision=$dbh1->last_insert_id(0,bill,"dopvalues",line_id);
$dbh1->do("DELETE FROM `dopvalues` WHERE line_id =$revision");
 
        if($ipmac){
        $id_dop=4;$to_insert=$ipmac;
                $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }
        if($smtp){
        $id_dop=3;$to_insert=$smtp;
                $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }
        if($street){
         $id_dop=5; $to_insert=$street;
         $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
         $id_dop=6; $to_insert=$house;
         $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
         $id_dop=8; $to_insert=$room;
         $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }
        if($telefon){
        $id_dop=9; $to_insert=$telefon;
        $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }
        if($privat_ip){
         $id_dop=13; $to_insert=$privat_ip;
         $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }
        if($email){
         $id_dop=14; $to_insert=$email;
         $dbh1->do("INSERT INTO `dopvalues` (`line_id`, `parent_id`, `dopfield_id`, `field_value`, `admin_id`, `time`, `revision`) VALUES (0, '$id', '$id_dop', '$to_insert', '$admin_id', '$add_time', '$revision');");
        }

}

7) после этого логинимся в nodeny50 и делаем проверку (Операции - Проверка).

с этого момента все пользователи с платежами и сообщениями полностью перенесены. Потеряны - история трафика, топология, логи.
Записан
Unix
Гость
« Ответ #23 : 05 Октября 2010, 12:30:47 »

А как на счет вот этого конвертера 31.03.2009_45q_to_49.sql от Версуса?

Он работает нормально?
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #24 : 05 Октября 2010, 13:15:50 »

Я не понимаю что мешает сделать тестовый сервер, хоть железный хоть софтовый в вмваре и протестить переход?
Я понимаю что все страшно и хочется перестраховатся по любому поводу, но делать это все равно прийдется, почему бы не тестить это и не решать по ходу в тестовом режиме ?
На момент перевода 3-х сетей с 44 и 45 версий на 49 все работало нормально для меня. Переезд закончился удачно!
Записан
Unix
Гость
« Ответ #25 : 06 Октября 2010, 01:02:32 »

После конвертирования базы все пароли (как админов. так и юзеров) стали в ероглифы,  наверное что то с кодировкой.
Так и должно быть или нужно что то подправить?
Записан
Sork
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 29

Nodeny 50.32.


Просмотр профиля
« Ответ #26 : 06 Октября 2010, 07:14:50 »

А как на счет вот этого конвертера 31.03.2009_45q_to_49.sql от Версуса?

Он работает нормально?

мой переход и сделал на его базе.
от себя я добавил - корректировку перевода денег между администраторами, перенос пользователей в другие группы, перенос дополнительных полей (адрес и т.д.)
Записан
Sork
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 29

Nodeny 50.32.


Просмотр профиля
« Ответ #27 : 06 Октября 2010, 07:16:04 »

После конвертирования базы все пароли (как админов. так и юзеров) стали в ероглифы,  наверное что то с кодировкой.
Так и должно быть или нужно что то подправить?
так и должно быть.
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #28 : 15 Ноября 2013, 22:03:42 »

Может кому пригодится сам скрипт. Оставлю тут что б не потерялся окончательно
Записан
Страниц: 1 [2]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!