Страница 1 из 1

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

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

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

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

Добавлено: Вт окт 11, 2011 6:12 am
~AsmodeuS~
можно указывать через запятую сиды или так не подходит ?

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

Добавлено: Вт окт 11, 2011 12:51 pm
ageNT_666
ну что через запятую это я знаю, но в некоторых случаях нужно именно пул.

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

Добавлено: Вт окт 11, 2011 1:46 pm
~AsmodeuS~
под заказ сделаем 60 $

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

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

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

Добавлено: Вт ноя 15, 2011 7:48 pm
~AsmodeuS~
никто не мешает на альтруизме сделать это, но как говорится говорить могут все

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

Добавлено: Ср ноя 16, 2011 11:28 am
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