Не сбрасывает пользователей, если у них уже гостевой доступ.
Проверено на Abills 0.55 и NAS Mikrotik.
Примерно с 437 строки заменить на:
Код: Выделить всё
#Hangup users with negative deposit
if ( !$Ipn->{USERS_INFO}->{PAYMENT_TYPE}->{$uid}
&& defined($Ipn->{USERS_INFO}->{DEPOSIT}->{$uid})
&& $Ipn->{USERS_INFO}->{DEPOSIT}->{$uid} < 0)
{
#If session online hangup it
if ($session_id) {
require Log;
Log->import('log_add');
$Log = Log->new($db, \%conf);
$Log->{PRINT} = 1;
require Nas;
my $nas = Nas->new($db, \%conf);
my $NAS = $nas->info({NAS_ID => $NAS_IDS});
require "Abills/nas.pl";
require Admins;
Admins->import();
my $admin = Admins->new($db, \%conf);
$admin->info($conf{SYSTEM_ADMIN_ID}, { IP => '127.0.0.1' });
require Dv_Sessions;
my $sessions = Dv_Sessions->new($db, $admin, \%conf);
if ($admin->{errno}) {
print $admin->{errstr};
print $admin->{errno};
return;
}
my $online = $sessions->online({'FILTER_FIELD' => 'UID', FILTER => $uid, 'CLIENT_IP' => '_SHOW', 'USER_NAME' => '_SHOW', 'GUEST' => '_SHOW'});
#If user becomes a guest - don't hangup it
if ( !$online->[0]->{'guest'} ) {
hangup($NAS, '', $online->[0]->{'user_name'},
{ 'FRAMED_IP_ADDRESS' => $online->[0]->{'client_ip'},
'DEBUG' => $debug
}
);
}
}
}