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

Главная категория => Nodeny 50 => Тема начата: 0xbad0c0d3 от 28 Февраля 2011, 20:06:17



Название: Свободные IP
Отправлено: 0xbad0c0d3 от 28 Февраля 2011, 20:06:17
Может еще кому понадобится (блондинизация админки)
Суть: возможность выбора свободного IP для клиента принепосредственном редактировании, а не после нажатия на кнопку "Сохранить"
файл: web/user.pl
После строки:
Код:
987 $OUT.=&RRow('*','ll','Группа',$grps) if $grps;
Код:
 988 # ----------- Формирование списка свободных IP для текущего юзера
 989 $gn=&sql_select_line($dbh,"SELECT grp_nets FROM user_grp WHERE grp_id=$grp LIMIT 1",'Получим сети для группы');
 990 $allow_ips = '';
 991 if($gn && $gn->{grp_nets}){
 992         @nets = split /\n/, $gn->{grp_nets};
 993         &LoadNetMod;
 994         foreach $net (@nets){
 995                 ($nip)=&nNet_GetNextIp($net);
 996                 $nip or next;
 997                 $allow_ips .= qq{<span class=data2 style='cursor:pointer;border:0;' onClick="document.getElementById(12).value='$nip'">$nip</span>}.$br;
 998         }
 999 }
1000 # ----------------------------------
После строки:
Код:
1001 $OUT.=&show_line($PR{71},$ip_cell,'ip',$ipp,18,18,$PR{71} && '<input type=checkbox name=setip value=1'.&SS.
Код:
1003 # -------- Список свободных ИП
1004 $span = qq{<span style='cursor:pointer;' onClick='this.style.display="none";document.getElementById(100500).style.display=""'>Свободные адреса</span>};
1005 $OUT.=&RRow('*','ll','&nbsp;',qq{$span<div style='display:none' id='100500'>$allow_ips</div>}) if $PR{71} && $allow_ips;
1006 # ----------------------------


Название: Re: Свободные IP
Отправлено: stix от 28 Февраля 2011, 20:32:56
Код:
"> <acronym title='Поставьте галочку если хотите изменить ip'>&nbsp;?</acronym>");
дальше будет ругаться


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 28 Февраля 2011, 21:40:18
cl_brainon "1"
и смотрим на нумерацию строк


Название: Re: Свободные IP
Отправлено: ale-x от 03 Марта 2011, 19:33:40
+1 к карме, очень полезный патчик! Спасибо.


Название: Re: Свободные IP
Отправлено: ale-x от 03 Марта 2011, 20:57:20
Как бы еще такое сделать для доп данных (у меня там маки и ip для dhcp)


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 03 Марта 2011, 22:02:19
Эм... А зачем там ip? Чем не устраивает тот, что в поле таблицы users???


Название: Re: Свободные IP
Отправлено: ale-x от 03 Марта 2011, 22:10:41
он выдается юзеру который подключает инет через pppoe или vpn


Название: Re: Свободные IP
Отправлено: VitalVas от 03 Марта 2011, 22:28:51
он выдается юзеру который подключает инет через pppoe или vpn
а в чем проблема загнать их в другую подсеть?


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 03 Марта 2011, 22:58:02
он выдается юзеру который подключает инет через pppoe или vpn
С этим прекрасно справляются алиасы


Название: Re: Свободные IP
Отправлено: ale-x от 03 Марта 2011, 23:17:19
Инет раздается по pppoe и vpn (mpd5). Все юзеры получают по dhcp только локалку (у каждого свой внутрисетевой ip, который выдается по маку).


