Диапазон ип в поле CID

Ответить
ageNT_666
Сообщения: 34
Зарегистрирован: Ср мар 10, 2010 8:15 am

Диапазон ип в поле CID

Сообщение ageNT_666 »

Сделайте чтоб в поле сид можно было указывать не только 1 ип или мак, но и диапазон ИПов например так. 192.168.150.0/24 Заранее благодарен, и надеюсь что изменения коснуться не только платную версию(хоть и собираемся покупать).

ЗЫ. Я бы комментарии к учетке перенес поближе к логину.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Диапазон ип в поле CID

Сообщение ~AsmodeuS~ »

можно указывать через запятую сиды или так не подходит ?

ageNT_666
Сообщения: 34
Зарегистрирован: Ср мар 10, 2010 8:15 am

Re: Диапазон ип в поле CID

Сообщение ageNT_666 »

ну что через запятую это я знаю, но в некоторых случаях нужно именно пул.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Диапазон ип в поле CID

Сообщение ~AsmodeuS~ »

под заказ сделаем 60 $

denk
Сообщения: 8
Зарегистрирован: Сб мар 26, 2011 11:33 am

Re: Диапазон ип в поле CID

Сообщение denk »

Да... $60 за всего-то смену в запросе к базе с in на in decode(...). Так жить можно было бы. :) Хотя какой decode, это же mysql.

~AsmodeuS~
Site Admin
Сообщения: 5746
Зарегистрирован: Пт янв 28, 2005 3:11 pm
Контактная информация:

Re: Диапазон ип в поле CID

Сообщение ~AsmodeuS~ »

никто не мешает на альтруизме сделать это, но как говорится говорить могут все

SmallFox
Сообщения: 7
Зарегистрирован: Чт апр 24, 2008 8:17 am

Re: Диапазон ип в поле CID

Сообщение SmallFox »

Примерно так:

Код: Выделить всё

--- abills/Abills/mysql/Auth.pm	2011-10-26 10:00:47.700901852 +0400
+++ std/abills/Abills/mysql/Auth.pm	2011-11-16 15:23:19.416328513 +0400
@@ -752,6 +752,21 @@
   $self->query($db, "UPDATE dv_main SET cid='$RAD->{CALLING_STATION_ID}'
      WHERE uid='$self->{UID}';", 'do');
  }
+ ### by SmallFox
+ elsif( $CONF->{MAC_AUTO_ASSIGN} && 
+    $self->{CID} eq '' && 
+    $RAD->{CALLING_STATION_ID} && 
+    $RAD->{CALLING_STATION_ID} =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ && $RAD->{CALLING_STATION_ID} !~ /\// 
+   ) {
+	   my $sid;
+	   if ($CONF->{NET_AUTO_ASSIGN}) {
+		   $sid=$RAD->{CALLING_STATION_ID}.'/24';
+		   
+		   }
+	   else {$sid=$RAD->{CALLING_STATION_ID};}
+  $self->query($db, "UPDATE dv_main SET cid='$sid' WHERE uid='$self->{UID}';", 'do');
+ }
+### SmallFox
 
 # SET ACCOUNT expire date
 if( $self->{ACCOUNT_AGE} > 0 && $self->{ACCOUNT_ACTIVATE} eq '0000-00-00') {
@@ -864,6 +879,22 @@
        }
       return 0 if ($counter eq '6');
      }
+
+     ### by SmallFox 192.168.101.2/24
+     elsif($TEMP_CID =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{2}/) {
+		$RAD->{CALLING_STATION_ID} =~ s/ //g;
+		my ($net_ip, $net_mask) = split(/\//, $TEMP_CID);
+		my ($ip1, $ip2, $ip3, $ip4) = split(/\./, $net_ip);
+		my $net_ip_raw = pack ('CCCC', $ip1, $ip2, $ip3, $ip4);
+		my $net_mask_raw = pack ('B32', (1 x $net_mask), (1 x (32 - $net_mask)));
+		($ip1, $ip2, $ip3, $ip4) = split(/\./, $RAD->{CALLING_STATION_ID});
+		my $some_ip_raw = pack ('CCCC', $ip1, $ip2, $ip3, $ip4);
+		if (($some_ip_raw & $net_mask_raw) eq ($net_ip_raw& $net_mask_raw)){
+			return 0;
+		}
+	}
+     ###    SmallFox 
+         
     # If like MPD CID
     # 192.168.101.2 / 00:0e:0c:4a:63:56 
     elsif($TEMP_CID =~ /\//) {


 в config.pl:
#Auto assigning MAC in first connect
$conf{MAC_AUTO_ASSIGN}=1;
$conf{NET_AUTO_ASSIGN}=1;   # kosta


Ответить