Название: Re: Свободные IP
Отправлено: Demeo от 31 Мая 2011, 20:50:18
При выборе другой группы (с другой подсетью) IP все равно выдается с подсети действующей группы


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 31 Мая 2011, 20:58:38
Ой что-то я сомневаюсь в корректности Ваших дейтсвий. Точнее не в корректности, а в последовательности и логичности.
Выбираем группу, Сохраняем, тыкаем "Свободные ОйПи"
Предполагаю, что последовательность такая (в данный момент):
Выбираем группу, Тыкаем "Свободные ОйПи", удивляемся, что там все по-старому.
P.S. Code#2 (1003-1006) Изменил в нормальный вид )
Код:
# -------- Список свободных ИП
$addrs_lnk = &ahref(qq{javascript:show_x("addrs")},'&darr;&nbsp;Свободные адреса');
$OUT.=&RRow('*','ll',
        '&nbsp;',
        qq{$addrs_lnk<div style='display:none' id='my_x_addrs'>$allow_ips</div>}
) if $PR{71} && $allow_ips;
# ----------------------------


Название: Re: Свободные IP
Отправлено: Demeo от 31 Мая 2011, 21:41:39
Ой что-то я сомневаюсь в корректности Ваших дейтсвий. Точнее не в корректности, а в последовательности и логичности.
Выбираем группу, Сохраняем, тыкаем "Свободные ОйПи"
Предполагаю, что последовательность такая (в данный момент):
Выбираем группу, Тыкаем "Свободные ОйПи", удивляемся, что там все по-старому.
P.S. Code#2 (1003-1006) Изменил в нормальный вид )
Код:
# -------- Список свободных ИП
$addrs_lnk = &ahref(qq{javascript:show_x("addrs")},'&darr;&nbsp;Свободные адреса');
$OUT.=&RRow('*','ll',
        '&nbsp;',
        qq{$addrs_lnk<div style='display:none' id='my_x_addrs'>$allow_ips</div>}
) if $PR{71} && $allow_ips;
# ----------------------------


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


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 31 Мая 2011, 21:46:37
А такой расклад меня и не интересует. Никто Вам не навязывает данного патча. Мне он нужен т.к. менялась адресация сети) для некторых абонов ИП нужно было менять руцямы. без лишних теловижений этого сделать нельзя. Потому и делалась такая "веСЧ".


Название: Re: Свободные IP
Отправлено: Demeo от 31 Мая 2011, 21:54:05
Может сформировать свободные IP для всех групп? Тогда можно будет делать меньше телодвижений при переводе абона в другую группу. А если подсеть не разрешена - все равно матюкнется при сохранении. Но это уже не для "блондинок" ))


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 31 Мая 2011, 21:58:00
Строки: 998-1000 решают. Никто не против!


Название: Re: Свободные IP
Отправлено: evp от 10 Июня 2011, 16:47:52
Небольшая трабла при редактировании алиаса. При тычке на свободный ip он вставляется не в поле ip-адрес, а в поле ФИО.

Можно это поправить?


Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 11 Июня 2011, 07:45:33
Да, давно поправил, просто не выкладывал.
Код:
963 $OUT.=&RRow('*','ll','Группа',$grps) if $grps;
964 # ----------- Формирование списка свободных IP для текущего юзера
965 $gn=&sql_select_line($dbh,"SELECT grp_nets FROM user_grp WHERE grp_id=$grp LIMIT 1",'Получим сети для группы');
966 $allow_ips = '';
967 if($gn && $gn->{grp_nets}){
968         @nets = split /\n/, $gn->{grp_nets};
969         &LoadNetMod;
970         foreach $net (@nets){
971                 ($nip)=&nNet_GetNextIp($net);
972                 $nip or next;
973                 $allow_ips .= qq{<span class=data2 style='cursor:pointer;border:0;' onClick="document.getElementsByName('ip')[0].value='$nip'">$nip</span>}.$br;
974         }
975 }
976 # ----------------------------------
977 $OUT.=&show_line($PR{71},$ip_cell,'ip',$ipp,18,18,$PR{71} && '<input type=checkbox name=setip value=1'.&SS.
978    "> <acronym title='Поставьте галочку если хотите изменить ip'>&nbsp;?</acronym>");
979 # -------- Список свободных ИП
980 $addrs_lnk = &ahref(qq{javascript:show_x("addrs")},'&darr;&nbsp;Свободные адреса');
981 $OUT.=&RRow('*','ll',
982         '&nbsp;',
983         qq{$addrs_lnk<div style='display:none' id='my_x_addrs'>$allow_ips</div>}
984 ) if $PR{71} && $allow_ips;
985 # ----------------------------


Название: Re: Свободные IP
Отправлено: stix от 11 Июня 2011, 08:37:20
хорошая идея
надо будет переделать, чтобы брал из топологии
Код:
$gn=&sql_select_line($dbh,"SELECT grp_nets FROM user_grp WHERE grp_id=$grp LIMIT 1",'Получим сети для группы');


Название: Re: Свободные IP
Отправлено: evp от 11 Июня 2011, 13:30:31
Да, давно поправил, просто не выкладывал.
Спасибо. Теперь все работает как надо :)


Название: Re: Свободные IP
Отправлено: Rico-X от 12 Июня 2011, 07:14:54
Спасибо. Очень удобный патчик.


Название: Re: Свободные IP
Отправлено: Ashandy от 08 Июля 2011, 17:29:38
А возможно ли сделать так?:
У меня 52 подсети. Делать отдельную группу для каждой подсети весьма неудобно - громоздкий список.
Поэтому все подсети описаны в одной группе.
отсюда вопрос - как сделать чтобы к каждой строчке с предложением свободного айпи я мог добавить коментарий
и выглядело например так:


Подсеть                                   Свободный ip

(пионерная 2) 10.9.3.0/24   10.9.3.31
(пионерная 4) 10.9.5.0/24   10.9.5.31



Название: Re: Свободные IP
Отправлено: 0xbad0c0d3 от 08 Июля 2011, 18:00:28
Что-то я Вас слабо понимаю. Каждый юзер находится в отдельной группе
пионерная 2, пионерная 4. А у этих групп настроены свои подсети.


Название: Re: Свободные IP
Отправлено: ser970 от 08 Июля 2011, 18:49:33
А возможно ли сделать так?:
У меня 52 подсети. Делать отдельную группу для каждой подсети весьма неудобно - громоздкий список.
Поэтому все подсети описаны в одной группе.
отсюда вопрос - как сделать чтобы к каждой строчке с предложением свободного айпи я мог добавить коментарий
и выглядело например так:


Подсеть                                   Свободный ip

(пионерная 2) 10.9.3.0/24   10.9.3.31
(пионерная 4) 10.9.5.0/24   10.9.5.31


можно   


Название: Re: Свободные IP
Отправлено: Ashandy от 08 Июля 2011, 19:15:25
Что-то я Вас слабо понимаю. Каждый юзер находится в отдельной группе
пионерная 2, пионерная 4. А у этих групп настроены свои подсети.

Нее, я же уточнил что отдельные группы для этих подсетей я не создавал, ибо посчитал что 52группы в списке это сильно много.
Создал одну. в ней указал какие входят подсети.
данная фича нужна чисто для "блондизации", потому мне то понятно какой айпи нужно назначать какому дому. А вот другой человек, по крайней мере первоначальное время, будет делать ошибки...
К сожалению не знаю перла, но виду это так:
в описании группы к строке подсети можно добавить какой то символ а затем коментарий, ну а скрипт то что после этого символа и будет воспринимать как коментарий, и соответственно его выводить


Название: Re: Свободные IP
Отправлено: ser970 от 09 Июля 2011, 01:03:03
Подсеть                                   Свободный ip
(пионерная 2) 10.9.3.0/24   10.9.3.31
(пионерная 4) 10.9.5.0/24   10.9.5.31

уже есть такое и можно каждую подсеть обозвать как угодно не только по улице и дому.

типа

vlan12_мк_октября   192.168.12.0/24
vlan22_мк_октября   192.168.22.0/24
vlan25_мк_александровка   192.168.25.0/24

да и в билинге ето есть если заполнить топологию



Название: Re: Свободные IP
Отправлено: ser970 от 18 Июля 2011, 08:21:49
вот еще маленькое
adduser.pl

$house.='/'.&Filtr_out($p->{block}) if $p->{block} ;
 $house.=' п.'.&Filtr_out($p->{pod}) if $p->{pod} ;

выводит

Точка:    Дом/блок:  подезд:   Подсеть:    IP:

это когда в одном доме 2 и более точек (также можно добавить этаж)